This is an old revision of the document!
La famiglia di processori ESP32
La famiglia di processori scelta per la nostra sperimentazione è la ESP32 della espressif: si tratta di un ineme di processori con diverse caratteristiche HW ma che condividono grossolanamente gli stessi tipi di funzionaòità anche se con caratteristiche diverse in termini di potenza di calcolo, numero di pin di I/O disponibili , dimensione delle memorie RAM e flash entrocontenuta e per tipo di architettura interna dei vari mebri della famiglia.
Tutti processori supportano il sistema operativo FreeRTOS il che consente di far girare uno stesso pacchetto SW quasi in maniea identica su tutti i membri della famiglia.
Tutti i membri della famiglia integrano una funzione di radio WiFi/Bluetooth a 2.4 GHz utilissima per una agevole interfacciamento verso terminali mobili ( ad es. smartphones).
Finora i membri della famiglia utilizzati sono stati i seguenti : ESP32 standard, ESP32-S3 ed ESP32-C3
I primi due processori sono dei dual core mentre il terzo è un single core con tecnologia a bassissimo consumo energetico.
A seguire riporto alcuni puntatori alla documentazione ufficiale di questi dispositivi e al sietama operativo FreeRTOS :
Tutti i processori della famiglia ESP32 vengono resi disponibili in diversi modi allo scopo di rendere il più agevole possibile l'inserimento di questi processori in applicazioni customizzate; oltre ai chip nudi che contengono il solo processore, vengono resi disponibili dei moduli ibridi che contengono oltre al pocessore una certa quantità di memoria flash aggiuntiva o anche sotto forma di DevKits ( development kits) che includono in genere oltre ad un modulo ibrido in una certa configurazione anche della circuiteria aggiuntiva per agevolare l'utilizzo del processore con un minimo di circuiteria aggiuntiva e fornendo dei moduli preassemblati con pinnatura standard a 2.54 mm facilmente montabile su basette bredboard o su schede madri a limitatissima complessità.
Nel nostro caso utilizziamo solo dispositivi tipo DevKits proprio allo scopo di semplificare al massimo le nostre schede PCB evitando inutili criticità circuitali e minimizzando la probabibilità di errori HW oltre che minimizzando il costo di realizzazione delle nostre schede.
Questo approccio è ovviamente subottimale dal punto di vista delle dimensioni fisiche dei nostri circuiti ma è totalmente in linea con delle realizzazioni che si definiscono esplicitamente di test e sperimentazione e non hanno nessuna pretesa di sostituirsi a prodotti industrializzati per una produzione massiva.
A seguire riportiamo a scopo di esempio le foto rappresentative della pinnatura dei tre DevKits che usiamo allo stato nelle nostre realizzazioni.
- ESP32 standard
- ESP32-S3
- ESP32-C3 superMini
Tutti i moduli processore che utilizziamo sono alimentabili a 5V e sono dotati di un connettore USB-C che può essere utilizzato sia per alimentare il modulo qualora sia utilizzato da solo, e in ogni caso come interfaccia Seriale-su-USB per scopi di caricamento del SW e di monitoraggio e debug sfruttando nel primo caso un apposito tool di caricamento del SW, e nel secondo caso un qualsiasi terminale in grado di usare la modalità seriale-su-usb per consentire di attaccare un emulatore di terminale al processore.
Il tool di caricamento del SW è reperibile al seguente URL:
Al puntatore indicato sono anche reperibili le informazioni per l'utilizzo del tool. In ambiente Linux è anche disponibile un tool analogo al seguente indirizzo:
Esistono svariati emulatori di terminale anche open-source utilizzabili: un classico e putty.exe disponibile su qualsiasi piattaforma PC. Volendo è anche disponibile una applicazione WEB-Based che consente di interagire con i processori via seriale-usb sfruttando un qualsiasi browser web; un esempio è il seguente: https://webserial.sarimesh.net/.
Recentemente è stata anche creata una versione del tool di caricamento del FW non richiede più di scaricare ed installare un applicativo locale sul PC usato per il caricamento fisico del SW sui moduli della famiglia ESP32, ma che sfrutta la tecnologia “WebSerial” resa disponibile dai browsers basati su Chrome e che permette di interagire da browser con un target attestato sul PC tramite interfaccia seriale ( eventualmente mediata da collegamento USB); il tool è reso disponibile liberamente su github e può essere sia sfruttao collegandosi direttamente al sito esspressif demo ( accessibile in https://espressif.github.io/esptool-js/ ), sia installato localmente o su una piattaforma ad hoc in modo da essere “integrato” con altri applicativi.
A supporto della nostra sperimentazione abbiamo creato, nell'ambito del sito https://sarimesh.net, un pagina ad hoc da cui è possibile utilizzare questo tool per effettuare tutte le azioni normalmente richieste per interagire e settare una piattaforma LoRa Sarimesh ; in particolare abbiamo:
- sito di Supporto LoRa Sarimesh: https://webserial.sarimesh.net/
- funzioni disponibili:
- WebFlasher per caricamento immagini SW via collegamento USB/seriale ai targets
- WebConsole per interazione via console seriale con un target collegato via USB/serial
- links diretti alla documentazione online del SW LoRa Sarimesh
Questi tools consentono di effettuare tutte le operazioni di setup iniziale e di debrik di una scheda LoRa ESP32-based senza richiedere l'installazione di nessun tool aggiuntivo. Ovviamente richiedono di collegarsi fisicamente con il target via cavetto USB/seriale.
Per una interazione remota con dispositivi non raggiungibili fisicamente tramite USB/seriale è possibile effettuare tutte le operazioni equivalenti sfruttando la interfaccia di gestione web tramite GUI, e tramite collegamento in telnet, sfruttando eventualmente la funzionalità di VPN Wireguard integrata nel SW LoRa Sarimesh per interagire con i dispositivi tramite tunnelling IP su internet.
L'opertatività remota è quasi completa con la sola esclusione delle funzioni di caricamento di una immagine SW che , per l'architettura del SW di base espressif del ESP32, consente il caricamento di sole immagini cosiddette OTA (Over-The-Air ovvero non consente di effettuare un re-partitioning della memoria flash ovvero cambi alle altre partizioni della stessa).
Accanto alla interfaccia di gestione web tramite GUI, è anche disponibile una interfaccia di gestione di tipo CLI (Command Line Interface) ovvero a comandi su interfaccia seriale/telnet che consente di effettuare operazioni aggiuntive rispetto alla interfaccia GUI o di accedere a speciali features del SW.
Riguardo al sistema operativo FreeRTOS è reperibile su internet una ampia documentazione come pure numerosi tutorials. Di seguto si riportano alcuni links veloci relativi a tale SW:


