Files
abonnel-www/3f750a3a-fad0-4089-98e5-79c8b4287ea2/revisions/0001.md
T
2026-05-15 09:29:56 +02:00

7.1 KiB

Introduction

L'ESP-01 est un petit module Wi-Fi très répandu, construit autour du microcontrôleur ESP8266EX fabriqué par Espressif. À sa sortie d'usine, il est livré avec un firmware (le programme interne du circuit) qui permet de le piloter à l'aide de commandes textuelles simples appelées commandes AT. Ce firmware peut être effacé ou corrompu, par exemple après avoir téléversé un programme Arduino ou MicroPython sur le module. Ce document explique comment remettre l'ESP-01 dans son état d'origine afin de retrouver l'usage des commandes AT.

Quelques notions préalables

Avant de commencer, il est utile de clarifier quelques termes.

Un firmware est le logiciel embarqué dans un composant électronique. Contrairement à un programme installé sur un ordinateur, il s'écrit directement dans la mémoire flash du microcontrôleur et s'exécute au démarrage du circuit.

Un fichier binaire (extension .bin) est le résultat de la compilation d'un code source écrit dans un langage évolué, généralement le C. Une fois compilé, le fichier ne contient plus que des instructions destinées au processeur, illisibles directement par un humain. Il n'est pas nécessaire de les modifier : ils se téléversent tels quels dans le microcontrôleur.

La mémoire flash de l'ESP8266EX est divisée en zones. Chaque binaire doit être écrit à une adresse mémoire précise, sans quoi le module ne saura pas où trouver le code à exécuter au démarrage. Sur l'ESP-01, la mémoire est généralement organisée en 512k + 512k, ce qui signifie que la flash totale de 8 Mbit (1 Mo) est partagée en deux zones de 512 ko : l'une pour le programme actif, l'autre réservée aux mises à jour à distance (OTA).

Étape 1 — Télécharger le firmware AT officiel

Le firmware est mis à disposition par Espressif sur son site officiel :

https://www.espressif.com/en/products/socs/esp8266ex/resources

Dans la section AT, choisir la version ESP8266 NonOS AT Bin V1.7.4 ou plus récente. L'archive ZIP téléchargée contient plusieurs binaires destinés à l'ESP8266EX.

Quatre fichiers sont particulièrement importants :

  • boot_v1.7.bin — le chargeur de démarrage (bootloader), premier programme exécuté à la mise sous tension ;
  • user1.1024.new.2.bin — le programme AT proprement dit, qui interprète les commandes envoyées par la liaison série ;
  • esp_init_data_default_v08.bin — les données d'initialisation (paramètres radio, calibration) ;
  • blank.bin — un fichier rempli de zéros, utilisé pour réinitialiser certaines zones de la flash.

Une copie de ces binaires pour la configuration ESP8266EX 512k+512k est disponible ici :

https://gitlab.com/cedricAbonnel/esp/-/tree/master/esp01/esp8266ex_at_bin

Étape 2 — Identifier le port série de l'ESP-01

L'ESP-01 ne se connecte pas directement à un port USB : il faut passer par un adaptateur USB-série (souvent un module FTDI ou CH340). Une fois branché, l'ordinateur expose ce périphérique sous la forme d'un fichier dans /dev/.

Pour repérer ce fichier, exécuter dans un terminal :

ls /dev/tty*

Parmi les entrées affichées, celle qui nous intéresse est généralement /dev/ttyUSB0 (parfois ttyUSB1 si plusieurs adaptateurs sont branchés, ou ttyACM0 selon le modèle).

Une astuce utile : exécuter la commande une première fois sans l'adaptateur, puis une seconde fois après l'avoir branché. La nouvelle entrée qui apparaît est celle du module.

Étape 3 — Préparer le téléversement avec esptool.py

esptool.py est l'outil officiel d'Espressif, écrit en Python, qui permet de communiquer avec la mémoire flash de l'ESP8266EX. S'il n'est pas déjà installé, on peut l'obtenir via pip :

pip install esptool

Avant le téléversement, l'ESP-01 doit être placé en mode programmation : la broche GPIO0 doit être reliée à la masse (GND) au moment de la mise sous tension. Sans cette manipulation, le module démarre normalement et refuse l'écriture en flash.

Étape 4 — Téléverser les binaires

La commande suivante écrit les quatre binaires aux bonnes adresses mémoire :

esptool.py --port /dev/ttyUSB0 write_flash --flash_mode qio \
  0x00000 boot_v1.7.bin \
  0x01000 user1.1024.new.2.bin \
  0xfc000 esp_init_data_default_v08.bin \
  0x7e000 blank.bin \
  0xfe000 blank.bin

Décortiquons les options :

  • --port /dev/ttyUSB0 indique le port série identifié à l'étape précédente ;
  • write_flash est la sous-commande d'écriture en mémoire flash ;
  • --flash_mode qio précise le mode d'accès à la flash (Quad I/O, le plus rapide, supporté par l'ESP-01).

Chaque valeur hexadécimale (0x00000, 0x01000, etc.) qui précède un nom de fichier indique l'adresse mémoire à laquelle l'écriture doit commencer. La table de correspondance officielle pour une flash de 8 Mbit organisée en 512k+512k est la suivante :

### Flash size 8Mbit: 512KB+512KB
    boot_v1.2+.bin              0x00000
    user1.1024.new.2.bin        0x01000
    esp_init_data_default.bin   0xfc000
    blank.bin                   0x7e000 & 0xfe000

L'adresse 0x7e000 correspond aux paramètres système, et 0xfe000 à la zone RF système : les remplir de zéros (blank.bin) garantit un démarrage propre.

Si tout se passe bien, esptool affiche la progression du téléversement et confirme la réussite de l'opération. C'est le moment d'apprécier le travail accompli :

Étape 5 — Vérifier le bon fonctionnement

Après le téléversement, retirer la connexion entre GPIO0 et la masse, puis redémarrer le module. Ouvrir une console série (par exemple avec minicom, screen ou la console série de l'IDE Arduino) à la vitesse 115200 bauds :

screen /dev/ttyUSB0 115200

Taper la commande AT suivie d'un retour à la ligne. Le module doit répondre OK. La commande AT+GMR retourne la version du firmware installé, ce qui permet de confirmer la réussite de la réinitialisation.

En cas de problème

Quelques pistes si la procédure échoue :

  • Aucune réponse d'esptool : vérifier que GPIO0 est bien reliée à GND au moment de l'alimentation, et que l'adaptateur USB-série fournit assez de courant (l'ESP-01 demande des pics jusqu'à 300 mA).
  • Réponses illisibles dans la console série : la vitesse par défaut a pu changer selon la version du firmware. Essayer 9600, 74880 ou 115200 bauds.
  • Erreur de checksum ou de mode flash : essayer --flash_mode dio à la place de qio, certains clones d'ESP-01 ne supportent pas le mode Quad I/O.

Conclusion

Cette procédure restaure un ESP-01 dans son état d'origine, prêt à recevoir des commandes AT depuis n'importe quel système capable de dialoguer en série : ordinateur, Arduino, Raspberry Pi, etc. Elle constitue également un bon exercice d'introduction aux notions de firmware, de mémoire flash et de programmation bas-niveau des microcontrôleurs.