Primi test con ESP8266 la nuova Wi-Fi Low-Cost dell’Internet delle cose

Il modulo ESP8266 in configurazione ESP-01

Fino alla scorsa estate, uno dei problemi principali che assillavano gli appassionati dell'Internet delle cose, era quello di come far comunicare il proprio oggetto in rete. La questione riguardava più o meno tutti i microcontrollori, che infatti, fino ad oggi, venivano collegati a dei gateway – come un Router Wi-Fi su cui veniva installato un firmware alternativo come OpenWRT – mediante dei moduli ricetrasmittenti operanti spesso sui 433MHz. Anche il mondo Arduino, pure oggetto di innumerevoli espansioni, faticava a trovare una soluzione tecnicamente credibile ed economicamente sostenibile. Non solo l'ESP8266, prodotto dalla cinese Espressif e venduto su basetta a meno di 5 USD, ha cambiato drasticamente questo scenario, ma addirittura si è candidato a stravolgerlo completamente, in prospettiva diventando al tempo stesso sia un nodo elementare che il gateway di un sistema di controllo wireless. Oltre alle specifiche del prodotto, in questo articolo vedremo come collegarlo ad Arduino con relativo codice sorgente.

Il problema derivava dal fatto che, al di là dell'interfaccia radio, l'insieme delle componenti necessarie a far funzionare il Wi-Fi – stack TCP/IP, gestione del segnale, sicurezza WEP/WPA – è decisamente troppo complesso per essere implementato via software su un microcontrollore ad 8 o 16 bit. Sempre in ambito Arduino, fu così presa la decisione un po' estrema di integrare sulla stessa scheda, accanto al tradizionale Atmel a 8 bit, un vero e proprio System-On-a-Chip su architettura MIPS, che non solo gestisse il Wi-Fi, ma che potesse addirittura far girare un sistema Linux, ancorché embrionale. Nacque così la Arduino Yùn, che però, con il suo costo elevato e le sue funzionalità estese, apparve subito inadatta a ricoprire il ruolo di nodo, puntando invece a quello di gateway domestico. Le alternative erano poche e comunque dispendiose e scomode, trattandosi di moduli separati che andavano spesso configurati separatamente e poi alimentati e collegati alla porta seriale delle schede. Qualcun altro, come Texas Instruments, prese una strada un po' diversa e meno radicale: far gestire le funzionalità Wi-Fi a un core ARM M dedicato e programmato con un firmware apposito – ma senza sistema operativo – realizzando così un modulo aggiuntivo che potesse essere accoppiato con un altro microcontrollore a 16 o a 32 bit.

Cos'è l'ESP8266

L'ESP8266 è anch'esso un System-On-a-Chip a 32 bit, prodotto da Espressif, che incorpora nativamente le funzionalità WI-Fi – inclusa la gestione intelligente dell'interfaccia radio – ma che rende disponibili anche una serie di risorse e di periferiche che gli permettono di assolvere pure i compiti di un comune microcontrollore, da usare seguendo tre ben distinte modalità operative:

1) un suo primo utilizzo come mero modulo di comunicazione WI-FI, collegabile alla porta seriale di un microcontrollore qualsiasi, da comandare per mezzo di comandi AT che vengono invocati dall'MCU esterno. Ciò è reso possibile dal caricamento di un firmware apposito, che rimane residente nell'ESP8266;

2) può essere usato come microcontrollore autonomo abilitato al WI-FI, programmabile in modo interattivo e immediato mediante il linguaggio di scripting / interpretato Lua (il Python del mondo embedded). E' infatti disponibile un interprete Lua per ESP8266 e anche un semplice IDE ad esso dedicato, di complessità e con funzionalità intermedie fra l'IDE di Arduino e quelli basati su Eclipse o Visual Studio. Lua, tanto per fare un esempio, è comunemente utilizzato in ambito OpenWrt e, in pratica, in questa modalità, l'ESP8266 diventa una Yùn da 5-10 USD, a seconda della piedinatura della scheda;

3) infine può essere utilizzato sempre come MCU autonomo abilitato al WI-FI, ma programmabile in modo tradizionale in C/C++. Esso infatti supporta una toolchain completa basata su GCC e integrata in Eclipse, di cui - per ora - manca solo un supporto concreto al debugging, per il quale si brancola ancora nel buio.

In questo articolo ci occuperemo specificamente della prima modalità, usando l'ESP8266 come una sorta di interfaccia da seriale a Wi-Fi, con la particolarità davvero interessante che esso si può configurare non solo come client, ma anche come access point wireless, o persino come entrambe le cose allo stesso tempo, in modalità bridge tra due reti. Come ciliegina sulla torta, per chi utilizza prevalentemente Arduino e il suo linguaggio semplificato, vi è la presenza di una serie di librerie – al momento non ufficiali – che rendono l'accesso a Internet dall'interno di uno sketch un gioco da ragazzi. A tutti coloro che magari preferiscono programmare i propri microcontrollori preferiti in C/C++ o addirittura in Assembly, posso già anticipare che il tutto è ugualmente riconducibile al banale utilizzo di semplici comandi AT sulla porta seriale.

Schema del modulo ESP8266 ESP-01

Lo schema dei Pind dell'ESP8266 in configurazione ESP-01

Lo schema dei pin dell'ESP8266 in configurazione ESP-01

 

In questo articolo, poiché ci soffermeremo esclusivamente sulla prima modalità, utilizzeremo l'ESP8266, montato sulla scheda più semplice ed economica e con l'antenna stampata, la cosiddetta ESP-01. In questa configurazione, dei molti piedini disponibili sul chip, ne sono resi disponibili all'utente solo otto: due pin per la comunicazione seriale con il core, due GPIO (che non useremo), due pin di controllo per la [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3199 parole ed è riservato agli abbonati PLATINUM. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici MAKER e PLATINUM e potrai fare il download (PDF) di tutti gli EOS-Book, Firmware e degli speciali MONOTEMATICI. ABBONATI ORA, è semplice e sicuro.

Abbonati alle riviste di elettronica

25 Commenti

  1. Ernesto Sorrentino 7 maggio 2015
  2. StefanoDS StefanoDS 7 maggio 2015
  3. zordanmanuel 8 maggio 2015
    • StefanoDS StefanoDS 8 maggio 2015
      • zordanmanuel 8 maggio 2015
      • doc62 16 maggio 2015
      • Dan.Ilo 24 agosto 2016
        • StefanoDS StefanoDS 29 agosto 2016
  4. scs964 8 maggio 2015
    • StefanoDS StefanoDS 8 maggio 2015
  5. FraMor79 FraMor79 8 maggio 2015
    • StefanoDS StefanoDS 8 maggio 2015
  6. FraMor79 FraMor79 8 maggio 2015
  7. Emanuele Bonanni Emanuele 8 maggio 2015
  8. StefanoDS StefanoDS 8 maggio 2015
  9. StefanoDS StefanoDS 8 maggio 2015
  10. StefanoDS StefanoDS 8 maggio 2015
  11. willygroup willygroup 12 maggio 2015
  12. Stefano Cominini 27 luglio 2016
  13. StefanoDS StefanoDS 27 luglio 2016
    • Stefano Cominini 28 luglio 2016
  14. mellifugo 7 ottobre 2016
    • StefanoDS StefanoDS 5 luglio 2017
  15. Linux Linux 4 luglio 2017
    • StefanoDS StefanoDS 5 luglio 2017

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *