145 lines
7.5 KiB
Markdown
145 lines
7.5 KiB
Markdown
# ESP-01 : présentation et premiers pas
|
||
|
||

|
||
|
||
## Présentation
|
||
|
||
L'[ESP-01](https://amzn.to/3oAwIaR) est un module Wi-Fi compact construit autour du microcontrôleur **ESP8266EX** d'Espressif. Sur un PCB d'environ 24 × 14 mm, il rassemble :
|
||
|
||
- un microcontrôleur **ESP8266EX** (cœur Tensilica L106 32 bits cadencé à 80/160 MHz) ;
|
||
- une mémoire **SPI Flash** externe (généralement **1 Mo** sur les versions courantes, parfois jusqu'à 4 Mo) ;
|
||
- une **antenne PCB** d'environ 2 dBi, gravée directement sur le circuit imprimé ;
|
||
- un **connecteur 2 × 4 broches** au pas de 2,54 mm.
|
||
|
||
> Lien d'achat : [ESP-01 basé sur ESP8266](https://amzn.to/3oAwIaR)
|
||
|
||
### ESP8266EX vs ESP-01 : ne pas confondre
|
||
|
||
Une confusion fréquente porte sur la dénomination du produit :
|
||
|
||
- **ESP8266EX** désigne le **circuit intégré** (le SoC) produit par Espressif. C'est la puce qui contient le processeur, la radio Wi-Fi, la RAM et les périphériques.
|
||
- **ESP-01** désigne un **module** : un petit PCB qui embarque l'ESP8266EX, sa mémoire flash, son antenne et un connecteur d'accès. Il est conçu et vendu par AI-Thinker, pas par Espressif.
|
||
|
||
Plusieurs autres modules existent autour du même SoC (ESP-02, ESP-05, ESP-07, ESP-12, etc.). Ils diffèrent par le nombre de broches exposées, la taille de la flash, le type d'antenne et le facteur de forme. L'ESP-01 est le plus simple et le plus économique de la famille, mais aussi le plus contraint en nombre d'entrées/sorties accessibles.
|
||
|
||
### Pourquoi un adaptateur USB est nécessaire
|
||
|
||
L'ESP-01 n'expose qu'un port série UART à 3,3 V — pas d'interface USB, pas de régulateur, pas de bouton. Pour le programmer ou dialoguer avec lui depuis un ordinateur, il faut un **adaptateur USB-série** capable de :
|
||
|
||
- convertir les niveaux USB en niveaux série logiques ;
|
||
- fournir une alimentation **3,3 V** stable (l'ESP-01 ne tolère pas le 5 V).
|
||
|
||
Les adaptateurs courants utilisent une puce **CH340**, **CP2102** ou **FT232**. Certains sont des dongles spécialement formés pour accueillir l'ESP-01 directement sur leur connecteur.
|
||
|
||
> Attention : on lit parfois la référence « CH360 ». Il s'agit en réalité de la **CH340** (de WCH). Aucune puce « CH360 » n'existe dans cette gamme.
|
||
|
||
## Brochage de l'ESP-01
|
||
|
||

|
||
|
||
Le connecteur 8 broches est directement câblé sur les pins de l'ESP8266EX :
|
||
|
||
| Broche | Nom | Rôle |
|
||
|---|---|---|
|
||
| 1 | **GND** | Masse |
|
||
| 2 | **GPIO2** | E/S générique. Doit être à l'état haut (ou flottante) au démarrage pour booter normalement. |
|
||
| 3 | **GPIO0** | E/S générique. **Forcée à GND au démarrage** pour entrer en mode programmation (flash). Laissée libre, elle permet un boot normal. |
|
||
| 4 | **RX** | Réception série (UART0). À relier au TX de l'adaptateur USB-série. |
|
||
| 5 | **TX** | Émission série (UART0). À relier au RX de l'adaptateur USB-série. |
|
||
| 6 | **CH_PD** (aussi noté **EN**) | Chip enable. Doit être maintenue à **3,3 V** pour que le module fonctionne. |
|
||
| 7 | **RST** | Reset, actif à l'état bas. |
|
||
| 8 | **VCC** | Alimentation **3,3 V** uniquement. |
|
||
|
||
Points de vigilance :
|
||
|
||
- l'alimentation **3,3 V** est impérative ; le 5 V détruit le SoC instantanément ;
|
||
- les pics de courant en émission peuvent atteindre **300 mA**. Une alimentation sous-dimensionnée provoque des resets aléatoires ;
|
||
- les niveaux logiques sont également à 3,3 V : interfacer un Arduino Uno (5 V) sans pont diviseur ou level shifter peut endommager l'ESP.
|
||
|
||
### Branchement avec un adaptateur USB-CH340
|
||
|
||

|
||
|
||
Une fois l'ESP-01 enfiché dans l'adaptateur, ce dernier joue le rôle de pont entre le port USB de l'ordinateur et l'UART de l'ESP8266EX :
|
||
|
||
- l'ordinateur voit un port série virtuel (`/dev/ttyUSB0` sous Linux, `COMx` sous Windows) ;
|
||
- l'adaptateur fournit le 3,3 V à l'ESP-01 et relaie les octets dans les deux sens ;
|
||
- la plupart des adaptateurs d'entrée de gamme **ne gèrent pas le passage en mode flash** : voir l'article dédié à la [modification de l'adaptateur USB vers ESP-01](https://varlog.a5l.fr/post/adaptateur-usb-vers-esp-01-activer-le-mode-programmation) pour ajouter un jumper GPIO0 / GND.
|
||
|
||
## Datasheet
|
||
|
||
La documentation officielle est très succincte pour ce module. Les deux références utiles sont :
|
||
|
||
- la **datasheet de l'ESP8266EX** (Espressif) — caractéristiques électriques, brochage du SoC, consommation : <https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf>
|
||
- la **datasheet AI-Thinker de l'ESP-01** (sommaire) — dimensions et brochage du module : disponible sur le mirroir du fabricant.
|
||
|
||

|
||
|
||
Le fichier joint à cet article reprend la version condensée diffusée par AI-Thinker : [esp01.pdf](esp01.pdf)
|
||
|
||
## Configurer l'IDE Arduino
|
||
|
||

|
||
|
||
L'IDE Arduino ne sait pas, par défaut, compiler pour l'ESP8266. Il faut au préalable installer le **board package** correspondant.
|
||
|
||
### 1. Ajouter l'URL du gestionnaire de cartes
|
||
|
||
Dans `Fichier → Préférences`, ajouter dans **URL de gestionnaire de cartes supplémentaires** :
|
||
|
||
```
|
||
https://arduino.esp8266.com/stable/package_esp8266com_index.json
|
||
```
|
||
|
||
### 2. Installer le support ESP8266
|
||
|
||
Ouvrir `Outils → Type de carte → Gestionnaire de cartes`, rechercher **esp8266** et installer le paquet *esp8266 by ESP8266 Community*.
|
||
|
||
### 3. Sélectionner la carte et les paramètres
|
||
|
||
Pour un ESP-01, choisir `Outils → Type de carte → Generic ESP8266 Module`, puis vérifier les paramètres suivants :
|
||
|
||
| Paramètre | Valeur recommandée pour ESP-01 |
|
||
|---|---|
|
||
| **Flash Size** | `1MB (FS:64KB OTA:~470KB)` pour les ESP-01 noirs ; `512KB` pour les anciens ESP-01 bleus |
|
||
| **Flash Mode** | `DOUT` (compatible avec la majorité des modules ; éviter `QIO` qui plante au boot sur certains lots) |
|
||
| **Flash Frequency** | `40 MHz` |
|
||
| **CPU Frequency** | `80 MHz` |
|
||
| **Upload Speed** | `115200` baud (vitesse fiable ; possible de monter à 230400 ou 460800 si l'adaptateur suit) |
|
||
| **Reset Method** | `dtr (aka nodemcu)` si l'adaptateur câble DTR ; sinon `no dtr (aka ck)` (reset manuel) |
|
||
| **Port** | port série de l'adaptateur (`/dev/ttyUSB0`, `COM3`…) |
|
||
|
||
En pratique, sur un ESP-01 récent acheté avec un adaptateur basique, seul le **port série** doit être ajusté. Les valeurs par défaut conviennent.
|
||
|
||
### 4. Premier téléversement
|
||
|
||
Un programme de test minimal pour valider la chaîne complète :
|
||
|
||
```cpp
|
||
void setup() {
|
||
Serial.begin(115200);
|
||
pinMode(LED_BUILTIN, OUTPUT);
|
||
}
|
||
|
||
void loop() {
|
||
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
|
||
Serial.println("Hello ESP-01");
|
||
delay(1000);
|
||
}
|
||
```
|
||
|
||
Avant de lancer le téléversement :
|
||
|
||
1. placer l'ESP-01 en **mode flash** (GPIO0 à GND au démarrage) ;
|
||
2. brancher l'adaptateur sur le PC ;
|
||
3. lancer le téléversement depuis l'IDE Arduino.
|
||
|
||
Si l'opération échoue avec un message du type `Failed to connect to ESP8266: Timed out waiting for packet header`, c'est que la mise en mode flash n'a pas été effective. Voir là encore l'article sur la [modification de l'adaptateur](https://varlog.a5l.fr/post/adaptateur-usb-vers-esp-01-activer-le-mode-programmation).
|
||
|
||
## Pour aller plus loin
|
||
|
||
- [Adaptateur USB vers ESP-01 : activer le mode programmation](https://varlog.a5l.fr/post/adaptateur-usb-vers-esp-01-activer-le-mode-programmation)
|
||
- [ESP8266 : commandes AT](https://varlog.a5l.fr/post/esp8266-commandes-at)
|
||
- [Réinitialisation d'un ESP-01 : restauration du firmware AT](https://varlog.a5l.fr/post/esp8266ex-restore-commandes-at)
|
||
```
|