ESP-01. Comment réinstaller le firmware d'origine NodeMCU (ESP8266) • Domotique et objets connectés à faire soi-même

L’ESP-01 est un petit module ESP8266 qui permet d’ajouter une connexion Wifi à un Arduino. Nous allons voir ici comment réinstaller le firmware d’origine. Vous pourrez en avoir besoin si vous obtenez un code erreur durant le boot, pour réinstaller le firmware d’origine après avoir testé NodeMCU, retrouver les commandes AT ou tout simplement si vous pensez que votre ESP-01 est défectueux.

L’ESP-01 est très certainement le membre le plus populaire de la grande famille des modules  Wifi ESP8266 (18 au moment de l’écriture de cet article). Nous les découvrirons dans un prochain article. C’est un module très économique. Pour moins de 3€ en provenance d’Asie, vous ajoutez une carte Wifi à votre Arduino. C’est bien moins cher qu’un Shield Wifi ou l’Arduino Yun.

Avant de commencer avec l’ESP8266

Si vous découvrez l’ESP8266 (et l’ESP-01), c’est un peu comme pour les clones d’Arduino, vous trouverez de nombreux fabricants / vendeurs. Par conséquent, vous risquez d’acheter des cartes avec un version différente du firmware. Si vous venez d’acheter votre ESP8266, vous pouvez vérifier facilement les informations à l’aide des commandes AT. En effet, une fois que vous aurez téléversé un programme Arduino dans votre ESP,  les commandes AT ne seront plus accessibles via le Moniteur Serie (ou via Putty).

Pour câbler, suivez le paragraphe “Préparez l’ESP-01 au flashage” ci-dessous.

Depuis l’IDE Arduino, lancez le Moniteur Série. Sélectionnez le mode “Les deux, NR et CR” et une vitesse de 9600 baud. Mettez votre ESP sous tension, après quelques instants vous devriez obtenir un message contenant le nom du vendeur suivi d’un OK. Si vous n’arrivez pas à lire (codes ASCII incompréhensibles), essayez de changer la vitesse à 115200 baud.

Tapez la commande AT puis Envoyer. Si tout est normal, l’ESP va renvoyer OK. Enfin saisissez AT+GMR puis Envoyer. En retour l’ESP vous renvoie la version de l’interpréteur de commande AT ainsi que celle du SDK installé.

zr0bdmjjcjldqq1245em-7046119

Pourquoi flasher le firmware d’origine ?

Tout d’abord, l’ESP01 peut parfois se mettre en erreur. Cela peut se produire après une installation défectueuse (autre firmware, programme…). Si le module vous renvoie par exemple le code erreur suivant via le Moniteur Série, le mieux est de flasher le firmware d’origine d’Espressif.

ets Jan 8 2013,rst cause:1, boot mode:(3,7)
ets_main.c

Si vous obtenez le message ci-dessous, c’est que votre ESP est en “Flashing Mode”, ce n’est pas une erreur

epc1=0x4
 ets Jan 8 2013,rst cause:2, boot mode:(1,6)

L’autre grande force des ESP8266 est la possibilité d’installer le firmware de son choix (et même de développer le sien grâce au SDK). L’IDE Arduino reste encore le moyen le plus simple pour programmer l’ESP8266, dans ce cas, vous aurez besoin de ré-installer le firmware d’origine.

Préparer l’ESP-01 au flashage (boot mode)

Avant de flasher le firmware d’origine, il faut déjà mettre en “Flashing Mode” l’ESP-01. Pour cela, il faut que le GPIO soit relié au GND au moment de la mise sous tension. La mise à jour du firmware est consommateur en énergie, assurez vous de disposer d’une alimentation suffisante avant de réaliser l’opération.

Matériel nécessaire

Vous aurez besoin du matériel suivant

Réaliser une alimentation 3.3Volts

l4dh6ue0mgkizqpobv98-1492026Tous les modules ESP8266 doivent être alimentés en 3.3 Volts. Attention à ne pas dépasser cette tension car aucune protection n’est prévue. Un autre point important est l’intensité d’alimentation. Il vaut mieux disposer d’au moins 500mA (voir 1A) pour la mise à jour du firmware. Il est donc déconseillé d’utiliser l’alimentation du port USB. Pour ma part, j’utilise simplement deux piles AA (neuves) dans un boîtier disposant d’un interrupteur. Cela m’évite de câbler un bouton de Reset et je suis certain que l’ESP-01 démarre en Flashing Mode à la mise sous tension.

Vous pouvez aussi investir dans une alimentation 3.3V / 5V pour breadboard. Ce n’est pas une dépense inutile si vous avez plusieurs projets DIY sympa en tête.

crwc5pmwftmqctbcr6ji-3405300

Vous pouvez enfin utiliser une alimentation d’un smartphone. Pour cela vous aurez besoin d’un adaptateur jack muni d’un bornier à vis et d’un régulateur de tension (LD1117V33 par exemple) permettant de délivrer les 3.3 Volts nécessaires à votre ESP8266. Attention à ne pas dépasser la tension d’alimentation préconisée (consulter la documentation technique). Enfin, tenez compte dans la conception de vos projets que le LD1117 chauffe (beaucoup). Vous pouvez également ajouter un condensateur 10µF pour une alimentation plus stable.

Branchement

i29r6wlwxhnq6rttvonh-7652551Pour que l’ESP démarre en Flashing Mode, la broche GPIO0 doit être reliée au GND. Reliez les broches ainsi :

