# ESP-01 : présentation et premiers pas ![Image d'un ESP-01](20220128-103802.png) ## 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 ![Brochage de l'ESP-01](20220128-110155.png) 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 ![ESP-01 avec adaptateur USB CH340](20201207-233302.png) 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 : - la **datasheet AI-Thinker de l'ESP-01** (sommaire) — dimensions et brochage du module : disponible sur le mirroir du fabricant. ![Aperçu de la datasheet ESP-01](20201209-085932.png) Le fichier joint à cet article reprend la version condensée diffusée par AI-Thinker : [esp01.pdf](esp01.pdf) ## Configurer l'IDE Arduino ![Paramétrage de l'IDE Arduino](20201212-183454.png) 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) ```