4.6 KiB
Adaptateur USB vers ESP-01 : activer le mode programmation
Présentation
L'adaptateur USB vers ESP-01 avec puce CH340 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
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 :
Executable segment sizes:
IROM : 234612 - code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 26888 / 32768 - code in IRAM (ICACHE_RAM_ATTR, ISRs...)
DATA : 1252 ) - initialized variables (global, static) in RAM/HEAP
RODATA : 1376 ) / 81920 - constants (global, static) in RAM/HEAP
BSS : 25112 ) - zeroed variables (global, static) in RAM/HEAP
Le croquis utilise 264128 octets (25%) de l'espace de stockage de programmes. Le maximum est de 1044464 octets.
Les variables globales utilisent 27740 octets (33%) de mémoire dynamique, ce qui laisse 54180 octets pour les variables locales. Le maximum est de 81920 octets.
esptool.py v2.8
Serial port /dev/ttyUSB0
Connecting........_....._....._....._....._....._....._....____
Traceback (most recent call last):
File ".../tools/upload.py", line 65, in <module>
esptool.main(cmdline)
...
File ".../esptool.py", line 483, in connect
raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
Le message clé ici est Failed to connect to ESP8266: Timed out waiting for packet header : l'outil 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. Le rappel du brochage de l'ESP-01 :
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
- Souder un premier fil sur la broche GPIO0 (côté adaptateur).
- Souder un second fil sur une broche GND (côté adaptateur).
- Relier l'autre extrémité de chaque fil à une broche de la barrette deux points, de manière à pouvoir court-circuiter GPIO0 et GND en plaçant simplement un jumper.
Une goutte de colle chaude permet ensuite de fixer la barrette sur le corps de l'adaptateur et d'éviter que les fils ne tirent sur les soudures, qui sont fragiles.
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.
À 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 l'usage des commandes AT après avoir flashé un programme personnalisé, il faudra reflasher un firmware AT officiel d'Espressif.





