86 lines
4.6 KiB
Markdown
86 lines
4.6 KiB
Markdown
# Adaptateur USB vers ESP-01 : activer le mode programmation
|
|
|
|

|
|
|
|
## 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 :
|
|
|
|

|
|
|
|
```
|
|
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
|
|
|
|
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 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.
|
|
|