L’ESP8266EX est le micro-contrôleur phare du fabricant chinois Espressif commercialisé depuis 2014. Il est passé en quelques années d’un simple projet de module WiFi pour Arduino pour quelques euros à une carte de développement à part entière. En 2020, Espressif décline son micro-contrôleur en 4 versions différentes estampillées ESP8266EX.
Guide actualisé le 18 mai 2020
L’ESP8266EX dispose plusieurs entrées/sorties (GPIO), une liaison WiFi, un mode économie d’énergie (Sleep Mode) et peut se programmer indifféremment à l’aide de l’IDE Arduino en MicroPython. Le langage Lua est toujours disponible mais tombe peu à peu en désuétude faute d’une communauté suffisante.
Sommaire
- 1 Les SoC ESP8266EX disponibles en 2020
- 2 Modules à souder
- 3 Comment alimenter une carte de développement ESP8266EX
- 4 Boitier pour piles AA avec connecteur DC2.1
- 5 Shield pour batterie 18650, plusieurs sorties 3.3V ou 5V, interrupteur, contrôleur de charge
- 6 Power bank (solaire) Waterproof (résistante aux projections d’eau)
- 7 Alimentation pour breadboard 3.3V ou 5V
- 8 Alimentation 3.3V à l’aide d’un régulateur de tension LD1117V33
- 9 Toutes les solutions pour programmer un module ESP8266EX
- 10 Installer un firmware
- 11 Les anciens modèles d’ESP8266 obsolètes
- 12 Les anciens modèles (à éviter) pour vos projets DIY
Les SoC ESP8266EX disponibles en 2020
Tout comme l’ESP32, Espressif a revu complètement sa gamme de module ESP8266. Pour l’occasion la désignation évolue. Tous les modules portent la même référence ESP82EX ce qui complique le choix.
L’ESP8266EX est un SoC (System On Chip) construit sur la base d’un processeur RISC 32-bits Tensilica L106 produit par le fondeur Taïwanais TSMC. Le nouvelle génération est équipée de 2MB de mémoire flash contre 4MB (voir 16MB) pour la génération précédente.
Pour les applications courantes, Espressif recommande les modèles ESP-WROOM-02D et ESP-WROOM-02U.
Voici les caractéristiques communes à tous les modules
- Processeur mono-cœur cadencé à 160 MHz
- Courant de veille inférieur à 20 μA
- WiFi 802.11 b/g/n à 2.4 GHz
- L’ESP8266EX supporte les entrées/sorties UART, GPIO, I2C, I2S, SDIO, PWM, ADC et SPI
- Certifié CE et FCC
Modules à souder
Il est possible d’acheter les modules nu à l’unité ou en volume
ESP-WROOM-02D
ESP-WROOM-02U
Banc de test sans soudure pour le développement
Comment alimenter une carte de développement ESP8266EX
Les entrées numériques des modules ESP8266 et ESP8266EX doivent être alimentés avec une tension n’excédant pas 3.3 Volts. Aucune protection n’existe. Les cartes de développement sont équipées d’un régulateur / réducteur de tension pour l’alimentation du module. Toutes les cartes de développement équipées d’un connecteur micro-USB pour le téléchargement et la mise au point du programme permettent également d’alimenter le module.
Voici plusieurs solutions pour alimenter vos circuits.
Batterie LiPo
Pour les cartes équipées d’un connecteur au standard JST PH2 (2 mm), le plus facile est d’utiliser une batterie LiPo (Lithium Polymère). Généralement, les cartes qui embarquent un connecteur pour batterie LiPo intègrent également un circuit qui permet de charger la batterie via le connecteur micro-USB sans interrompre le fonctionnement du MCU.
TTGO T8 équipée d’un connecteur au standard JST PH2 pour batterie LiPo
Choisissez une batterie délivrant 3,7V au maximum pour éviter de dépasser la tension admissible par la carte.
Boitier pour piles AA
C’est la solution la plus économique pour alimenter vos projets. Certaines cartes de développement à base d’ESP8266 ou ESP32 sont équipées d’un connecteur au standard JST PH2.0mm qui permet de brancher directement une alimentation. Il suffira d’acheter un connecteur JST PH2.0 pour adapter un boitier de piles AA. Il suffit de multiplier le nombre de piles par 1,5V pour connaitre la tension délivrée. Par exemple avec 3 piles, le boitier délivrera une tension de 4,5V.
Si votre carte de développement ne dispose pas de connecteur d’alimentation, utilisez la broche VCC. Attention à ne pas dépasser la tension maximale admissible au risque de détériorer la carte.
Boitier pour piles AA avec connecteur DC2.1
Pour les ordinateurs cartes ou les Arduino qui disposent d’un connecteur au standard DC2.1, il est très facile d’alimenter le projet avec un bloc pour 6 piles AA qui délivre une tension de 9V.
Shield pour batterie 18650, plusieurs sorties 3.3V ou 5V, interrupteur, contrôleur de charge
Il existe des cartes d’alimentation dédiées aux batteries 18650 de grande capacité. Ces shields disposent d’un connecteur micro-ISB ainsi que de plusieurs broches pour souder directement l’alimentation 5V ou 3.3V. Cerise sur le gateau, il dispose d’un circuit de recharge qu’on pourra par exemple alimenter par un panneau solaire !
Il existe deux versions. Pour une batterie
Double batterie permettant de délivrer jusqu’à 3A, ce qui est largement suffisant pour alimenter un Raspberry Pi 3 durant plusieurs heures pour quelques euros !
Power bank (solaire) Waterproof (résistante aux projections d’eau)
Bien plus simple que de fabriquer son propre système de recharge solaire, certaines Power Bank sont certifiées Waterproof. Attention, ça ne veut pas dire qu’on peut la laisser sous un pluie battante mais elle pourra résister à l’humidité et quelques gouttes d’eau. Attention aux capacités alléchantes de certains marchands. Au delà de 20000mAh, il faudra plus d’une journée pour obtenir une recharge complète…et ce en plein soleil.
Alimentation pour breadboard 3.3V ou 5V
Si vous avez de nombreux projets, acheter une alimentation pour breadboard (moins de 2€) pouvant délivrer 3.3V ou 5V n’est pas une dépense inutile.
Alimentation 3.3V à l’aide d’un régulateur de tension LD1117V33
Vous pouvez utiliser une ancienne alimentation d’un smartphone. Pour cela vous aurez besoin d’un adaptateur jack muni d’un bornier à vis et d’un régulateur de tension (LD1117V33 par exemple) permettant de délivrer les 3.3 Volts nécessaires à l’ESP8266. Attention à ne pas dépasser la tension d’alimentation préconisée (documentation technique). Enfin, tenez compte dans la conception de vos projets que le LD1117 chauffe (beaucoup). Vous pouvez également ajouter un condensateur 10µF pour obtenir une alimentation plus stable.
Pour les projets qui fonctionnent sur batterie, il faut faire la chasse au dépenses énergétiques. C’est la connexion WiFi qui consomme le plus d’énergie. Le mieux est donc d’ouvrir la connexion uniquement lorsque vous voulez envoyer des données sur un serveur.
Si votre objet n’a pas besoin d’être piloté à distance (commander le moteur d’ouverture de volet par exemple), il est préférable de mettre en veille en activant le mode deep sleep. Lisez ce tutoriel pour en savoir plus.
ESP8266, test du mode Deep Sleep, réveil (wake up) avec un détecteur de mouvement PIR
Certains capteurs (détection de polluants) sont très consommateur en énergie. En effet, pour détecter la présence de polluants dans l’atmosphère, le capteur doit être chauffé en permanence à une certaine température. Un fonctionnement sur batterie n’est pas une bonne solution pour ce type d’application.
Les capteurs de la série MQ doivent être chauffés pour détecter la présence de polluants ce qui n’est pas compatible avec un fonctionnement sur batterie
Toutes les solutions pour programmer un module ESP8266EX
Matériel nécessaire
La plupart des cartes de développement sont généralement équipées d’un connecteur de type micro-USB. Dans ce cas, un simple câble micro-usb sera suffisant.
Pour les autres cartes (plus compactes), un adaptateur Série/USB, appelé module FTDI que l’on peut se procurer pour 2.50€ environ sera nécessaire.
Attention toutefois. Certains câble FTDI ne sont pas en mesure délivrer les 300mA nécessaires au téléversement.
ESP Easy : aucune programmation, c’est encore plus simple
ESP Easy est un firmware qui permet de programmer, ou plutôt de configurer le module ESP sur lequel il est installé. Il existe deux versions. La version stable (R120) et la version Mega (v2) en cours de développement.
Avec du code Arduino
Si vous débutez la programmation Arduino ou que vous découvrez les modules ESP8266, c’est sans doute la solution la plus simple pour débuter. La librairie ESP8266Wifi est maintenant très aboutie et simplifie grandement la programmation. C’est un argument qui penche également en faveur de l’IDE Arduino.
Correspondance des broches entre Arduino et ESP8266 (NodeMCU)
L’ESP8266 se programme exactement comme un Arduino, il faudra juste rechercher la correspondance des broches pour votre carte. Voici par exemple la correspondance des broches d’une Wemos D1 Mini.
Correspondance des broches de la Wemos D1 Mini. Source : http://www.wemos.cc
Le projet de la librairie ESP8266Wifi se trouve sur github ici. Elle propose les fonctions suivantes :
- Connexion à un point d’accès
- Connexion à un serveur (un Broker MQTT par exemple)
- Envoi / réception de messages à un serveur
- Re-connexion automatique
Messages d’erreurs et remèdes rencontrés régulièrement
Voici une liste d’erreurs et de remèdes (non exhaustive) que vous pouvez rencontrer lorsque vous programmer un ESP8266 à l’aide de l’IDE Arduino.
Message | Causes possibles | Remèdes possibles |
warning: espcomm_sync failed error: espcomm_open failed error: espcomm_upload_mem failed |
L’ESP n’est pas en Flashing Mode
Impossible de communiquer via la liaison Série |
Choisir ArduinoISP comme programmateur
Vérifier le branchement de la liaison Série (inverser TX/RX) Le GPIO0 est-il bien au GND ? Votre alimentation trop faible. Elle doit délivrer au moins 300mA lors du flashage du firmware Ajoutez une résistance de rappel sur le GPIO0 ou relier le GND de l’alimentation 3.3V au GND du module FTDI Débranchez/remettez sous tension l’ESP8266 Débrancher/rebrancher sur un autre port USB votre module FTDI Redémarrer l’ordinateur (si le module FTDI est toujours introuvable) |
En Lua, firmware NodeMCU (très peu utilisé)
NodeMCU est un firmware qui permet de programmer les modules ESP8266 dans un langage appelé Lua. Vous pouvez consulter le projet open-source NodeMCU ici. Il existe deux versions de NodeMCU :
- NodeMCU v0.9 pour les modules ESP-12
- NodeMCU v1.0 pour les modules ESP-12E
Pour programmer en Lua, le plus simple est d’utiliser ESPlorer présenté (rapidement) dans cet article.
Face à l’IDE Arduino et PlatformIO et le nombre impressionnant de librairie, Le Lua ne peut pas rivaliser.
Installer un firmware
Il est très simple de changer le firmware d’un ESP8266. Sachez que le firmware (NodeMCU, ESP Easy) est effacé dès que l’on procède à un téléversement depuis l’IDE Arduino. Voici plusieurs articles qui traitent du sujet.
Les anciens modèles d’ESP8266 obsolètes
L’ESP8266 est développé par la société Chinoise Espressif. Sorti en octobre 2014, l’ESP8266 a tout de suite suscité un très grand engouement de la communauté. Le projet est soutenu par une large communauté que vous pouvez suivre ici. Ce module ne ce contente pas d’offrir une connexion Wifi aux projets Arduino, il dispose de ses propres entrées/sorties (GPIO) dont le nombre dépend du modèle.
Jusqu’à fin 2018, il existait 18 versions de l’ESP8266 dont voici les principales caractéristiques.
Attention. Les modules ESP8266 fonctionnent avec une tension de 3.3 Volts qu’il est dangereux de dépasser. Certaines cartes qui embarquent un régulateur de tension qui protège le module ESP8266 et permet d’utiliser une alimentation 5Volts (généralement entre 3.3 et 6.2 Volts).
Modèle | Photo | Certifications | Antenne interne
Antenne externe |
Dimensions
(mm) |
Broches (GPIO) | Fiche technique |
ESP-01 | Non approuvée FCC et CE | Gravée sur le PCB
Non |
14.3 x 24.8 | 8 | ||
ESP-02 | ? | Non
Oui |
14.2 x 14.2 | 8 | ||
ESP-03 | ? | Céramique
Non |
17.3 x 12.1 | 14 | ||
ESP-04 | ? | ?
? |
14.7 x 12.1 | 14 | ||
ESP-05 | ? | Non
Oui |
14.2 x 14.2 | 5 | ||
ESP-06 | Non approuvée FCC et CE | ?
? |
? | 12+GND | ||
ESP-07 | Non approuvée FCC et CE | Céramique
Oui |
20.0 x 16.0 | 16 | ||
ESP-08 | Non approuvée FCC et CE | Non
Non |
17.0 x 16.0 | 14 | ||
ESP-08 New | ? | Non
Non |
18.0 x 16.0 | 16 | ||
ESP-09 | ? | Non
Non |
10.0 x 10.0 | 12+GND | ||
ESP-10 | ? | Non
Non |
14.2 x 10.0 | 5 | ||
ESP-11 | ? | Céramique
Non |
17.3 x 12.1 | 8 | ||
ESP-12 | Certifié CE (n°BCTC-141212468)
Certifié FCC (n°2ADUIESP-12) |
Gravée sur le PCB
Non |
24.0 x 16.0 | 16 | ||
ESP-12-E/Q | Probablement les mêmes certifications que l’ESP-12 | Gravée sur le PCB
Non |
24.0 x 16.0 | 22 | ||
ESP-13 | ? | Gravée sur le PCB
Non |
? | 18 | ||
ESP-14 | Gravée sur le PCB
Non |
24.3 x 16.2 | 22 | |||
ESP-WROOM-02 | CE
FCC |
Gravée sur le PCB
Non |
20 x 18 x 3 | 18 | Consulter | |
WT8266-S1 | Certifié CE (n°BCTC-150809775)
Certifié FCC (n°2AFOSWT8266) |
Gravée sur le PCB
Non |
15.0 x 18.6 | 18 | Consulter |
Retrouvez tous les modèles disponibles à cette adresse (en anglais). Sources des images : esp8266.com.
Les anciens modèles (à éviter) pour vos projets DIY
On trouve encore des cartes de développement équipées de l’ancienne génération de module ESP8266. Vous pouvez toujours en trouver chez de nombreux marchands et vendeurs en direct de Chine.
Aucune crainte à avoir, tous les programmes que vous développerez pourront fonctionner sur la nouvelle génération ESP8266EX.
Parmi tous les modèles de l’ancienne génération, il y en a très peu qui sont adaptés à un usage pour des projets DIY (sans bricoler les brochages), c’est le cas de l’ESP-01 et de l’ESP-05.
Tous les autres modèles sont assemblés sous la forme d’un PCB à souder (SMD). Vous les trouverez le plus souvent déjà intégrés à une carte Arduino mais il existe également des platines d’adaptation au pas 2.54mm pour breadboard sur laquelle on viendra souder un module ESP8266 (ESP-07, ESP-08 ou ESP-12). Le modèle le plus populaire est l’ESP-12E (ou E/Q).
ESP-01 avec 512Mo de mémoire flash
L’ESP-01 est probablement le module le plus connu (et le plus vendu).Ce module très compact, pas plus grand qu’une pièce de 2€ (14,3 x 24,8mm), dispose de 512ko de mémoire flash, d’une antenne imprimée sur le PCB ainsi que 2 broches GPIO. C’est le module est idéal pour ajouter une connexion WiFi à un projet Arduino pour moins de 3€.
L’ESP-01 n’est pas directement utilisable sur une breadboard. Second point négatif, il n’est pas certifié CE ou FCC. J’ai constaté quelques perturbations du WiFi des appareils voisins lors de la mise sous tension. C’est peut être du à mon matériel.
ESP-05
Contrairement à l’ESP-01, l’ESP-05 ne possède aucune broche GPIO. Très compact (14 x 14 mm). L’ESP-05 possède 4 broches au pas de 2.54mm (donc compatible avec une breadboard) 3.3V, GND, RX et TX. Vous pourrez également trouver certains modèles avec une 5ème broche de Reset. Il sera parfait pour ajouter une connexion WiFi à un projet Arduino pour 3,25€ environ.
Faites attention au moment de l’achat car tous les modèles vendus ne semblent pas être livrés avec le même firmware.
ESP-12E
L’ESP-12E est une version améliorée de l’ESP-12. L’ESP-12E possède 11 broches GPIO ainsi qu’un convertisseur analogique/numérique (ADC) avec une résolution de 10 bits.
C’est le module employé par presque toutes les cartes NodeMCU. Compacte et polyvalente, c’est la carte idéale pour réaliser des projets d’objets connectés. Elle est maintenant remplacée par la version 12F ou ESP8266EX.
Avez-vous aimé cet article ?