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é.
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
Tous 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.
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
Pour 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).
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.
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
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) |
- Stocker des données sur une carte micro SD. Code Arduino compatible ESP32, ESP8266
- Débuter Arduino. Recevoir des commandes depuis le port série (compatible ESP32 ESP8266)
- Fonctions C++ print•println•printf•sprintf pour Arduino ESP32 ESP8266. Combiner•formater → port série
- String C++. concat•c_srt•indexOf•replace•subString… pour Arduino ESP32 ESP8266
- ESP01. Débuter avec l’IDE Arduino ou PlatformIO. Quel module choisir ? Repérage des broches
Bonjour,
Merci pour le tuto, c’est en effet l’un des plus clair et des plus complets que j’ai pu lire jusqu’à maintenant
j’arrive à flasher avec l’IDE arduino, platformio et les flasher specifiques ESP mais rien ne se passe lorsque je mais mon ESP-01S sous tension, j’ai essayé pourtant plusieurs solutions, et 2 esp-01s differents…
la par exemple je flash le blynk.ino mais nada et un firmware “AT-command” me renvoie peu de choses concluantes …
Combien des capteurs on peut brancher avec ESP01
Bonjour. Tout dépend du protocole de communication utilisé par le capteur. Comme l’ESP01 dispose de 2x broches, on pourra connecteur jusqu’à 128 composants I2C. En PWM et via le port série, un seul. Sinon, il est possible d’ajouter une carte d’extension pour augmenter le nombre de GPIO…. mais dans ce cas autant passer directement sur un ESP8266 classique.
Hello à tous,
Je me tire les cheveux pour contrôler un module esp8266 en AT.
Le flash du firmware semble ok mais la commande AT me renvois ERROR : https://www.dropbox.com/s/rlkbml1rdn0opxx/Capture%20d%27%C3%A9cran%202018-10-27%2002.46.06.png?dl=0
J’ai testé pleins de versions de firmware at sans succès, je déprime …
C’est une carte wemos mega.
Merci d’avance à tous pour votre aide !!
Bonjour JJ. Il ne faut pas trop vous embêter avec les commandes AT de l’ESP8266. Il est bien plus facile et rapide de programmer avec du code Arduino classique.
Je pense avoir lu 30 tutos ces 10 derniers jours, en français et anglais, n’arrivant à rien. J’ai câblé comme expliqué ici, et enfin j’ai des résultats! J’ai pu flasher le firmware sur l’ESP-01 sans problème, juste en suivant ton tuto. Magique. MERCI! Maintenant, je vais essayer d’envoyer depuis l’IDE Arduino 😉 Roooo, mais encore un grand merci!
Merci beaucoup, ça me fait vraiment très plaisir 🙂
Bonjour,
Dans les explications quant au cablage, il est expliqué qu’il faut relier le GPIO0 au GND et ne pas relier le GPIO2. En revanche, sur la photo dans la section “Branchement”, c’est l’inverse.
Quelle est la bonne version, du coup ?
Bonjour,
je n’arrive pas à flasher l’esp8266 j’ai ce message d’erreur :
Exception in thread Thread-1:
Traceback (most recent call last):
File “threading.pyo”, line 810, in __bootstrap_inner
File “esp8266_flasher.py”, line 19, in run
File “downloader.pyo”, line 54, in __init__
File “serialserialwin32.pyo”, line 38, in __init__
File “serialserialutil.pyo”, line 282, in __init__
File “serialserialwin32.pyo”, line 66, in open
SerialException: could not open port ‘COM6’: WindowsError(5, ‘Accxe8s refusxe9.’)
si qlqu’un à déjà eu ce problème, ça semble venir du port COM qui ne serait pas ouvert pourtant j’arrive bien à téléversé des progs par ce port.
Merci.
Antoine
C’est probablement parce que le port COM est déjà ouvert par une autre application (par exemple l’IDE Arduino). Il suffit de tout fermer et recommencer. Ca devrait fonctionner.
Merci! super!