ESP8266 è un SoC GENIALE che associa un processore low-power a 32bit alla potenza di un chip WiFi 802.11 b/g/n capace di funzionare anche in modalità access point e tutto per meno di 5 dollari.
ESP8266 di default contiene un firmware capace di replicare una seriale a distanza mediante il canale WiFi e funzionante con comandi AT; mediante tale chip possiamo ad esempio rendere WiFi una scheda come Arduino o MSP430-Launchpad ma ancora più interessante è la possibilità di riprogrammare il SoC integrando l’applicazione all’interno dello stesso chip.
Incominciamo installando un po di dipendenze e creiamo una directory per l’installazione dei tool necessari alla compilazione dei nuovi firmware. Il tutorial di riferimento si trova qui https://github.com/esp8266/esp8266-wiki/wiki/Toolchain e può essere seguito tranquillamente sebbene nei comandi sia presente qualche piccola imprecisione.
1 2 3 |
apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev python-serial libexpat-dev mkdir /opt/Espressif chown $username /opt/Espressif/ |
Fatto ciò compiliamo ed installiamo i cross-compilatori che ci permetteranno di compilare gli eseguibili per questa architettura e ricordiamoci di aggiungere al path la directory dei binari.
1 2 3 4 5 6 7 |
cd /opt/Espressif git clone -b lx106 git://github.com/jcmvbkbc/crosstool-NG.git cd crosstool-NG ./bootstrap && ./configure --prefix=`pwd` && make && make install ./ct-ng xtensa-lx106-elf ./ct-ng build PATH=$PWD/builds/xtensa-lx106-elf/bin:$PATH |
Personalmente mi è capitato di avere qualche difficoltà nell’installare tutti i pacchetti a causa di alcuni server non raggiungibili ma è bastato riprovare a distanza di qualche ora per vedere il tutto funzionare.
Possiamo installare ora l’SDK del modulo con i comandi seguenti.
1 2 3 4 5 6 7 8 9 |
cd /opt/Espressif mkdir ESP8266_SDK wget -O esp_iot_sdk_v0.9.3_14_11_21.zip https://github.com/esp8266/esp8266-wiki/raw/master/sdk/esp_iot_sdk_v0.9.3_14_11_21.zip wget -O esp_iot_sdk_v0.9.3_14_11_21_patch1.zip https://github.com/esp8266/esp8266-wiki/raw/master/sdk/esp_iot_sdk_v0.9.3_14_11_21_patch1.zip unzip esp_iot_sdk_v0.9.3_14_11_21.zip unzip esp_iot_sdk_v0.9.3_14_11_21_patch1.zip mv esp_iot_sdk_v0.9.3/* ESP8266_SDK rmdir esp_iot_sdk_v0.9.3 mv License ESP8266_SDK/ |
Cambiamo le directory di compilazione nel makefile aggiornandole con quelle installate …
1 2 3 |
cd /opt/Espressif/ESP8266_SDK sed -i -e 's/xt-ar/xtensa-lx106-elf-ar/' -e 's/xt-xcc/xtensa-lx106-elf-gcc/' -e 's/xt-objcopy/xtensa-lx106-elf-objcopy/' Makefile mv examples/IoT_Demo . |
… e scarichiamo un po di librerie e di header file che ci serviranno per i nostri progetti.
1 2 3 4 5 |
cd /opt/Espressif/ESP8266_SDK wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a wget -O include.tgz https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz tar -xvzf include.tgz |
Scarichiamo ed installiamo esptool ed esptool.py.
1 2 3 4 5 6 |
cd /opt/Espressif wget -O esptool_0.0.2-1_i386.deb https://github.com/esp8266/esp8266-wiki/raw/master/deb/esptool_0.0.2-1_i386.deb sudo dpkg -i esptool_0.0.2-1_i386.deb </code>cd /opt/Espressif git clone https://github.com/themadinventor/esptool esptool-py sudo ln -s $PWD/esptool-py/esptool.py crosstool-NG/builds/xtensa-lx106-elf/bin/ |
Per chi non ha pazienza esiste anche un’immagine per VirtualBox sviluppata ad-hoc per lavorare con ESP8266 e disponibile all’indirizzo http://bbs.espressif.com/viewtopic.php?f=5&t=2.
Possiamo quindi compilare un esempio, utilizziamo Blinky che va scaricato e compilato digitando i seguenti comandi.
1 2 3 4 |
cd /opt/Espressif git clone https://github.com/esp8266/source-code-examples.git cd source-code-examples/blinky make |
Se tutto ha funzionato dovremmo ottenere due files nella cartella firmware ovvero firmware/0x00000.bin e firmware/0x4000.bin non rimane che collegare il modulo e programmarlo.
I pin del modulo vanno collegati nel seguente modo:
- TX da collegare al pin TX della seriale
- CH_PD da collegare al positivo dell’alimentazione (+3,3 volts)
- RST da non collegare
- +3v3 da collegare all’alimentazione (+3,3 volts)
- GND da collegare al negativo dell’alimentazione
- GPIO2 da collegare al positivo dell’alimentazione (+3,3 volts) per la fase di programmazione
- GPIO1 da collegare al negativo dell’alimentazione per la fase di programmazione
- RX da collegare al pin RX della seriale
ATTENZIONE! Il modulo necessita una alimentazione a 3,3 Volts e può arrivare a consumare più di 200mA! E non dite che non vi avevo avvertito … Se però il modulo fa un po di fumo non necessariamente è un errore vostro … su qualche modulo è stata montata una resistenza da 4,7 Ohm invece che da 4,7k Ohm per limitare (o forse sarebbe meglio dire NON limitare) la corrente che circola nel led rosso (maggiori informazioni qui http://rayshobby.net/?p=10241).
Effettuato tutti i collegamenti si può lanciare il comando di programmazione del dispositivo controllando che nel Makefile la porta seriale corrisponda a quella realmente in uso sul computer.
1 |
sudo make flash |
Questo comando consente di riprogrammare l’ESP8266 caricandoci sopra i nostri firmware custom e rendendo il modulo totalmente indipendente … beh niente male per un modulo da 5 dollari!!!
Permalink
Veramente molto ermetica la spiegazione .
Penso che qualche indicazione vada data ai lettori !!!
In sostanza non si capisce che cosa si deve fare e per ottenere che cosa !
Grazie
Ambro
Permalink
Ciao Ambro,
hai ragione, questa è una introduzione a come flashare NodeMCU su ESP, ma poi per farci qualcosa occorre caricare uno script in Lua.
Se sei impaziente trovi qualche esempio qui
http://nodemcu.com/index_en.html
altrimenti aspetta un mio prossimo post 🙂 per una moodlight basata su ESP!
Ciao,
IW2HJD
Permalink
Ciao,
bella guida 🙂
Ma come faccio a connettere il mio? http://www.banggood.com/NodeMcu-Lua-ESP8266-ESP-12E-and-WiFi-Motor-Drive-Expansion-Board-p-995417.html per flashare la rom ?
Ho usato una usb e putty ma putty mi rimane bloccato senza darmi nessun segnale . Mi connetto tramite sudo e con i parametri :
serial debugging tool(putty、Tera Term Pro),serial parameters:115200,n,8,1
http://www.wifimcu.com/en.html
Hai consigli ?
Grazie
Raffa
Permalink
Ciao Raffa,
urca che bella board 🙂
Dovrebbe bastare l’USB on board e premere il pulsante flash dopo aver lanciato il comando opportuno. Se c’è il firmware di default e ti colleghi con putty (115200bps 8N1 – confermo) ti dovrebbe rispondere al comando AT dicendoti OK. Funziona?
Ciao,
Valerio
ESPlorer e LuaLoader possono aiutarti
Permalink
Ciao Valerio,
ho lottato tanto … alla fine cercando, cercando, cercando … ho provato a mettere i paremetri a 9600 e il tutto mi funzionava. Ho visto anche Esplorer.
Grazie 1000 e buoni progettini. Hai guadagnato una persona in più che ti segue 🙂
Ciao Raffa