28 juin 2015

Après une présentation générale de l’ESP8266, voici le second billet pour vous expliquer comment cabler et flasher un ESP8266. La programmation arrivera dans le billet suivant. Soyez patient !

Cablage

Le cablage peut varier selon les modèles que vous utilisez. Dans mon exemple, je vais montrer le cablage d’un modèle de chez Olimex :

Modèle Olimex MOD-WIFI-ESP8266-DEV

Olimex fait du hardware en Open Source. On peut donc retrouver les schémas sans soucis, dont celui qui montre le design. Quelque soit votre modèle, vous devez avoir un document qui devrait vous indiquer à quoi correspond chaque Pin.

Pour le module Olimex, voici le "pinout" :

Pinout Olimex MOD-WIFI-ESP8266-DEV

Pour le moment, 6 pins vont nous intéresser :

  • pin 1: 3.3V

  • pin 2: GND

  • pin 3: TX / GPIO1

  • pin 4: RX / GPIO3

  • pin 13: RESET

  • pin 21: GPIO0 (permet de mettre l’ESP8266 en mode "flash")

Alimentation

L’ESP8266 utilise des niveaux de tension de 3.3v (comme sur les GPIO des Raspberry Pi). L’alimentation de la plupart des "modules" ESP8266 se fait également en 3.3v. C’est peut-être cet aspect qui va vous gêner le plus. En effet, les alimentations 5V sont courantes … celles en 3.3V le sont beaucoup moins ! Vous aurez donc sûrement besoin d’un régulateur 3.3V ou d’un converstisseur DC/DC du genre :

Tip
Si vous avez une carte Arduino dans un coin, vous pouvez vous servir des pins GND et 3.3V pour alimenter momentanément votre module ESP8266.
Tip
Il existe des adaptateurs d’ESP8266 intégrant un régulateur 3.3V vous permettant d’alimenter votre montage en 5V. Cela permet également d’avoir un module avec des pins qui ont le même pas que les plaques d’essai.

Une fois que vous avez votre alimentation en 3.3V, il n’y a plus qu'à brancher sur les Pins 1 et 2 :

Pinout Olimex MOD-WIFI-ESP8266-DEV

Liaison UART

Pour pouvoir communiquer en filaire avec l’ESP8266, vous avez une bonne vieille liaison série ! Les Pins 3 et 4 vous offre la connectivité pour cela.

Munissez-vous d’un convertisseur USB/UART au préalable. Vous en trouverez à pas cher sur ebay si vous n’avez pas cela sous le coude.

La seule chose à faire attention est de croiser les RX et TX entre votre convertisseur et l’ESP8266. Donc le RX de mon convertiseur USB/UART, je le branche sur le pin 3 (TX) et le TX de mon convertisseur sur le pin 4 (RX).

Pinout Olimex MOD-WIFI-ESP8266-DEV

Dans la plupart des cas, les modules ESP8266 sont livrés avec un firmware qui permet de discuter sur l’UART en 115200 bps. Vous pouvez donc utiliser votre "moniteur série" préféré selon votre OS (minicom, screen, putty, …). Dans mon cas, j’utilise screen :

screen /dev/ttyUSB0 115200

Si vous faites un reset (en mettant le pin 13 à la masse et en le relachant), vous devriez voir des choses apparaître sur votre écran. Il y a même de forte chance que vous puissiez intéragir sur la console car la plupart du temps, le firmware installé par défaut est celui qui permet de se servir de votre ESP8266 en modem Wifi. Ci-dessous, vous voyez quelques commandes :

  • AT: Commande pour vérifier la connexion

  • AT+GMR: Donne la version du firmware

  • AT+CWMODE?: Donne le mode de fonctionnement : 1=STA(station), 2=AP(Access Point), 3=BOTH

  • AT+CWLAP: Donne la liste des SSID

ready
AT

OK
AT+GMR
00160901

OK
AT+CWMODE?
+CWMODE:1

OK
AT+CWLAP
+CWLAP:(0,"",0)
+CWLAP:(2,"home",-64)
+CWLAP:(0,"AI-THINKER_A11343",-8)

OK

Flasher votre ESP8266

Si, comme moi, vous souhaitez utiliser votre ESP8266 comme autre chose qu’un modem Wifi, vous allez devoir changer le firmware.

Outil pour flasher

Il existe plusieurs outils selon l’OS que vous utiliser. Les plus répandus sont :

  • esptool : Disponible sur un repo GitHub - Outil Python multi-OS

  • flash_download_tool : Outil windows officiel disponible sur le forum Espressif

  • nodemcu-flasher : Outil spécifique Windows disponible sur un repo GitHub

Je vous fais confiance pour suivre la documentation qui va bien pour installer l’outil de votre choix. De mon coté, j’utilise l’outil python esptool (utilisé dans certains makefile).

Flash d’un firmware

Avant de flasher un firmware, il faut mettre votre ESP8266 en "mode flash". Pour cela, il faut mettre le GPIO0 (Pin 21 sur l’Olimex) à la masse puis faire un reset (Pin 13 à mettre à la masse et relacher). Quand vous avez flasher plusieurs fois votre ESP8266, vous comprenez l’intéret de certains modules qui comportent 2 boutons (Reset et Flash) !

Dans le cas le plus simple, vous aurez un fichier unique et une simple commande vous permettra de flasher votre ESP8266. Voici un exemple pour flasher la dernière version du firmware NodeMCU :

esptool.py --port /dev/ttyUSB0  write_flash 0x000000 ./nodemcu_float_0.9.6-dev_20150406.bin

Selon les firmwares, il est possible que vous ayez plusieurs fichiers. Dans ce cas, il faudra préciser l’offset où flasher chaque fichier.

Conclusion

Voilà ! Vous avez maintenant tout ce qu’il faut pour commencer à coder … au moins en Lua avec NodeMCU. Les plus courageux pourront tenter un HelloWorld (pilotage d’une led) en C comme ici.