guida moduli esp8266 esp32

Quando si parla Home Automation e IoT DIY, non possono non venire in mente i moduli ESP8266 e ESP32, che negli ultimi anni hanno permesso a milioni di persone di realizzare dei dispositivi di grande successo.
Per chi non lo sapesse, si tratta di due moduli prodotti dall’azienda cinese Espressif Systems, con Wi-Fi integrato e possibilità di interfacciarli con altri microcontrollori e di usufruire direttamente dei loro pin GPIO per sviluppare dei sistemi personalizzati.
Per semplificare la fase di programmazione e sperimentazione, sono presenti in commercio alcune board di sviluppo tramite le quali è possibile trovare la configurazione che più ci aggradi e raggiungere il proprio obbiettivo progettuale.
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.

 

Evoluzione in ESP32

Dopo qualche anno dall’uscita dell’ESP8266, dopo una lunga fase di test vide la luce il suo successore: ESP32.
L’evoluzione più interessante sta nel fatto che sono presenti più pin GPIO con i quali sviluppare dei progetti più complessi senza dovere ricorrere ad un GPIO expander come ad esempio il MCP23017, la presenza di connettività Bluetooth, sensore touch e maggiore memoria.

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
MCUXtensa Single-Core 32-bit L106Xtensa Dual-Core 32-bit LX6 600 DMIPS
802.11 b/g/n Wi-FiSI, HT20SI, HT40
BluetoothNOSI, Bluetooth 4.2
Frequenza80 MHz160 MHz
SRAM160 KB512 KB
FLASHSPI Flash 16 MBSPI Flash 16 MB
GPIO1736
Hardware / Software PWMNO / 8 CANALI1 / 16 CANALI
SPI / I2C / I2S / UART 2 / 1 / 2 / 24 / 2 / 2 / 2
ADC10 bit12 bit
AntennaNO1
Interfaccia ethernet MACNO1
Sensore touchNOSI
Sensore di temperaturaNOSI
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 HUZZAH ESP8266 breakout

adafruit esp8266 breakout

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.
Consumi e dimensioni ridotti al minimo per poter essere integrata anche in dei progetti finiti che non necessitano di essere modificati nel tempo.
Per programmare questa board, è necessario utilizzare un convertitore USB/seriale esterno.

Scheda tecnica

Adafruit Feather HUZZAH ESP8266

adafruit huzzah

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 ed eseguire il caricamento del codice.

Scheda tecnica

LinkNode R8

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.

Scheda tecnica

NodeMCU DevKit

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 è una board che è possibile trovare a basso costo in molti store Cinesi e su Amazon.

Adafruit HUZZAH32 ESP32 WiFi

esp32 dev

Board molto simile ad una di quelle viste in precedenza, ma la presente 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.

Scheda tecnica

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.

Firmware disponibili

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
espEasy

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.

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.
Prima di arrivare a questo passaggio, è necessario settare alcuni parametri che ci permetteranno di compilare correttamente il codice per caricarlo senza problemi.

ESP8266

Per quanto riguarda i moduli ESP8266, per poterli programmare attraverso l’IDE di Arduino, prima di tutto quello che bisogna fare è 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.
Bisogna tenere a mente che a differenza di quando programmiamo una board Arduino, per indicare il pin che vogliamo utilizzare nello sketch, dobbiamo scrivere esattamente quello che generalmente è riportato sulla serigrafia della DEV board (ad esempio D0, D1, D2, A0, etc.), o nella documentazione del modulo.

ESP32

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.

Curiosità

Alcuni utenti del Web hanno scoperto che alcuni moduli ESP8266 ed ESP32 sono stati utilizzati per la realizzazione di
prodotti commerciali, come ad esempio questo.

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
Ivan Scordato