Parte 1: Introduzione
Guida a puntate su ESP8266
Guida a puntate su ESP8266
Cosa ci fa una guida su un hardware (si ESP8266 è un hardware) che non è Raspberry Pi, su un sito dedicato al Raspberry Pi?
Bè, cominciate a leggere, e scoprirete che esistono molti più punti di contatto tra questi due oggetti, di quanto sospettavate. E sopratutto, non esiste (ancora) una documentazione chiara, completa e che parta da zero in italiano su questo oggetto, il che lo rende particolarmente ostico da affrontare per chi è alle prime armi con oggetti del genere.
L’innumerevole varietà di versioni hardware e gli svariati firmware differenti, fanno perdere per strada il novellino in una marea di tutorial e guide in inglese, contraddittorie e totalmente differenti tra loro.
E allora.. perchè non pensarci noi? Realizzeremo una serie di guide che ci porteranno a scoprire assieme questa piccola scheda, come programmarla, i vari firmware e gli usi pratici.
Ma di cosa stiamo parlando?
L’ ESP8266 si tratta si un SoC (System on Chip) prodotto dalla Cinese Espressif, contiene un microcontrollore, un modulo WiFi con stack TCP-IP completo. Sopratutto, ha un basso costo.
Ok, cosa è un microcontrollore?
Senza divagare troppo nel tecnico, possiamo dire che un microcontrollore (MCU), a differenza di un microprocessore (CPU) è meno raffinato, meno general purpose, più specializzato in un solo compito. Però questo consente di avere più componenti integrate (il processore, la memoria permanente, la memoria volatile e i canali di I/O), il che gli consente di funzionare con pochissimi (a volte nessun) componente esterno, mentre un microprocessore richiede una intera scheda madre e unità esterne, memorie, periferiche.
Nei microcontrollori il programma da eseguire viene memorizzato direttamente nella ROM, assieme al firmware. Quindi non è in grado (non necessita) di un sistema operativo, con i relativi vantaggi/svantaggi che questo comporta.
Tutto questo li rende molto economici quindi preferiti nelle applicazioni specifiche (calcolatrici, centraline di auto, modem, antifurti, elettrodomestici ecc ecc).
Storia
I microcontrollori esistono di ogni specie e versione, e fino a poco tempo fa non esisteva una configurazione standardizzata, e spesso i maker si creavano da soli la scheda con l’elettronica di contorno utile al loro funzionamento. Questo produceva un hardware diverso per ognuno. Proprio per questo nacque Arduino, che creava una scheda Open Hardware standard con microcontrollore Atmel, e fu un gran successo.
Poi nacque l’ESP8266, e il WiFi integrato è stata la sua arma vincente per distinguersi.
Vista proprio l’estrema economicità, produttori di terze parti hanno incominciato a commercializzare piccoli moduli che montavano ESP8266, ottenendo subito (verso il 2014) un grande successo presso le comunità dei maker.
E’ un SoC pensato per la produzione industriale (piccolo, i pin non hanno un passo standard, sono pensati per il montaggio SMD) quindi per usarlo a livello hobbystico più facilmente, è indispensabile averlo montato su una scheda con elettronica di contorno più o meno completa.
Versioni di ESP8266
Questo ha generato una marea di versioni in commercio differenti, di queste schedine.
Le varianti più diffuse sono quelle prodotte da AI-Thinker, nominate ESP-01 , ESP-02, fino a ESP-14, ma ne esistono diverse di altri produttori, più o meno equivalenti.
Si differenziano tra loro per le caratteristiche costruttive: il tipo di antenna del WiFi, la certificazione FCC o meno, la quantità di memoria, la presenza o meno di adattatori usb/seriali a bordo, il numero di Pin attivi.
I prezzi sono irrisori: se comprate in Cina si va da 1,5 Euro per ESP-01 alle 3 Euro scarse per la scheda di sviluppo più completa con ESP-12E, ma i tempi di consegna sono oltre il mese (più vicino ai 60 giorni); in Italia, fate più o meno il doppio dei prezzi, ma potete comprare da Amazon.
GPIO
Si, l’ESP2866 ha dei pin liberi, programmabili dall’utente finale. un vero e proprio GPIO, e qui cominciano a notarsi le somiglianze con Raspberry Pi. Su questi pin sono disponibili I2C, SPI, UART, diversi pin ingressi/uscite digitali programmabili, e un ingresso analogico con ADC a 10 bit.
Caratteristiche
- RISC CPU a 32-bit: Tensilica Xtensa LX106 funzionante a 80 MHz*
- 4Kb di memoria RAM per le istruzioni e 96Kb di memoria RAM per i dati
- stack TCP/IP e la possibilità di collegarsi alle reti wifi b/g/n
- supporto per un Flash RAM esterna da 512Kb a 4Mb a seconda della versione, in cui viene memorizzato il programma
- 16 GPIO (anche se non su tutti i moduli sono utilizzabili tutti e 16)
- UART / I2C / I2S/ SPI / 1 modulo ADC a 10bit
* su alcune versioni, overcloccate, la CPU può funzionare a 160Mhz e la Flash RAM a 80Mhz (invece di 40)
Confusi? Non è ancora finita: per ogni versione Hardware, è possibile montare svariate tipologie di firmware completamente differenti, che cambiano in toto il modo in cui viene gestita la scheda e il linguaggio che useremo per comunicare con essa o per programmarla:
Firmware
Infatti, oltre al firmware di fabbrica di Espressif che utilizza i comandi AT per comunicare con il chip, sono stati sviluppati altri firmware alternativi che permettono di sfruttare molto meglio le potenzialità di questo piccolo gioiello tecnologico:
Eccone alcuni, tra quelli Open Source:
- NodeMCU: firmware basato sul linguaggio Lua
- Arduino: firmware basato su C++. permette di programmare l’ESP8266 e la componente WiFi come fossero un Arduino. Disponibile su GitHub.
- MicroPython: un port di MicroPython (una versione di Python per microcontrollori).
- ESP8266 BASIC: un Basic Open Source adattato per l’IoT (Internet of Things).
- Zbasic for ESP8266: Un sottoinsieme del diffuso Visual basic 6 di Microsoft, adattato a linguaggio per i microcontrollori della serie ZX e per l’ESP8266.
- Mongoose Firmware: un firmware open source con servizio cloud gratuito
- Open RTOS
ok, ma alla fine, che ci faccio?
L’ESP8266 può essere utilizzato in almeno in due modalità principali: come scheda a sé stante, o come accessorio per il nostro Raspberry.
Vediamo prima quest’ultima: può essere configurato per fare da bridge USB/seriale – Wifi, per trasformare le connessioni seriali o USB in connessioni Wifi senza fili in modo da far acquisire la funzionalità wireless a qualche dispositivo che già usate con Raspberry Pi (controller, centraline varie, apparecchiature industriali..). Oppure è perfetto per raccogliere i dati di diversi sensori e trasferirli via Wifi al Raspberry, o viceversa fare da Hub wireless per diversi attuatori (relè, motori..).
Uso “stand-alone”: avete sviluppato e ottimizato il vostro progetto di physical computing con Raspberry? Bene, perchè sprecare così il Raspberry Pi? Probabilmente, nella maggior parte dei casi, quel compito lo può svolgere anche ESP8266, basterà adattare il vostro programma, e con Python potrebbe essere anche meno complicato che portare pace e armonia nel mondo.
Implementazioni quali quelle che leggono sensori, comandano relè e LED, ma anche che pilotano display o gestiscono interfacce web, possono tranquillamente essere portate su ESP2866, con evidente risparmio di denaro e con una realizzazione meno delicata e più adatta all’ uso embedded (non c’è la SD, il programma andrà a risiedere nella ROM) e più compatta.
Le dimensioni assai contenute e la capacità di connettersi via WiFi, rendono questa scheda perfetta per le applicazioni di domotica: facile da integrare negli impianti esistenti essendo poco ingombrante e non richiedendo cablaggi per la rete ethernet cablata. Per gli stessi motivi, è perfetta anche per le applicazioni nel campo dell’IoT (Internet of Things). Inoltre, è possibile comandarla via smartphone con apposite app.
Come vedete, la carne al fuoco è davvero tanta.
Fermi! Non correte subito a comprarne un esemplare, invogliati dal prezzo allettante!
Nella prossima puntata, vedremo le versioni hardware più diffuse, come farle funzionare, e qualche suggerimento su quale modello scegliere per cominciare a sperimentare subito questo nuovo mondo.
Seguiteci!