ESP8266 (module ESP-12E)
⚡ L’essentiel en 60 secondes
- soc_mcu — ESP8266EX, single-core Tensilica L106 (Diamond Standard 106Micro) 32-bit RISC, 80 MHz default, up to 160 MHz (
- cpu — 1 core, ~80% of processing power left free for the user after the Wi-Fi RTOS stack (Espressif product page). No GPU.
- memory — 160 KB total RAM: 32 KB instruction RAM (iRAM), 32 KB instruction cache, 96 KB dRAM (80 KB usable for SDK+heap, 16 KB ROM-mapped) (
- storage — external QSPI flash, 512 KB–4 MB typical, up to 16 MB supported; ESP-12E ships with 4 MB ( No filesystem in silicon — use SPIFFS/LittleFS on flash.
- connectivity — Wi-Fi 802.11 b/g/n 2.4 GHz only (no Bluetooth, no Ethernet). On-chip TR switch, balun, LNA, PA and matching network ( ESP-12E: PCB-trace antenna + external antenna footprint.
- gpio — 17 GPIOs on the chip; fewer exposed on boards. Peripherals: SPI, I2C (software/bit-banged only), I2S with DMA, UART (plus TX-only UART on GPIO2), 10-bit SAR ADC on a single pin (ADC0/A0) ( - GPIO6–GPIO11 are wired to the flash chip — never use them ( - GPIO16: no interrupt, no PWM, no I2C; used for deep-sleep wake (wired to RST). - PWM is software (R-WS2812/ESP8266WiFi-based analogWrite), 1 effective channel family via ESP8266PWM.
- Sur cette fiche : 9 tutoriels · 10 codes
L’ESP-12E est un module de développement emblématique qui a joué un rôle fondateur dans la démocratisation de l’Internet des objets pour les makers et les ingénieurs. Il s’agit d’une carte reposant sur le circuit intégré ESP8266EX, conçu par la société Espressif Systems. Bien que la puce elle-même soit l’œuvre d’Espressif, le module ESP-12E est spécifiquement une conception tierce réalisée par Ai-Thinker, le même fabricant qui avait popularisé la famille ESP8266 dès 2014 avec le module ESP-01. Ce module est apparu autour de 2015, marquant une étape importante dans l’écosystème, bien que la date exacte de sa sortie reste incertaine faute de journal des modifications officiellement daté par le fabricant. Aujourd’hui, le statut de cette puce est celui d’un produit « legacy-active » : Espressif la maintient toujours au catalogue, mais elle est officiellement supplantée par la gamme plus récente et plus puissante des ESP32. Néanmoins, l’ESP-12E reste extrêmement populaire grâce à son prix très bas, généralement compris entre 2 et 3 dollars à l’unité, ce qui en fait une solution économique pour des projets simples nécessitant une connectivité sans fil.
Sur le plan architectural, le cœur de ce module est un microcontrôleur monocoque basé sur une architecture RISC 32 bits de type Tensilica L106. Cette puce fonctionne nativement à une fréquence de 80 MHz, une vitesse qui peut être portée jusqu’à 160 MHz selon la configuration. Il est crucial de comprendre que cette fréquence élevée est en partie consommée par la pile logicielle Wi-Fi en temps réel, laissant environ 80 % de la puissance de calcul disponible pour l’application utilisateur. La mémoire vive est limitée à 160 Ko au total, une quantité qui peut sembler faible comparée aux ordinateurs modernes, mais qui est gérée de manière spécifique : 32 Ko sont dédiés à la mémoire d’instruction rapide, 32 Ko servent de cache, et 96 Ko sont disponibles pour les données, dont 80 Ko utilisables pour le tas et le système. Pour le stockage persistant, l’ESP-12E intègre une mémoire flash externe de 4 Mo via une interface QSPI. Contrairement à certains systèmes modernes, il n’y a pas de système de fichiers gravé dans le silicium ; les développeurs doivent utiliser des systèmes de fichiers logiciels comme SPIFFS ou LittleFS pour stocker des données.
La connectivité est le point fort de cette carte, offrant une compatibilité Wi-Fi 802.11 b/g/n sur la bande de fréquence 2,4 GHz. Il est important de noter que cette carte ne dispose ni de Bluetooth, ni de port Ethernet. Pour simplifier la conception des circuits imprimés, Espressif a intégré directement dans la puce l’ensemble de la chaîne radiofréquence, incluant l’amplificateur de puissance, le faible bruit, le balun et les filtres. Cela permet au module ESP-12E de fonctionner avec très peu de composants externes, grâce à une antenne imprimée directement sur le circuit imprimé, avec la possibilité d’ajouter une antenne externe si nécessaire. La gestion de l’alimentation est un aspect critique à maîtriser. La carte fonctionne en 3,3 volts et n’est pas tolérante aux niveaux logiques de 5 volts, ce qui impose des précautions lors de l’interfaçage avec d’autres composants. De plus, lors des transmissions Wi-Fi, la puce peut générer des pics de courant très élevés, nécessitant une alimentation capable de fournir des pointes de 300 à 500 milliampères. Une alimentation insuffisante est la cause principale des réinitialisations aléatoires, souvent appelées « brownout », un problème classique pour les débutants.
Les entrées et sorties numériques, appelées GPIO, sont au nombre de 17 sur la puce, mais toutes ne sont pas exposées de manière égale sur les cartes de développement. Il existe plusieurs pièges à connaître pour éviter de bloquer le démarrage du module. Par exemple, les broches GPIO6 à GPIO11 sont physiquement connectées à la mémoire flash interne et ne doivent jamais être utilisées comme entrées ou sorties, sous peine de corrompre l’exécution du programme. De même, certaines broches comme GPIO0, GPIO2 et GPIO15 ont des états logiques spécifiques requis au moment de la mise sous tension pour que la carte démarre correctement. La broche GPIO16 est particulière car elle ne supporte pas les interruptions ni la modulation de largeur d’impulsion (PWM), mais elle joue un rôle clé dans la sortie du mode veille profonde, en étant reliée au bouton de réinitialisation. Le PWM, qui permet de simuler une tension analogique pour contrôler la luminosité d’une LED ou la vitesse d’un moteur, est ici réalisé par logiciel, ce qui consomme du temps processeur.
En ce qui concerne les entrées analogiques, l’ESP-12E dispose d’un unique convertisseur analogique-numérique (ADC) de 10 bits. Une subtilité technique importante est que sur le module nu, la plage de tension mesurable est de 0 à 1,0 volt, et non de 0 à 3,3 volts comme on pourrait le supposer. Les cartes de développement comme le NodeMCU intègrent souvent un diviseur de tension matériel pour adapter cette plage, mais sur le module ESP-12E seul, l’utilisateur doit ajouter son propre diviseur pour mesurer des tensions plus élevées. De plus, cette entrée analogique partage des ressources avec la partie radio, ce qui peut introduire du bruit dans les mesures. L’absence de contrôleur I2C matériel est une autre limitation connue ; la communication avec des capteurs I2C doit être simulée par logiciel, ce qui est moins efficace et peut devenir instable à des fréquences élevées si la charge Wi-Fi est importante.
Le logiciel est tout aussi important que le matériel. L’écosystème est riche et varié. La méthode la plus courante pour les makers est d’utiliser le cœur Arduino pour ESP8266, qui permet de programmer la carte en langage C++ simplifié. D’autres options incluent MicroPython, qui permet de programmer la carte en langage Python, ou le firmware NodeMCU basé sur le langage Lua. Pour les projets domotiques, des firmwares communautaires comme Tasmota ou ESPHome sont très populaires car ils transforment la carte en appareil intelligent prêt à l’emploi, contrôlable via des interfaces graphiques ou des systèmes comme Home Assistant, sans nécessiter de compilation de code. Le démarrage de la carte se fait via un sérial bootloader, généralement accessible par un pont USB-série comme le CP2102 ou le CH340 présent sur les cartes de développement.
En résumé, l’ESP-12E est une carte minimaliste mais puissante pour son époque. Elle a défini le standard des microcontrôleurs Wi-Fi à bas coût. Bien qu’elle soit limitée par son unique entrée analogique, l’absence de Bluetooth et sa mémoire restreinte, sa capacité à gérer le Wi-Fi et le calcul sur une seule puce, couplée à une communauté très active, en fait un outil pédagogique et pratique incontournable. Elle reste idéale pour des capteurs fonctionnant sur batterie grâce à son mode veille profonde qui consomme très peu d’énergie, ou pour des projets IoT simples où le coût et la taille sont des contraintes majeures. Cependant, les utilisateurs doivent être attentifs à la qualité de leur alimentation et aux spécificités des broches pour éviter les erreurs courantes de démarrage ou de mesure.


Schéma de brochage (pinout)

| Attr | Specs | vérifié |
|---|---|---|
soc_mcu | ESP8266EX, single-core Tensilica L106 (Diamond Standard 106Micro) 32-bit RISC, 80 MHz default, up to 160 MHz ( | ✔ |
cpu | 1 core, ~80% of processing power left free for the user after the Wi-Fi RTOS stack (Espressif product page). No GPU. | ? non vérifié |
memory | 160 KB total RAM: 32 KB instruction RAM (iRAM), 32 KB instruction cache, 96 KB dRAM (80 KB usable for SDK+heap, 16 KB ROM-mapped) ( | ✔ |
storage | external QSPI flash, 512 KB–4 MB typical, up to 16 MB supported; ESP-12E ships with 4 MB ( No filesystem in silicon — use SPIFFS/LittleFS on flash. | ✔ |
connectivity | Wi-Fi 802.11 b/g/n 2.4 GHz only (no Bluetooth, no Ethernet). On-chip TR switch, balun, LNA, PA and matching network ( ESP-12E: PCB-trace antenna + external antenna footprint. | ✔ |
gpio | 17 GPIOs on the chip; fewer exposed on boards. Peripherals: SPI, I2C (software/bit-banged only), I2S with DMA, UART (plus TX-only UART on GPIO2), 10-bit SAR ADC on a single pin (ADC0/A0) ( - GPIO6–GPIO11 are wired to the flash chip — never use them ( - GPIO16: no interrupt, no PWM, no I2C; used for deep-sleep wake (wired to RST). - PWM is software (R-WS2812/ESP8266WiFi-based analogWrite), 1 effective channel family via ESP8266PWM. | ✔ |
logic_level | 3.3 V only, VCC up to 3.6 V; NOT 5 V tolerant ( | ✔ |
power | 3.3 V DC, typically 3.0–3.6 V; deep-sleep mode in the tens of µA range, three power modes (active/sleep/deep-sleep) ( > | ✔ |
tx_current_caveat | Wi-Fi transmit bursts can pull sharp current peaks; designs need a 3.3 V rail able to supply ≥ 300–500 mA peaks or brownout resets occur (widely documented; see the ESP8266 Arduino core docs, | ✔ |
temperature | industrial range advertised by Espressif ("wide operating temperature range"); exact grade depends on module. > | ? non vérifié |
- Fabricant : SoC conçu par Espressif Systems (Shanghai) ; le module ESP-12E est une conception tierce d'Ai-Thinker, le même fournisseur qui a popularisé l'ESP8266 avec l'ESP-01 en août 2014 (source :
- SoC : ESP8266EX (révision « EX » ; les premières cartes utilisaient des variantes ESP8266/ESP8266EX).
- Année : puce lancée en 2014 ; l'ESP8266EX et les modules de la famille ESP-12 sont apparus vers 2015. >
- Statut : Actif/legacy-active. Espressif liste toujours l'ESP8266EX comme produit actuel ( mais il est officiellement remplacé par la famille ESP32 (
- Prix de lancement : l'ESP8266EX a été lancé comme puce Wi-Fi agressivement low-cost ; les modules ESP-12E se sont généralement vendus ≈ 2–3 US$ à l'unité (prix retail constaté, pas un prix public officiel). >
- Variantes : famille de modules ESP-12 / 12E / 12F (Ai-Thinker, principalement flash 4 Mo), modules ESP-WROOM-02/02D/02U/S2 d'Espressif ( et cartes de développement : NodeMCU v1/v2/v3 (ESP-12E), Wemos D1 Mini, ESP-01/01S (
+ Points forts
- Premier « Wi-Fi + MCU en une seule puce » ultra-bon marché — l'appareil qui a créé l'écosystème maker ESP moderne (
- Front-end RF entièrement intégré (PA, LNA, balun, filtres) → fonctionne avec presque aucun composant externe, empreinte PCB minuscule (
- Écosystème gigantesque de firmwares communautaires : Tasmota, ESPHome, ESP-Easy transforment relais/prises en objets IoT piratables (
- Deep sleep avec temporisateur RTC + réveil externe par GPIO16 — capteurs sur batterie viables (
- Limitations qui le définissent : une seule broche analogique, pas de Bluetooth, pas d'I2C matériel, monocœur, 80 Ko de heap — c'est l'ESP « minimal ».
− Points faibles
- Resets par détecteur de brownout : les alimentations 3,3 V faibles (broches FTDI de PC, LDO bas de gamme) provoquent les célèbres sorties garbage c0 3 3 3... / « cck » et les reboots brownout rd RST pendant l'émission Wi-Fi ; corriger avec une vraie alimentation 3,3 V ≥500 mA et une capacité de découplage (
- L'ADC fait 0–1,0 V sur la puce nue (pas 0–3,3 V) ; les cartes NodeMCU ajoutent un diviseur embarqué, les modules nus ESP-12E non — les mesures sont fausses si on suppose une pleine échelle de 3,3 V ; l'ADC est aussi non linéaire/bruyant et partage sa broche avec la circuiterie RF Wi-Fi (
- Surprises des niveaux des GPIO au boot : GPIO15 doit être LOW pour démarrer (l'ESP-12E a une pull-down 10k), GPIO0/GPIO2 doivent être HIGH ; charger GPIO1/3 (UART) ou GPIO2 au boot empêche le démarrage ; GPIO16/1/3/9/10 passent HIGH au boot — les relais glitchent (
- GPIO6–11 réservés à la flash : les utiliser corrompt l'exécution — un brick classique de débutant (
- Resets du watchdog : le watchdog logiciel (WDT) du core Arduino réinitialise tout code qui bloque la loop plus de ~6 s ; les opérations longues nécessitent yield/ESP.wdtFeed (
- Pas d'I2C matériel : l'I2C en bit-bang coûte du CPU et peine au-delà de 100 kHz avec une charge Wi-Fi riche en interruptions (
- Confusion sur la taille de flash : ESP-12E vs ESP-12 vs clones : flash 512 Ko vs 4 Mo vendue sous le même nom ; mauvaise sélection de carte → boot loops (
- Retour d'expérience expert expert — expert-microcontroleur
- Petit retour d'experience sur l'ESP-12E après quelques mois d'utilisation. Le prix reste imbattable pour du Wi-Fi embarque, mais attention aux pieges classiques. Les brownouts sont monnaie courante si votre alimentation 3.3V n'est pas solide : j'ai eu des reboots aléatoires (les fameux c0 3 3 3) av… — expert-microcontroleur
- Merci pour ces precisions ! Je bute justement sur un souci de boot loop. J'ai configure mon IDE pour le module ESP-12E, mais le code ne démarre pas. Je suspecte un problème de taille de flash car j'ai lu que certaines variantes 12E sont vendues avec seulement 512Ko alors que d'autres ont 4Mo. Comme… — maker_novice
- Pour l'ADC, oui, un diviseur externe est indispensable sur le module nu si ton signal depasse 1V. Pour la flash, verifie bien le marquage sur la puce, mais souvent le choix du board dans Arduino IDE suffit si tu as la bonne taille. Attention aussi au GPIO15 : il doit être a l'état bas (LOW) pour dé… — bricoleur_solitaire
Retours et projets de la communauté
- NodeMCU ESP-12e - Timing errors arduino.stackexchange.com
- ESP8266-12E unstable WiFi connection (Need feedback) electronics.stackexchange.com
- Self-built ESP-12E Module not connecting to PC forum.arduino.cc
- LAMEBOY - another ESP12 handheld hackaday.io
Contenu indisponible pour le moment.
- Resets par détecteur de brownout : les alimentations 3,3 V faibles (broches FTDI de PC, LDO bas de gamme) provoquent les célèbres sorties garbage c0 3 3 3... / « cck » et les reboots brownout rd RST pendant l'émission Wi-Fi ; corriger avec une vraie alimentation 3,3 V ≥500 mA et une capacité de découplage (
- L'ADC fait 0–1,0 V sur la puce nue (pas 0–3,3 V) ; les cartes NodeMCU ajoutent un diviseur embarqué, les modules nus ESP-12E non — les mesures sont fausses si on suppose une pleine échelle de 3,3 V ; l'ADC est aussi non linéaire/bruyant et partage sa broche avec la circuiterie RF Wi-Fi (
- Surprises des niveaux des GPIO au boot : GPIO15 doit être LOW pour démarrer (l'ESP-12E a une pull-down 10k), GPIO0/GPIO2 doivent être HIGH ; charger GPIO1/3 (UART) ou GPIO2 au boot empêche le démarrage ; GPIO16/1/3/9/10 passent HIGH au boot — les relais glitchent (
- GPIO6–11 réservés à la flash : les utiliser corrompt l'exécution — un brick classique de débutant (
- Resets du watchdog : le watchdog logiciel (WDT) du core Arduino réinitialise tout code qui bloque la loop plus de ~6 s ; les opérations longues nécessitent yield/ESP.wdtFeed (
- Pas d'I2C matériel : l'I2C en bit-bang coûte du CPU et peine au-delà de 100 kHz avec une charge Wi-Fi riche en interruptions (
- Confusion sur la taille de flash : ESP-12E vs ESP-12 vs clones : flash 512 Ko vs 4 Mo vendue sous le même nom ; mauvaise sélection de carte → boot loops (
- Faire clignoter une LED avec l'ESP8266-ESP-12E debutant Schéma : IMG-esp8266-esp-12e-debutant-1-esp8266-blink-led.svg — Carte ESP8266-ESP-12E alimentée en 3,3 V, LED avec résistance sur GPIO2, broches CH_PD et VCC câblées.
- Lire un bouton sur GPIO4 avec l'ESP8266-ESP-12E debutant Schéma : IMG-esp8266-esp-12e-debutant-2-esp8266-bouton-gpio4.svg — Module ESP8266-ESP-12E, bouton poussoir entre GPIO4 et la masse, résistance de pull-up interne activée, console UART0 sur GPIO1/GPIO3.
- Lire une tension avec l'ADC A0 et un diviseur de tension debutant Schéma : IMG-esp8266-esp-12e-debutant-3-esp8266-adc-a0-diviseur.svg — Module ESP8266-ESP-12E nu, diviseur de tension R1 20 kΩ / R2 10 kΩ ramenant une tension 0–3,3 V dans la plage 0–1,0 V de la broche A0.
- Se connecter au Wi-Fi en mode station et suivre le RSSI intermediaire Schéma : IMG-esp8266-esp-12e-intermediaire-1-esp8266-wifi-sta-rssi.svg — Module ESP8266-ESP-12E relié à un point d'accès Wi-Fi 2,4 GHz, antenne PCB, condensateur de découplage sur le rail 3,3 V, console série sur UART0.
- Serveur web de commande d'une LED en MicroPython intermediaire Schéma : IMG-esp8266-esp-12e-intermediaire-2-esp8266-serveur-web-led.svg — Module ESP-12E exécutant MicroPython, LED embarquée sur GPIO2 (active-LOW), connecté au réseau local, navigateur d'un ordinateur ou smartphone sur le même réseau.
- Publier et s'abonner en MQTT avec PubSubClient intermediaire Schéma : IMG-esp8266-esp-12e-intermediaire-3-esp8266-mqtt-pubsub.svg — Module ESP8266-ESP-12E connecté via Wi-Fi à un broker MQTT sur le réseau local, échanges sur les sujets esp12e/rssi et esp12e/led, LED sur GPIO2.
- Deep sleep sur batterie avec réveil par GPIO16 avance Schéma : IMG-esp8266-esp-12e-avance-1-esp8266-deep-sleep-batterie.svg — Module ESP-12E alimenté par régulateur LDO sur batterie LiPo, fil GPIO16 relié à RST pour le réveil, LED de test déconnectée, bouton de réveil externe optionnel.
- Programmation OTA : téléverser le code par Wi-Fi avance Schéma : IMG-esp8266-esp-12e-avance-2-esp8266-ota-arduino.svg — Module ESP8266-ESP-12E flashé une première fois par câble série puis mis à jour par Wi-Fi depuis un ordinateur, routeur en point d'accès, flash 4 Mo du module annotée.
- Gérer la flash 4 Mo : partitions et LittleFS avance Schéma : IMG-esp8266-esp-12e-avance-3-esp8266-partitions-littlefs.svg — Répartition de la flash 4 Mo d'un module ESP-12E : bootloader, deux slots de sketch OTA, NVS et partition LittleFS, avec le câble série branché pour le premier flashage.
Bibliothèque de code — exemples écrits pour cette carte
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht11.inoArduinoluxmetre.inoArduinoserveur-web.inoArduinosommeil-profond.inoArduinoservo.inoArduinows2812.inoArduinocapteur_web.pyMicroPython
Exemples et dépôts trouvés en ligne
- esp8266/Arduino github.com
- arendst/Tasmota github.com
- esphome/esphome github.com