Iot – Iniziare con Espruino e ESP8266
Come molti sapranno, sul mercato c’è tutto un range di schede di sviluppo basate su ESP8266. Ognuna con forma, dimensione, costo e numero di GPIO differenti.
Le ESP8266 possono essere programmate usando Lua (con firmware NodeMCU), usando C++ (Se utilizziamo l’IDE di Arduino per ESP8266) oppure in Javascript se usiamo il firmware Espruino.
Espruino è un interprete Javascript open source, pensato per girare sui microcontrollori. Soltanto lo scorso mese, il team di Espruino ha aggiunto il supporto all’ESP8266, permettendo così di scrivere applicativi in Javascript da far girare direttamente sull’ESP8266.
Mostriamo ora i passi necessari per flashare il firmware Espruino su ESP8266 ed eseguire il primo script di prova.
Flashare Espruino su ESP8266
I file che compongono il firmware sono 2 e possono essere scaricati da GitHub: https://github.com/espruino/EspruinoBuilds/tree/master/ESP8266
Rispettivamente sono:
– espruino_esp8266_board_0x00000.bin
– espruino_esp8266_board_0x10000.bin
Nel caso usassimo un Devkit basato su ESP8266-12E (ex. NodeMCU devkit 1.0) allora è sufficiente collegarlo tramite micro USB al PC. Per le altre board ESP di sviluppo, è necessario un cavo seriale USB TTL, come mostrato nelle precedenti guide. Essi possono essere FTDI, CH341 o CP2102. Il Devkit NodeMCU ha gia’ un chip CP2102 integrato. (E a tal proposito i driver per Mac OS X sono disponibili qui).
Per mettere la board in modalità Flash (Flash Mode), il GPIO 0 deve essere collegato al GND (ground). I devkit hanno gia’ un pulsantino che semplifica questa operazione, infatti è sufficente tener schiacciato il pulsante mentre si connette il cavo usb, per poi rilasciarlo. (A seconda del sistema operativo usato, il dispositivo puo’ essere riconosciuto su differenti porte seriali, COMX su windows, /dev/tty.SLAB_USBtoUART su Mac, /dev/tty.x su linux etc.).
I software per effetuare il Flashing sono essenzialmente due, esptool.py oppure il flashare di Nodemcu. Mostriamo entrambe le procedure:
esptool.py
Scarichiamo esptool.py e anche il build helper tool, ed eseguiamo il setup per installarlo (come ogni modulo python).
Cancelliamo il firmware presente sulla board con questo comando e prepariamoci a caricare il nuovo (NB. inserite la votra porta seriale, quella a cui è connessa la board ESP):
esptool.py --port /dev/tty.SLAB_USBtoUART erase_flash
Ora usiamo il build helper tool per scrivere i nuovi file del firmware:
esptool -cp /dev/tty.SLAB_USBtoUART -ca 0x00000 -cf espruino_esp8266_board_0x00000.bin -ca 0x10000 -cf espruino_esp8266_board_0x10000.bin
Se non ci sono errori a questo punto il firmware è stato correttamente scritto sulla nostra board.
NodeMCU Flasher
L’altra modalita’ per scrivere il firmware sulla board esp8266, a mio avviso piu’ semplice se siete su Windows, è quella di scaricare e usare l’eseguibile NodeMCU Flasher (non richiede installazione). Può essere scaricato direttamente dalla repository ufficiale: http://github.com/nodemcu/nodemcu-flasher.
Il programma è molto intuitivo e semplice. In questo articolo, sotto la sezione ‘Come caricare il firmware sull’ESP8266?’ si spiega come usare il Flasher.
In questo caso, per inserire i due file del firmware di Espruino, abbastanza intuitivamente, sappiate che è sufficiente nella scheda ‘Config’ selezionare i due file del firmware, e rispettivamente come indirizzo di destinazione selezionare 0x00000 e 0x10000. Inoltre non dimenticate di mettere le due spunte!
Lasciamo un video in inglese che spiega molto chiaramente il processo di flashing tramite il Flasher di NodeMCU:
Espruino Web IDE
Una volta che la board è flashata, siamo pronti ad eseguire gli script in javascript per Espruino, potete riavviare la board o semplicemente scollegare e ricollegare il cavo USB.
Al pari di Arduino, dotato di un apposito IDE per l’upload degli Sketch, anche Espruino è dotato di un IDE che semplifica il processo di upload ed esecuzione dei programmi all’interno delle board di sviluppo. La IDE di Espruino è chiamata Espruino Web IDE ed è scaricabile sottoforma di estensione Google Chrome dallo stesso Chrome App Store.
Per iniziare al meglio la comunicazione con la board, dalla Web IDE rechiamoci nelle Impostazioni, schiacciando l’icona a forma di ingranaggio in alto a destra.
A questo punto impostiamo il Baud Rate a 115200. Questa è una velocità consigliata se vogliamo lavorare con gli ESP8266.
Siamo dunque pronti per avviare la connessione con la board, schiacciamo l’icona di collegamento in alto a sinistra e selezionamo la porta seriale a cui è connesso l’esp8266.
E’ bene sapere, quando si lavora con qualunque board basata su esp8266, che spesso l’etichettatura dei pin sulla board stessa, non riflette quella che è la reale numerazione dei pin GPIO.
Il diagramma mostrato sotto dovrebbe chiarire un po’ le cose:
Se vogliamo ad esempio collegare qualcosa al pin D1, sappiamo che esso corrisponde (all’interno delle funzioni logiche del firmware soprattutto) al GPIO5.
Esempio: far lampeggiare un led
Mostriamo un esempio ormai celebre. Quello di far lampeggiare un led.
Il collegamento è questo mostrato in figura:
Il codice è questo qua:
var led = new Pin(4); var toggle=1; setInterval(function() { toggle=!toggle; digitalWrite(led, toggle); }, 500); |
Se tutto è andato per il meglio, il led connesso al pin D2 lampeggia, proprio come ci si aspettava.
Se non volete o non avete il necessario per effettuare questo tipo di collegamento (e state usando un Devkit), potete far la prova facendo lampeggiare il led presente sulla board stessa. Corrispondente al GPIO2.
Conclusione
Consigliamo di leggere la documentazione di Espruino per conoscere i metodi disponibili offerti dal firmware.
E’ inoltre possibile estendere le capacità del programma che andremo a scrivere, effettuando il ‘require’ dei moduli.
Notere inoltre quanto sia facile incappare in errori del tipo Out Of Memory. Questo perchè il porting di Espruino su ESP8266 è ancora in fase iniziale. Tuttavia c’è già una vasta community che si sta muovendo per risolvere tutti questi problemi e sopperire alle mancanze.
Per restare aggiornati, registratevi al forum di Espruino, e se avete dubbi non esitate a chiedere nella room Espruino su Gitter chat.
Commenti