ESP8266

Da raspibo.
Jump to navigation Jump to search

Negli ultimi tempi ho visto diversi articoli riguardanto un modulo WiFi low cost venduto principalmente da siti cinesi.

Il prezzo è veramente interessante si va da 3 a 5 dollari mediamente.

Me ne sono procurati alcuni pezzi e qui raccolgo alcune notizie in vista di usarli in qualche progetto.

Il modulo funziona a 3.3 Volts perciò attenzione ad usarlo in combinazione con Arduino perchè si rischia di bruciarlo se alimentato a 5 Volts. Si rischia di bruciare arduino se il modulo wifi viene collegato all'uscita 3.3.V perchè i consumi di sono maggiori di quello che arduino può erogare.

Passiamo ai collegamenti, oltre all'alimentazione ed ai collegamenti TX - RX, per dialogare con il modulo va collegato a Vcc il pin CH_PD.

Quando il modulo viene alimentato si accende un led rosso e lamepggia per un attimo il led blu.

Ci sono diverse versioni della board in giro, e con diverse versioni di firmware che comunicano in seriale a diverse velocità.


Minicom flow.png


I firmware Version:0.9.2.2 comunicano a 9600 mentre quelli più recenti a 57600 e 115200.


Per comunicare con il modulo ho dovuto togliere l'hardware flow control altrimenti ricevevo solo il messaggio al boot ma non riuscivo a dare i comandi.

Minicom.png

Il tasto Enter deve inviare CR+LF con minicom (CTRL+A poi Z ed infine A), ma a me non funziona (ci devo guardare meglio potrebbe essere un bug di minicom su Debian), in alternativa, ma è abbastanza noiso, dopo aver dato enter, inviare LF con CTRL+J ogni volta.

Per chi usa screen ho trovato queste indicazioni

It’s possible to use GNU Screen out of the box with the default version of the firmware (00160901)
which expects Carriage-Return-only line endings, e.g. (on OS X):
screen /dev/tty.usbserial-AB12345 115200
Unfortunately the updated firmware versions require Carriage-Return-and-New-Line line endings and
there appears to be no way to configure screen to send both with one key press. Instead, you need
to press <enter> or Ctrl-M then follow that with Ctrl-J.
You might have more success with something like minicom or picocom with later firmware versions.


Il modulo si programma con i comandi AT in maiuscolo (forse anche questo dipende dalla versione del firmware) seguiti da enter:

- AT risponde OK e serve a capire sel il modulo è in ascolto - AT+RST resetta il modulo - AT+CWMODE=<mode> (seleziona in quale modalità deve lavorare il chip (1= Client, 2= AccessPoint, 3=entrambi), quindi es AT+CWMODE=1 trasforma il modulo in un client wifi - AT+CWLAP lancia una scansione degli access poinT di seguito un esempio di output

AT+CWLAP
+CWLAP:(3,"Cast_WiFi",-80,"00:22:b0:43:8d:7b",1)
+CWLAP:(0,"D-Link DSL-2640B",-58,"b8:a3:86:e9:e2:6c",1)
+CWLAP:(4,"Cast_WiFi",-49,"9c:97:26:d3:be:23",1)
+CWLAP:(0,"NinuxBO",-56,"6a:72:51:00:df:f6",11)
+CWLAP:(0,"NinuxBO-mesh",-57,"68:72:51:00:df:f6",11)
+CWLAP:(0,"NinuxBO",-81,"12:fe:ed:2b:19:e2",11)
+CWLAP:(3,"Cast_WiFi",-52,"a0:21:b7:ba:ff:d6",6)
OK

- AT+CWJAP="<access_point_name>","<password>" connette il modulo ad un access point

AT+CWJAP="NinuxBO",""

- AT+CWJAP? verifica a quale access point si è agganciato il modulo

AT+CWJAP?
+CWJAP:"NinuxBO"
OK

- AT+CIFSR verifica l'ip del modulo

AT+CIFSR
10.51.22.40
OK


+CWLAP:(3,"Cast_WiFi",-80,"00:22:b0:43:8d:7b",1)

+CWLAP:(0,"D-Link DSL-2640B",-58,"b8:a3:86:e9:e2:6c",1)
+CWLAP:(4,"Cast_WiFi",-49,"9c:97:26:d3:be:23",1)
+CWLAP:(0,"NinuxBO",-56,"6a:72:51:00:df:f6",11)
+CWLAP:(0,"NinuxBO-mesh",-57,"68:72:51:00:df:f6",11)
+CWLAP:(0,"NinuxBO",-81,"12:fe:ed:2b:19:e2",11)
+CWLAP:(3,"Cast_WiFi",-52,"a0:21:b7:ba:ff:d6",6)
OK

- AT+CWJAP="<access_point_name>","<password>" connette il modulo ad un access point

AT+CWJAP="NinuxBO",""

- AT+CWJAP? verifica a quale access point si è agganciato il modulo

AT+CWJAP?
+CWJAP:"NinuxBO"
OK

- AT+CIFSR verifica l'ip del modulo

AT+CIFSR
10.51.22.40
OK

Upload di un nuovo firmware

Ora passiamo ad aggiornare il firmware (ispirato a questa guida):

git clone https://github.com/themadinventor/esptool
sudo python esptool.py --port /dev/ttyUSB0 write_flash 0x00000 nodemcu_latest.bin

durante queste operazioni oltre all'avanzamento a video lampeggia il led blu

Terminato l'aggiornamento possiamo dare comandi al modulo pilotando i pin del gpio, creando file da eseguire all'avvio ecc....

Per capire meglio cosa è possibile fare con questo firmware si può fare riferimento al readme su github.

Ora si possono caricare degli script e qualcuno ha creato un comodo script in python

Riferimenti

A questo indirizzo una lista completa dei comandi AT: ESP8266

Ho trovato questo documento che ho usato per qualche indicazione: ESP8266_WiFi_Module_Quick_Start_Guide_v_1.0.4.pdf

ESP8266Ref.pdf

https://github.com/esp8266

http://www.esp8266.com/

http://www.esp8266.com/wiki/doku.php