Guida completa ai moduli ESP8266 e ESP32: utilizzo GPIO, programmazione e configurazione

Questo tutorial è interamente dedicato ai moduli ESP, che da qualche anno permettono ai Makers di trasformare i propri sogni in realtà, grazie alle loro features accompagnate da un costo irrisorio. potenza di calcolo e semplicità di utilizzo.

In poche parole: i migliori moduli wireless per la domotica e IoT DIY.

Se sei appassionato di domotica DIY e non sai di cosa sto parlando… Mi dispiace. Davvero.
Ma se leggerai questa pagina, sono sicuro che non te ne pentirai e saprai cosa fare.
Se invece sai di cosa sto parlando e ne sai più di me, mandami pure un messaggio con un paragrafo da aggiungere alla guida completa sui moduli ESP8266 e ESP32, ed avrai la mia gratitudine.

 

Senza indugi, chiunque tu sia, ti auguro una buona lettura.

 

Introduzione ai moduli

I moduli principali che tratteremo sono due, prodotti dall’azienda cinese Espressif Systems.
Hanno integrata connettività Wireless e permettono sia di essere interfacciati con altri microcontrollori che di essere programmati ed usufruire direttamente dei loro pin GPIO per sviluppare dei progetti più complessi.

Il primo modulo prodotto dalla Espressif è stato il modello ESP8266, basato su un SoC MCU a 32bit.
Inizialmente il modulo poteva essere gestito tramite seriale con dei comandi AT, ed utilizzato per collegare online praticamente qualsiasi sistema elettronico, compresi alcuni sistemi IoT low-cost.

Dopo non molto tempo furono sviluppati dei firmware incredibili, ai quali abbiamo dedicato un paragrafo di questo articolo.

Dopo pochi anni dall’uscita dell’ESP8266, vide la luce il suo successore: ESP32.

Venne proposto al mondo, ancora entusiasta del primo modello, un modulo con più pin GPIO con i quali sviluppare dei progetti più complessi senza dovere ricorrere ad un GPIO expander, o ad alcune espansioni.
La presenza nativa di connettività Bluetooth e BLE, sensori touch, maggiore potenza e memoria lo resero perfetto per alcune applicazioni in particolare.

 

Facciamo il punto della situazione, trattando un punto per volta.

Versioni dei moduli e caratteristiche

ESP8266

Il modulo Wireless ESP8266 è basato su un SoC MCU a 32bit, con una discreta capacità di elaborazione, grazie alla quale è possibile gestire diverse periferiche.

Si presta benissimo alla realizzazione di dispositivi compatti ed online è possibile trovare una grande mole di documenti, tra schede tecniche, progetti ed hacks.
Oltre a potere essere programmato come una vera e propria board di sviluppo, può essere utilizzato come adattatore Wireless-Seriale con un collegamento di tipo SPI/SDIO.
Risulta essere un’ottimo punto di partenza per applicazioni di network, grazie alla sua alta efficienza energetica con diverse modalità di setting.

Versioni disponibili

I moduli ESP8266 sono disponibili in diversi formati denominati da ESP-01 a ESP-12.
La principale differenza tra le varie versioni dei moduli riguarda il loro formato e la quantità di memoria flash, ma anche la distribuzione dei pin GPIO, che non in tutte le versioni sono resi tutti disponibili.

versioni moduli ESP8266

In alcuni modelli l’antenna è inclusa direttamente nel circuito stampato, ed in altri, come ad esempio la v. ESP-05, è necessario collegare un’antenna esterna.

Converrà scegliere una versione piuttosto che un’altra in base a quelle che sono le proprie necessità progettuali.

 

ESP32

esp32-wroom_module
ESP-WROOM32

A differenza dell’ESP8266, il modulo ESP32, è senza ombra di dubbio più prestante.

Ha dei pin GPIO multiuso in abbondanza, molti dei quali con sensori touch, più memoria, potenza di calcolo e la possibilità di lavorare in multi-tasking senza problemi.

