Comme nous l’avons vu dans un le précédent billet, l’ESP8266 peut être flashé avec des firmwares alternatifs.

Modification des branchements

Pour je pense toutes les versions, il est nécessaire de mettre la GPIO0 à la masse au démarrage du module pour qu’il puisse rentre en mode “ready pour être flashé”.
(Penser à l’enlever après ! )

Logiciel pour flasher

Sous GnuLinux, j’ai utilisé esptool.

$ sudo apt-get install python-serial  
$ git clone https://github.com/themadinventor/esptool.git  
$ ./esptool/esptool.py --help  
usage: esptool [-h] [--port PORT] [--baud BAUD]

Exemple avec NodeMCU si votre port série est /dev/ttyUSB0

$ wget https://github.com/nodemcu/nodemcu-firmware/raw/master/pre_build/latest/nodemcu_latest.bin  
$ python esptool.py --port /dev/ttyUSB0 write_flash 0x000000 nodemcu_latest.bin  
Connecting...  
Erasing flash...  
Writing at 0x00062000... (100 %)  

Leaving...

Firmwares

Frankenstein

Frankenstein est un firmware qui permet de se passer des commandes AT pas très intuitives, et d’utiliser à la place des commande beaucoup plus simples.

Exemples de commandes qui elles se passent d’explication:

iwscan  
iwconnect ApName password  
ifconfig  
listen 8080  
send 192.168.0.101 8080 hello  
deepsleep 10000  
gpio out 0 1  

simple…

NodeMcu

NodeMcu ici ou ici est je pense, à la date de rédaction de ce billet, le firmware le plus utilisé.

Il utilise des scripts en Lua.

NodeMCU 0.9.5 build 20150214 powered by Lua 5.1.4  
lua: cannot open init.lua  

print("hello")  
 hello  

Exemple de code pour faire tourner un serveur HTTP:

-- a simple http server  
srv=net.createServer(net.TCP)  
srv:listen(80,function(conn)   
conn:on("receive",function(conn,payload)   
print(payload)   
conn:send("<h1> Hello, NodeMCU.</h1>")  
end)   
end)  

Le mieux est d’aller voir les autres exemples sur le site web ou sur GitHub pour se rendre compte.

Au démarrage, le fichier init.lua sera exécuté, s’il existe.
Il est donc possible par exemple de faire tourner un serveur HTTP connecté en Wifi qui permet de basculer les GPIOs.
Oui, oui, tout ceci pour 2€50 ! Sans avoir besoin d’un Arduino etc.. L’Internet des objets est là.

esp8266-cli

esp8266-cli permet de réaliser simplement des opérations sur le système de fichier accessible sous le firmware NodeMcu.

Il permet donc de copier facilement ses scripts, les supprimer etc.. en ligne de commande.

$ sudo npm install -g esp8266

J’ai eu l’erreur “/usr/bin/env: node: No such file or directory” qui a été corrigé par

$ ll /usr/bin/nodejs  
-rwxr-xr-x 1 root root 1.4M Oct 19 2013 /usr/bin/nodejs  
$ sudo ln -s /usr/bin/nodejs /usr/bin/node  

Exemples de copie de fichier vers l’ESP8266:

$ echo pouet > toto  
$ sudo esp port set /dev/ttyUSB0  
$ sudo esp file list  
$ sudo esp file write toto  
$ sudo esp file list  
6 bytes toto  
$ sudo esp file read toto  
pouet  

$ sudo esp file remove toto  
$ sudo esp file list  

ESPlorer

Dispo ici, écrit en Java, il est multi-plateformes

$ java -jar ESPlorer.jar

esp8266-esplorer