I moduli wireless ESP8266 e ESP32 continuano a essere i protagonisti nella scena dell’Home Automation e dell’IoT DIY. Progettati da Espressif Systems, questi moduli offrono connettività Wi-Fi integrata, facili interfacciamenti con microcontrollori e versatilità attraverso i loro pin GPIO, rendendoli l’opzione ideale per sviluppare soluzioni IoT personalizzate.
In questo articolo vedremo esattamente di cosa stiamo parlando, quali sono le potenzialità di questi moduli e tutto quello che bisogna sapere sulle dev boards per riuscire a sfruttarle al meglio.
Inizio della rivoluzione: ESP8266
La storia comincia con l’uscita del modulo Wireless ESP8266, basato su un SoC MCU a 32bit; nato per aggiungere connettività Wireless ai sistemi elettronici e per la progettazione di sistemi IoT low-cost.
Questo modulo, ha una potente capacità di elaborazione, grazie alla quale è possibile collegare, attraverso i suoi pin GPIO, diverse periferiche tra le quali dei sensori ed altri dispositivi compatibili. Inoltre, le sue ridotte dimensioni e la mole di documentazione presente online rendono meno ostico il suo utilizzo e perfetto per essere utilizzato per la realizzazione di dispositivi compatti.
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.
Visto la possibilità di poter personalizzare sia la parte che concerne il software che l’hardware, è un modulo dai mille utilizzi, risultando ottimo per le applicazioni di network grazie alla sua alta efficienza energetica con la possibilità di settare tre modalità: modalità attiva, modalità sleep e modalità deep sleep.
Quando il modulo riduce al minimo le sue funzioni disattivando quelle non essenziali, arriva a consumare poco meno di 12uA.
Versioni disponibili
I moduli ESP8266 sono disponibili in diversi formati denominati da ESP-01 a ESP-12.
Come è possibile dedurre dall’immagine seguente, la differenza principale tra questi moduli è il formato e la distribuzione dei pin GPIO, che in alcune versioni sono stati messi tutti a disposizione mentre in altre è possibile usufruire di alcuni soltanto.
Nella maggior parte di questi, l’antenna è inclusa direttamente nel circuito stampato, ma ad esempio nella versione 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.
Aggiornamento sul Modulo ESP8266
Il modulo ESP8266, originariamente rilasciato come un sistema su un chip (SoC) MCU a 32 bit, continua a essere una risorsa preziosa per i progetti IoT a basso costo. Nonostante le sue dimensioni ridotte, l’ESP8266 ha una capacità di elaborazione potente, con la capacità di collegare diverse periferiche attraverso i suoi pin GPIO. Con diverse varianti disponibili (da ESP-01 a ESP-12), c’è un’opzione per quasi ogni necessità di progetto. Non dimentichiamo anche la sua eccellente efficienza energetica, con modalità di risparmio energetico come modalità attiva, sleep e deep sleep.
Evoluzione in ESP32
Dopo qualche anno dall’uscita dell’ESP8266, vide la luce il suo successore: ESP32.
L’ESP32 porta con sé numerosi miglioramenti rispetto al suo predecessore. Infatti, questo modulo dalle mille applicazioni dispone di ben 36 pin GPIO programmabili e configurabili per supportare vari tipi di interfacce di comunicazione. Alcuni di questi pin sono capacitivi, il che significa che possono essere utilizzati per creare interfacce touch senza la necessità di componenti aggiuntivi.
In termini di capacità di memoria, l’ESP32 ha 520 KB di SRAM e supporta fino a 16 MB di memoria flash esterna. Questa grande quantità di memoria consente di eseguire programmi più grandi e complessi rispetto ad altri microcontrollori.
L’ESP32 ha anche il supporto per il Bluetooth 4.2 e il Bluetooth Low Energy (BLE), il che lo rende ideale per le applicazioni che richiedono la comunicazione wireless a corto raggio.
Versioni disponibili
A differenza dell’ESP8266, la casa madre ha creato un’unica versione del modulo ESP32, che può essere integrato facilmente in circuiti stampati personalizzati, ma per utilizzarlo su una scheda millefori sarà necessario utilizzare un adattatore che permetta di saldarlo su contatti con passo 2.54mm.
Confronto tra i due moduli
Nella tabella seguente, sono messe a confronto le specifiche tecniche di entrambi i SoC
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 |
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 |
Schede di sviluppo
Sia per i moduli ESP8266 che ESP32, nel tempo sono state realizzate e commercializzate molte schede di sviluppo grazie alle quali, approcciarsi al loro funzionamento e realizzare i propri progetti risulta essere meno ostico.
La maggior parte di queste schede di sviluppo permettono infatti di essere programmate ed utilizzate con una semplicità disarmante, visto che montano uno stabilizzatore di tensione che permette la corretta alimentazione dei moduli e, dove presenti, il convertitore USB-seriale e i tasti RESET e FLASH semplificano la fase di programmazione.
A meno che non si necessiti di realizzare un circuito stampato personalizzato sul quale andare a saldare un modulo ESP, scegliere una buona scheda di sviluppo permetterà sicuramente di velocizzare la fase di prototipazione.
Tra le DEV board più conosciute e rilevanti abbiamo le seguenti.
Adafruit Feather HUZZAH ESP8266
Se si è alla ricerca di una dev Board che oltre ad essere stata prodotta con dei componenti hardware di buona qualità sia anche compatta, non si può che scegliere la Adafruit HUZZAH ESP8266 breakout.
Adafruit Feather HUZZAH ESP8266 è una scheda di sviluppo basata su un modulo ESP8266 facente parte di una linea completa di schede di sviluppo stand-alone impilabili.
Le schede Feather possono essere alimentate direttamente tramite delle batterie lipo e di conseguenza essere utilizzate per la realizzazione di progetti che necessitano di un’alimentazione esterna, come ad esempio dei data logger o dispositivi potatili.
Sulla scheda è incluso un connettore per batterie ai polimeri di litio da 3,7 V ed un connettore micro USB tramite il quale, oltre ad alimentare la scheda è possibile ricaricare la batteria e collegarla al computer per l’upload del codice.
LinkNode R8
LinkNode R8 è una board programmabile che monta a bordo il modulo ESP-12f ed otto relè che è possibile gestire da remoto.
I relè supportano un carico massimo di 10 A ciascuno e possono essere controllati via software per controllare lo stato dei dispositivi collegati.
L’interfaccia WiFi, tramite un’applicazione, consente di associare la scheda alla propria rete WiFi e di scambiare informazioni.
NodeMCU DevKit
NodeMCU non si riferisce direttamente al nome della scheda, ma fa riferimento al firmware che che è già precaricato sul modulo ESP8266.
Tramite NodeMCU DevKit è possibile programmare utilizzando direttamente il linguaggio LUA collegando la board al computer tramite un cavetto micro USB.
Questa scheda di sviluppo è possibile trovarla a basso costo in molti store Cinesi e su Amazon.
Adafruit HUZZAH32 ESP32 WiFi
Board molto simile ad una di quelle viste in precedenza, ma monta un modulo ESP32 anziché un ESP8266.
Anche questa serie di board possono essere alimentate direttamente tramite delle batterie lipo e di conseguenza essere utilizzate per la realizzazione di progetti portatili.
La presenza maggiore di pin GPIO permette di sviluppare dei progetti più variegati, mentre la maggiore potenza di calcolo e memoria possono essere impiegati per svolgere operazioni più impegnative.
Prima di potere utilizzare qualsiasi scheda di sviluppo, è indispensabile eseguire l’installazione dei driver del convertitore USB/seriale saldato sulla dev board che si è scelto di utilizzare.
Se volete approfondire l’argomento DEV boards, vi consiglio di leggere questo articolo nel quale ne vengono confrontate alcune.
Programmazione
I moduli ESP8266 e ESP32 possono essere programmati in diversi linguaggi di programmazione, tra i quali:
- Wiring (Attraverso l’IDE di Arduino)
- LUA
- C
Programmazione in wiring
La buona notizia per gli amanti di Arduino, è che è possibile utilizzare il suo IDE per compilare ed eseguire il caricamento del codice sui moduli ESP8266 ed ESP32.
Per farlo, basterà seguire pochi e semplici passaggi.
Programmazione modulo ESP8266 con Arduino IDE
Per quanto riguarda i moduli ESP8266, per poterli programmare attraverso l’IDE di Arduino, è necessario aggiungere alle board supportate dell’IDE tutte quelle basate sul modulo ESP8266.
Quindi apriamo l’IDE di Arduino, clicchiamo su File > Impostazioni, e nella casella Additional Boards Manager URLs, inseriamo il seguente indirizzo dal quale verranno aggiunte automaticamente le board di qui avremo bisogno:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Dopodiché per installare le boards, apriamo Strumenti > Scheda > Boards Manager e clicchiamo su installa nella voce esp8266 by ESP8266 Community.
Per eseguire il caricamento di un codice su un ESP8266, adesso basterà aprire l’IDE di Arduino, scrivere il nostro programma e prima di cliccare su “Carica” scegliere la board giusta.
Programmazione modulo ESP32 con Arduino IDE
Per quanto riguarda quest’altro modulo, la configurazione va effettuata in modo diverso rispetto alla procedura vista in precedenza.
Per aggiungere la compatibilità dei moduli ESP32 sull’IDE di Arduino, prima di tutto bisogna scaricare la suit esp32-arduino presente su Github a questo indirizzo e copiarla nella cartella degli Sketch Arduino nel seguente percorso che creeremo appositamente:
hardware/espressif/esp32
Per compilare il codice da caricare su un modulo ESP32, è necessario installare il compilatore Xtensa GNU.
Per gli utenti Windows, questa operazione è eseguibile aprendo semplicemente il file eseguibile get.exe già presente nella cartella esp32/tools.
Gli utenti MAC e Linux, per installare questo tool, dovranno invece navigare attraverso il terminale fino alla cartella esp32/tools ed eseguire il seguente comando:
python get.py
Lo script python get.py, scaricherà automaticamente gli strumenti del compilatore Xtensa e il kit di sviluppo del software ESP32 e li inserirà nel percorso corretto in pochi minuti.
Firmware disponibili
Online è possibile trovare disponibili diversi Firmware, alcuni dei quali sono stati specificatamente sviluppati per una determinata applicazione.
Ci sono vari firmware disponibili online per questi moduli, tra cui firmware ufficiale, firmware custom e firmware open-source come NodeMCU e MicroPython. Inoltre, è possibile programmare i moduli ESP8266 e ESP32 in diversi linguaggi di programmazione, tra cui Wiring (attraverso l’IDE di Arduino), LUA e C.
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
Tra questi, uno che risulta essere particolarmente interessante oltre a NodeMCU, è il firmware ESP Easy che permette la gestione dei moduli attraverso un’interfaccia Web rendendo più semplice l’interfacciamento dei moduli ESP con dei componenti hardware, come ad esempio dei sensori ambientali e dei GPIO expander.
Inoltre tramite ESP Easy è possibile eseguire il collegamento con altre piattaforme, come OpenHAB, attraverso diversi protocolli di comunicazione.
Conclusione
Quest’articolo che hai appena letto è stato scritto con l’intento di creare un punto di riferimento per tutti coloro che, venuti conoscenza di questi due fantastici moduli dai mille utilizzi, hanno deciso di sperimentare ed incamminarsi verso la realizzazione di dispositivi connessi in rete.
Non si tratta di un articolo statico, ma verrà aggiornato ed arricchito nel tempo.
Bibliografia immagini
http://www.pighixxx.com/test/portfolio-items/esp32-processor/
https://cdn-learn.adafruit.com/guides/images/000/001/007/medium800/qt.jpg?1448302153
https://cdn-learn.adafruit.com/guides/images/000/001/170/medium800/smalldemo.jpg?1448482000
http://www.linksprite.com/wiki/images/thumb/a/ae/LinkNode_R8-5.jpg/640px-LinkNode_R8-5.jpg
https://cdn-shop.adafruit.com/970x728/3405-06.jpg