Questo significa che possiamo utilizzarlo nei nostri progetti senza timore che qualcosa possa andare storto o che venga eseguito “troppo lentamente”.

 

 

ESP32-PICO-D4
Modulo ESP32-PICO-D4 – Disponibile anche versione con antenna incorporata

Esistono diversi moduli basati sull’ESP32, tra i quali risulta essere interessante la versione ESP32-PICO-D4, che combina un SoC ESP32 con una memoria flash da 4 MB, un oscillatore a cristallo, alcuni condensatori e un’antenna in appena 7 × 7 mm.

Le sue dimensioni ridotte lo rendono perfetto per applicazioni che richiedono la minimizzazione delle dimensioni senza dover rinunciare a prestazioni interessanti, versatilità e basso consumo energetico, rendendolo perfetto praticamente per qualsiasi sistema alimentato a batteria, wearable, apparecchiature mediche, IoT, etc….

 

Ecco le principali caratteristiche dei SoC messe a confronto, in questa tabella comparativa.

Specifiche
ESP8266
ESP32
MCU Xtensa Single-Core 32-bit L106 Xtensa Dual-Core 32-bit LX6 600 DMIPS
802.11 b/g/n Wi-Fi SI, HT20 SI, HT40
Bluetooth NO SI, Bluetooth 4.2 e BLE
Frequenza 80 MHz 160 MHz
SRAM 160 KB 512 KB
FLASH SPI Flash 16 MB SPI Flash 16 MB
GPIO 17 36
Hardware / Software PWM NO / 8 CANALI 1 / 16 CANALI
SPI / I2C / I2S / UART 2 / 1 / 2 / 2 4 / 2 / 2 / 2
ADC 10 bit 12 bit
Antenna NO 1
Interfaccia ethernet MAC NO 1
Sensore touch NO SI
Sensore di temperatura NO SI
Temperatura di funzionamento – 40°C – 125°C – 40°C – 125°C

 

Tutte le versioni di questi due moduli, possono essere integrati facilmente nei propri circuiti stampati personalizzati. Ad esempio, nella scheda Open BELIHA Protone è stato utilizzato il modello ESP32-S.

Datasheet ESP32-Wroom-32

 

Come Flashare e Programmare i moduli

I moduli ESP possono essere programmati in (almeno) due modi diversi:

  • In modo classico, utilizzando un convertitore USB – seriale TTL, meglio se incluso in una scheda che funga da adattatore per semplificare la procedura;
  • Tramite OTA, se si hanno delle esigenze particolari o semplice voglia di sperimentare.

Una terza opzione potrebbe essere quella di “leggere” il codice da una scheda SD, argomento che verrà affrontato un’altra volta.

Convertitore USB-Seriale TTL 3.3v

Quando tra le mani si ha una dev board che include nativamente un convertitore USB-seriale, programmare e alimentare la scheda sarà un gioco da ragazzi.
Questo perché basterà collegarla al computer, installare i driver del convertitore ed avviare il processo programmazione. Naturalmente non prima di avere settato i parametri corretti, trattati nel paragrafo Software.

Se sei alla ricerca della development board più adatta a te, sono sicuro che la troverai in questa pagina, dove vengono confrontante le migliori.

Se si ha a che fare con un modulo ESP nudo e crudo, senza che sia stato saldato su un circuito stampato, basterà perdere qualche minuto in più per non impelagarsi in situazioni strane e perdere e la voglia di vivere, utilizzando ad esempio una delle due soluzioni quì sotto:

esp8266 pcb adapter
Scheda adattatore per un modulo ESP
esp32 socket programmer
Scheda programmatore per un modulo ESP

NOTA BENE: I moduli ESP funzionano a 3.3V, quindi anche per la programmazione è indispensabile utilizzare un convertitore USB- SERIALE con la stessa logica di funzionamento.

Ipotizzando di voler programmare un modulo ESP32, basterà collegarlo ad un convertitore USB-seriale come nell’immagine seguente.

