# Adaptateur USB vers ESP-01 : activer le mode programmation ![Adaptateur USB vers ESP-01](20201207-233302.png) ## Présentation L'[adaptateur USB vers ESP-01 avec puce CH340](https://amzn.to/3oHZ1Eo) permet de connecter facilement un module ESP-01 (basé sur le microcontrôleur ESP8266) au port USB d'un ordinateur. Il intègre également un régulateur de tension 3,3 V, indispensable pour alimenter correctement l'ESP-01. Cet adaptateur sert à deux usages principaux : - **dialoguer avec l'ESP-01** via des commandes AT (commandes Hayes) afin de récupérer des informations ou de piloter le module ; - **téléverser un firmware personnalisé** sur l'ESP8266, par exemple depuis l'IDE Arduino. > Lien d'achat : [adaptateur USB vers ESP-01 avec puce CH340](https://amzn.to/3oHZ1Eo) ## Le problème : passer en mode programmation Par défaut, l'ESP-01 démarre en **mode UART** (communication série), qui convient pour échanger des commandes AT mais ne permet pas de flasher un nouveau firmware. Pour téléverser un programme, il faut basculer le module en **mode FLASH** (également appelé **mode programmation**). Cette bascule n'est pas logicielle : elle se fait **électriquement**, en forçant la broche **GPIO0** à la masse (**GND**) au moment du démarrage du module. De nombreux adaptateurs USB vers ESP-01 d'entrée de gamme ne prévoient pas de bouton ou de switch pour cette opération. Sans modification, toute tentative de téléversement échoue avec une erreur de ce type dans l'IDE Arduino : ``` esptool.py v2.8 Serial port /dev/ttyUSB0 Connecting........_....._....._....._....._....._....._....____ ... esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header ``` ![Erreur lors du téléversement vers ESP-01](20201212-191417.png) Le message clé est `Failed to connect to ESP8266: Timed out waiting for packet header` : `esptool.py` n'a pas réussi à mettre le module en mode flash et abandonne après plusieurs tentatives. ## La solution : modifier l'adaptateur Pour rendre l'adaptateur compatible avec le mode programmation, il suffit d'ajouter un moyen de relier **GPIO0** à **GND** à la demande. Rappel du brochage de l'ESP-01 : ![Brochage de l'ESP-01](20201212-134043.png) ### Matériel nécessaire - un fer à souder et de l'étain ; - deux fils fins ; - une barrette de deux broches au pas de 2,54 mm ; - un jumper ; - éventuellement un pistolet à colle pour rigidifier l'ensemble. ### Procédure 1. Souder un premier fil sur la broche **GPIO0** (côté adaptateur). 2. Souder un second fil sur une broche **GND** (côté adaptateur). 3. Relier l'autre extrémité de chaque fil à une broche de la barrette, de manière à pouvoir court-circuiter GPIO0 et GND en plaçant simplement un jumper. 4. Fixer la barrette avec une goutte de colle chaude pour éviter que les fils ne tirent sur les soudures. ![Adaptateur USB vers ESP-01 modifié et collé](20201213-084414.png) ### Utilisation - **Pour téléverser un programme** : placer le jumper (GPIO0 relié à GND), insérer l'adaptateur dans le port USB, puis lancer le téléversement depuis l'IDE Arduino. - **Pour utiliser le module normalement** (commandes AT ou exécution du firmware) : retirer le jumper, puis débrancher et rebrancher l'adaptateur pour redémarrer l'ESP-01 dans son mode standard. ![Téléversement réussi](20201213-083952.png) ## À retenir Le téléversement d'un nouveau firmware **écrase le code précédemment chargé**, y compris le firmware AT d'origine. Pour retrouver les commandes AT après avoir flashé un programme personnalisé, il faudra reflasher un firmware AT officiel d'Espressif. ```