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

etc..

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.png