schema programmazione modulo ESP32

In modo analogo, per la programmazione di un modulo ESP-8266, i pin da utilizzare per la programmazione sono gli stessi.

Naturalmente si tratta soltanto di una configurazione di base, da utilizzare soltanto in fase di programmazione dei moduli e non per l’utilizzo in un circuito ordinario.

Se invece si è alla ricerca della configurazione ideale per l’utilizzo di un modulo ESP in un progetto, si può considerare questa pagina come un punto di partenza.

Fase di programmazione – accorgimenti hardware

Ogni volta che si vuole programmare un modulo, andrà avviato in modalità programmazione, tenendo premuto il pulsante FLASH/BOOT durante il riavvio/accensione.

Per evitare di premere manualmente il tasto BOOT, si può automatizzare l’operazione inserendo in parallelo tra il pin EN e GND un condensatore elettrolitico da 10uF.

Programmazione Software

I moduli ESP8266 e ESP32 possono essere programmati in molteplici linguaggi di programmazione, tra i quali troviamo:

  • Wiring (Attraverso l’IDE di Arduino);
  • LUA RTOS;
  • C;
  • MicroPython.

Programmazione in Wiring

logo Arduino

Tramite l’IDE ufficiale di Arduino è possibile compilare e caricare del codice sui moduli ESP8266 ed ESP32 in pochi e semplici passi, programmando come si stesse utilizzando una scheda Arduino, ma con qualche funzione in più.
Senza perderci in chiacchiere, per compilare e caricare correttamente il codice senza problemi bisogna effettuare alcuni passaggi, leggermente diversi in base a quale modulo o dev board che si desidera programmare.

ESP8266

Per poter programmare attraverso l’IDE di Arduino i moduli ESP8266 e le rispettive schede di sviluppo, bisogna aggiungere alle board supportate dell’IDE quelle basate sul modulo ESP8266.

Basta semplicemente aprire l’IDE di Arduino, cliccare su File > Impostazioni, e nella casella Additional Boards Manager URLs, inserire il seguente URL dal quale verranno aggiunte automaticamente le board di qui si ha bisogno:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Adesso cliccare su Strumenti > Scheda > Boards Manager e ricercare tramite il form di ricerca la parola chiave “esp8266”, individuare la voce “esp8266 by ESP8266 Community” e cliccare su installa.

Da adesso in poi è possibile programmare qualsiasi modulo ESP8266 e scheda associata, scrivendo il programma nell’IDE, collegare il modulo tramite un convertitore seriale come indicato in precedenza o la scheda di sviluppo tramite USB e prima di cliccare su “Carica” scegliere la board giusta e settare i parametri corretti nel caso in cui non siano standard.


In più nell’apposita sezione sono presenti moltissimi esempi per la programmazione e configurazione di questi moduli.

ESP32

Per quanto riguarda quest’altro modulo, bisogna operare in modo analogo, con la differenza che per aggiungere il core del modulo ESP32, l’url per le schede aggiuntive da aggiungere è il seguente:

https://dl.espressif.com/dl/package_esp32_index.json

In additional boards cercare “ESP32” ed installare il pacchetto corretto. 

Noterete sicuramente la presenza di molti più esempi per questo modulo rispetto a quello visto in precedenza, in quanto ha delle caratteristiche superiori che lo rendono adatto per un campo di applicazioni più vasto.
Ad esempio è prevista la configurazione ed utilizzo del bluetooth e BLE, l’utilizzo dei pin GPIO come sensori touch ed è inoltre supportata la connessione ad una rete di tipo enterprise.

OTA

wifi

I moduli ESP8266 e ESP32 supportano la programmazione OTA, cioè un metodo di programmazione con il quale è possibile programmare il modulo senza collegarlo fisicamente ad un computer, ma caricando il codice direttamente da web browser.
Si tratta di un’ottima funzione che può agevolare il proprio lavoro, ad esempio nel caso in cui non sia possibile accedere fisicamente al sistema Hardware.