GND Reliez ensemble le GND de la batterie avec le GND du module FTDI. Vous pouvez également câbler une résistance de rappel.

GPIO0 GND

RX TX du FTDI

TX RX du FTDI

CH_PD + 3.3V

VCC + 3.3V

Le câblage que je vous propose est bien plus simple que ce que vous pourrez trouver sur internet mais il fonctionne et ne nécessite que quelques câbles Dupont.

Ne branchez rien sur la broche GPIO2 durant la mise à jour du firmware (également lorsque vous voulez téléverser un programme depuis l’IDE Arduino).

feg81z0rcxrkelbvsrsy-4936232

Quel logiciel utiliser pour flasher le firmware de l’ESP-01 ?

Il existe au moins deux solutions pour flasher le firmware d’origine. La première solution est d’utiliser le logiciel de mise à jour d’origine d’Espressif. Le Flash Tool  permet de flasher tous les modules de la famille ESP8266. Le plus difficile est de trouver les bons paramètres de flashage. J’en ai essayé de nombreux sans succès. Je n’abandonne pas cette solution mais pour cet article je vous propose plutôt d’utiliser ESPFlasher qui fonctionne très bien et qui fait le travail sans aucun réglage. Vous pouvez le télécharger à cette adresse. L’archive ZIP contient le logiciel de mise à jour, esp8266_flasher.exe ainsi que le Firmware (ESP_8266_BIN0.92.bin). Il ne semble pas exister de version pour les utilisateurs Mac OS, Linux (ou Raspberry).

En cas d’échec, vous pouvez aussi tester un firmware alternatif disponible ici :

  • ai-thinker-0.9.5.2-9600.bin
  • v0.9.2.2 AT Firmware.bin
  • v1.1.1.1 AT Firmware.bin

Mettre à jour le firmware

Mettez sous tension votre ESP-01. Vous ne devez avoir que la Led rouge allumée.

Lancez esp8266_flasher.exe et indiquez le port COM sur lequel se trouve votre ESP-01. Pour connaître le port COM sur lequel est branché votre ESP01, vous pouvez vous aider de l’IDE Arduino. Ne changez pas l’adresse (0x00000)

Lancez la mise à jour du firmware en appuyant sur “Download”. esp8266_flasher.exe va tout d’abord effacer la mémoire flash puis télécharger la mise à jour. L’opération dure une minute environ. Ne vous souciez pas du message d’erreur à la fin de l’opération.

Vérifier que la mise à jour fonctionne

Pour vérifier que la mise à jour est correcte, le plus simple est d’utiliser le Moniteur Série de l’IDE Arduino (vous pouvez également utiliser Putty). Suivez les étapes du paragraphe d’introduction. Si tout s’est bien passé vous devriez obtenir OK avec la commande AT et les versions AT et SDK avec la commande AT+GMG.

zr0bdmjjcjldqq1245em-7046119

Voilà, si tout fonctionne votre ESP-01 est comme neuf. Vous pouvez de nouveau utiliser les commandes AT et téléverser votre programme depuis l’IDE Arduino. Rappelez vous que les commandes AT ne seront plus disponibles une fois qu’un programme Arduino a été téléversé.

Tester votre premier programme Arduino sur votre ESP8266

Si vous découvrez l’ESP8266, vous devez tout d’abord installer la librairie permettant de programmer les cartes esp8266 à votre IDE Arduino. Pour cela, ouvrez les préférences et ajoutez à la liste des packages.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

9tndpuvbydumcdxswash-6487963

Allez dans le gestionnaire de carte et cherchez esp8266, puis cliquez sur installer.

Une fois l’installation terminée, sélectionnez “Generic ESP8266 Module”. La configuration pour un ESP-01 est la suivante :

  • Flash Mode : DIO
  • Flash Frequency : 40 MHz
  • CPU Frequency : 80 MHz
  • Flash Size : 512K
  • Upload Speed : 115200 baud

Choisissez ArduinoISP comme programmateur.

Dans la liste des exemples ESP8266Wifi, choisissez WifiScan. Mettez votre ESP en Flashing Mode puis téléversez le programme. Si votre branchement est correct, des points indiquant la progression de téléchargement vont apparaître.

Ouvrez le Moniteur Série (à 115200 baud). Votre ESP-01 scanne maintenant votre réseau Wifi et renvoie les réseaux trouvés.

Messages d’erreurs et remèdes

J’ai répertorié quelques messages d’erreur que vous pouvez rencontrer ainsi que quelques pistes pour les résoudre. Si vous avez d’autres solutions, n’hésitez pas à les partager dans les commentaires pour que je puisse les ajouter.

Message Causes possibles Remèdes
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
L’ESP n’est pas en Flashing Mode Choisir ArduinoISP comme programmateur

Vérifier le branchement de la liaison Série (inverser TX/RX)

Le GPIO0 est-il bien au GND ?

Votre alimentation trop faible. Elle doit délivrer au moins 300mA lors du flashage du firmware

Ajoutez une résistance de rappel sur le GPIO0 ou relier le GND de l’alimentation 3.3V  au GND du module FTDI

Débrancher/remettre sous tension l’ESP8266

Débrancher/rebrancher sur un autre port USB votre module FTDI

Redémarrer l’ordinateur (si le module FTDI est toujours introuvable)

Avez-vous aimé cet article ?