Questa funzionalità va integrata via Software, ad ogni programmazione: per mantenerla sempre attiva, è importante che in ogni codice che si andrà a caricare, sia stata aggiunta una porzione di codice dedita a questa funzione.

 

Selezione dei migliori firmware e librerie per la domotica per moduli ESP32 ed ESP8266

Online è possibile trovare disponibili diversi Firmware, molti dei quali custom.
Qui di seguito eccone alcuni tra i quali è possibile scegliere.

FIRMWARE UFFICIALE

Il firmware ufficiale rilasciato da Espressif permette la comunicazione con il modulo attraverso dei comandi AT.
I comandi AT, sono delle particolari stringhe utilizzate per comunicare con diversi dispositivi elettronici, come ad esempio i vecchi Modem fonici.
Il modo più semplice per inviare dei comandi AT al modulo, è quello di collegarlo al PC attraverso un convertitore USBseriale ed inviare i comandi attraverso un monitor seriale.
Potrete trovare la lista dei comandi completi per la gestione dei moduli ESP nella documentazione ufficiale.

ALTRI FIRMWARE:

  • Official FreeRTOS firmware1.1k
  • Electodragon custom AT firmware732 (9600 baud with GPIO control)
  • NodeMCU789 (Lua firmware)
  • MicroPython640
  • Frankenstein533 (Das-Uboot style prompt)
  • NodeLua789 (Lua interpreter with web IDE)
  • ESP Easy
  • Espruino
  • MicroPython

 

Libreria Wifi-Manager

Fantastica libreria per la programmazione tramite l’IDE Arduino, valida sia per i moduli ESP8266 che gli ESP32.

Una volta che un progetto basato su un modulo ESP è stato completato sia nella parte Software che Hardware, non resta che installarlo dove si vuole.

Ma se è prevista la connessione ad una determinata rete Wi-Fi, non si può fare a meno di pensare almeno 2(00) volte che un giorno si potrebbe avere la necessità di cambiare i dati di accesso per la suddetta rete.

Quel giorno, sarà necessario interfacciare la scheda ad un computer e riprogrammarla, cambiando queste informazioni nel codice.

Ma se invece si agisce in modo intelligente utilizzando questa libreria, si potranno dormire dei sonni tranquilli.

Wifimanager moduli ESP immagine 1Wifimanager moduli ESP immagine 2

In sintesi, si tratta di una libreria che permette la gestione e configurazione della connettività con un’interfaccia user-friendly personalizzabile a piacere, e funziona così:

  • Ad ogni avvio, il modulo ESP proverà a connettersi ad un punto di accesso precedentemente salvato.
  • In caso contrario (o se non è stata ancora configurata alcuna rete), il modulo ESP entrerà in modalità Access Point, avviando un DNS e un WebServer raggiungibile ad un indirizzo IP predefinito.
  • Utilizzando qualsiasi dispositivo abilitato alla navigazione web su rete wifi, basterà collegarsi all’Access Point dell’ESP e da web browser collegarsi all’indirizzo del Web server.
  • Tramite il portale sarà possibile selezionare la rete alla quale collegarsi, scegliendola da una lista ed inserendo le credenziali.
  • Oltre ai dati della rete, è possibile inserire e salvare altre informazioni, come ad esempio i dati di accesso ad un server MQTT.

 

Prossimi aggiornamenti nella guida:

  • Utilizzo dei pin GPIO.
  • Guida alla programmazione con linguaggi di programmazione diversi (Software).
  • Differenze ed utilizzo dei firmware: guida all’utilizzo.
  • Sviluppo di una scheda DIY per un modulo ESP32

 

Questa pagina verrà costantemente aggiornata con le ultime novità e informazioni più dettagliate, perciò ogni tanto torna a farci visita e iscriviti alla nostra Newsletter per essere sempre il primo a sapere quando pubblichiamo qualcosa.

 

Contenuto
 [hide]

    Lascia un commento