#Guide, quel module ESP8266 choisir, alimentation, programmer en C++ depuis l’Arduino IDE, MicroPython, ESP Easy

L’ESP8266 est sorti en 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. L’ESP8266 est un véritable Arduino Killer. Il possède 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 Lua (firmware NodeMCU), en MicroPython. Encore mieux, avec le firmware ESP Easy, vous n’avez même pas besoin de savoir programmer pour développer vos objets connectés et les relier à un serveur domotique DIY !

Les modèles ESP8266EX 2018

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. Espressif a d’abord développé une très grande famille de circuits. En 2018, il ne reste plus que trois modèles d’ESP8266 qui est maintenant dénommé ESP8266EX. Il n’existe plus que quatre versions du module. La différence entre les modules se situe essentiellement au niveau de l’antenne.

Principales caractéristiques de l’ESP8266EX

  • Processeur mono-cœur cadencé à 160 MHz
  • La sortie de +19,5 dBm à l’antenne assure une bonne portée physique
  • Le courant de veille est 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
Module Description SoC Dimensions (mm) Broches Flash (MB)
esp-wroom-02-esp8266ex-2018

 L’ESP-WROOM-02 est le module de base. L’antenne WiFi est gravée sur le PCB is based on ESP8266EX, measuring as small a size as 18x20x3 mm. 

ESP8266EX 18x20x3 18 2
esp-wroom-02d-esp8266ex-2018
L’ESP-WROOM-02D est construit autour du ESP8266EX. L‘antenne gravée sur le PCB est plus performante Documentation technique ESP8266EX 18x20x3.2 18 2
esp-wroom-02u-esp8266ex-2018
L’ESP-WROOM-02U est une version plus compact (18 x 14,3 x 3,2 mm). Il ne dispose pas d’antenne. A la place, il embarque un connecteur au format U.FL (IPEX) sur lequel on viendra brancher une antenne externe. Documentation technique ESP8266EX 18Xx14.3×3.2 18 2
L’ESP-WROOM-S2 est un modèle spécifique qui peut travaille comme un esclave SDIO/SPI. Le bus SPI a été optimisé pour atteindre une vitesse de 8 MbpsDocumentation technique ESP8266EX 16x23x3 20 2

Les anciens modèles d’ESP8266

Avant 2018, il existait environ 18 versions de l’ESP8266 dont voici les principales caractéristiques. Je préfère laisser cette partie de l’article pour mémoire car on trouve toujours ces modules en vente. Le plus souvent, ce sont les modules ESP-12E ou ESP-12F qui sont encore commercialisés. On trouve toujours L’ESP-01 à la vente, mais il commence doucement à disparaitre des rayons. Il n’y a plus qu’une seule page de résultats sur AliExpress.

Attention. Les modules ESP8266 fonctionnent avec une tension de 3.3 Volts qu’il est dangereux de dépasser. Certaines cartes embarquent un régulateur de tension qui protège le module ESP8266 et permet d’utiliser une alimentation 5V (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 esp8266 esp-01  Non approuvée FCC et CE Gravée sur le PCB

Non

14.3 x 24.8 8
ESP-02 esp8266 esp-02  ? Non

Oui

14.2 x 14.2 8
ESP-03 esp8266 esp-03 ? Céramique

Non

17.3 x 12.1 14
ESP-04 esp8266 esp-04 ?  ?

?

14.7 x 12.1 14
ESP-05 esp8266 esp-05  ? Non

Oui

14.2 x 14.2 5
ESP-06 esp8266 esp-06  Non approuvée FCC et CE ?

?

? 12+GND
ESP-07 esp8266 esp-07 Non approuvée FCC et CE Céramique

Oui

20.0 x 16.0 16
ESP-08 esp8266 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 esp8266 esp-09 ? Non

Non

 10.0 x 10.0 12+GND
ESP-10 esp8266 esp-10 ? Non

Non

 14.2 x 10.0 5
ESP-11 esp8266 esp-11  ? Céramique

Non

 17.3 x 12.1 8
ESP-12 esp8266 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 esp8266 esp-12-eq Probablement les mêmes certifications que l’ESP-12 Gravée sur le PCB

Non

 24.0 x 16.0 22
ESP-13 esp8266 esp-13 ? Gravée sur le PCB

Non

 ? 18
ESP-14 esp8266 esp-14 Gravée sur le PCB

Non

 24.3 x 16.2 22
ESP-WROOM-02 esp8266 WROOM-02 CE

FCC

Gravée sur le PCB

Non

 20 x 18 x 3 18  Consulter
WT8266-S1 esp8266 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.

Quel modèle d’ESP8266EX choisir pour vos projets DIY en 2018

Espressif a simplifié sa gamme et par conséquent le choix. Les quatre versions embarquent toute le même module ESP8266EX. Terminé les versions 4MB ou 16MB que la Wemos d1 mini Pro n’a jamais pu exploiter d’ailleurs. Maintenant, on devra se contenter de 2MB. Rassurez vous, c’est bien suffisant pour la plupart des applications. La mémoire de l’ESP8266 n’a pas pour vocation de stocker des données, on pourra toujours utiliser un lecteur de carte SD pour ça.

Pour le moment, les cartes de développement à base d’ESP8266EX sont encore inexistante. On trouve quelques modules sur AliExpress comme celui-ci avec la mention Special Client Only. Il faudra donc encore attendre quelques mois, le temps que les fabricants utilisent leurs stocks d’anciens modèles.

Si vous avez l’équipement nécessaire et les compétences, vous pouvez acheter directement la puce dans un boitier au standard QFN32.

Quel modèle d’ancienne génération choisir ?

adaptateur adaptor esp8266 esp-07 esp-12 esp-12eMême si Espressif a simplifié toute la gamme ESP8266 en 2018, on trouve encore en vente les anciens modules. Avant 2018, il existait de très nombreuses versions de l’ESP8266 (environ 18). Cependant, parmi tous ces modèles, 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 (obsolète)

esp8266 esp-01L’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 (obsolète)

esp8266 esp-05Contrairement à 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 ou ESP-12F (remplacé par ESP8266EX)

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.

Pour débuter, je vous conseille la WeMos d1 Mini. Elle est parfaitement prise en charge par l’IDE Arduino. Inutile de mettre la carte en mode Bootloader à chaque fois que vous voulez téléverser le programme depuis l’IDE Arduino

Comment alimenter un module ESP8266

Certains modules ESP8266 doivent être alimentés en 3.3 Volts et aucune protection n’existe. Voici plusieurs solutions pour alimenter vos modules.

Autre point important à connaitre. Si vous devez réinstaller le firmware (NodeMCU ou ESPEasy par exemple), l’alimentation électrique doit pouvoir délivrer 300mA durant le flashage du firmware. Certains câbles FTDI ne peuvent pas délivrer une puissance suffisante. Dans ce cas, une alimentation externe sera nécessaire.

Powerbank solaire

L’ESP8266 est idéal pour fabriquer des objets connectés qui fonctionnent sur batterie. En veille (sleep mode), la consommation électrique ne dépasse pas 20 μA (sur les nouveaux modèles ESP-WROOM-02 / ESP8266EX du moins). Il est possible de fabriquer son propre circuit de d’alimentation solaire mais il existe une solution encore plus pratique, la Powerbank solaire. Placez la Powerbank dans un lieu fortement éclairé, idéalement en plein soleil pour assurer une charge complète en journée.

Quelques conseils pour économiser la batterie et assurer un fonctionnement continu de vos objets :

  • Activez le mode Deep Sleep (mise en veille) dans vos programmes ESP8266 et ESP32. La consommation électrique sera limitée à 20 μA.
  • Limitez l’envoi de données au strict minimum. Utilisez une technologie optimisée pour le transfert rapide et léger de données. Par exemple MQTT ou le Websocket
  • Limitez la fréquence d’envoi des données vers un serveur (local ou distant). La connexion WiFi est très gourmande en énergie.
  • Optimisez votre code en limitant les calculs consommateurs d’énergie.
  • Utilisez les interruptions pour réveiller le module lorsqu’un actionneur est appuyé (bouton de sonnette,
  • Utilisez des capteurs peu gourmand en énergie. N’utilisez pas de capteur physico-chimique de la série MQx (par exemple le MQ2 ou MQ135). Ils doivent être chaud (en permanence) pour que la mesure de polluant soit possible. Utilisez plutôt des capteurs auto-calibrés tels que le MH-Z19 pour mesurer la teneur en CO2.
  • Si votre projet utilise des actionneurs énergivore (servomoteur, moteur Nema…), optez pour une très grosse Powerbank (au moins 20000mAh)
  • La performance des batteries diminue lorsque la température baisse (encore plus en dessous de 0°C), isolez la Powerbank pour protéger la batterie.
  • En dessous de 0°C, les électrolytes (contenus dans les condensateurs par exemple) peuvent geler. Vos projets risquent de ne plus fonctionner correctement. Ce n’est pas forcément la Powerbank qui est déchargée.

Lisez ce tutoriel pour apprendre comment mesurer la tension d’une batterie à l’aide d’un Arduino ou d’un ESP8266.

La sélection complète de Powerbank solaire.

Boitier pour piles AA

L’ESP est idéal pour développer des projets d’objets connectés. La première solution pour alimenter vos projets est d’utiliser un boitier pour piles AA. En fonction du nombre de piles 1,5V, la tension délivrée par le boitier d’alimentation sera plus ou moins élevé. Par exemple avec 4 piles AA de 1.5V, on pourra alimenter le module en 6V. Au delà, par exemple avec un boitier de 6 piles AA pouvant délivrer 9V, il faudra ajouter un régulateur de tension (par exemple un LD1117V33 détaillé plus bas).

Batterie LiPo 3,7V

wemos d1 mini shield batterie lipoCertaines cartes de développement sont équipées d’un connecteur JST pour batterie LiPo. C’est par exemple le cas de l’Olimexino-85S. WeMos propose un shield pour batterie LiPo équipé d’un connecteur JSH XH2-2.54mm qui permet d’alimenter et de recharger la batterie simultanément.

Caractéristiques du shield battery pour Wemos d1 mini

  • Tension de charge : nominale 5V (max. 10V)
  • Courant de charge : 0,5A par défaut. Souder le jumper J1 pour augmenter à 1A (attention, vérifier la compatibilité avec la batterie avant toute modification)
  • Batterie Lithium supportées : 3,3 à 4,2V
  • Convertisseur de tension jusqu’à 5V (1A max.)
  • Connecteur de batterie au format JST XH2-2.54mm
  • Connecteur micro-USB (OTG) pour recharge (5V, max. 10V)
  • Led verte : allumée lorsque la charge est terminée
  • Led rouge : allumée durant la recharge
  • Jumper J1 : permet d’augmenter le courant de charge de 0.5A à 1A

Optez pour une batterie d’au moins 850mAh pour un projet de sonde connectée qui publie sur un serveur en WiFi ses mesures toutes les heures.

Sélection complète de batteries LiPo

Shield pour batterie 18650

Vendu moins de 2€ sur AliExpress ou eBay, ce shield permet d’alimenter très facilement vos projets d’objets connectés et même un Raspberry Pi à l’aide d’une batterie LiFePO4 18650. La carte est équipée d’un circuit permettant de recharger la batterie (attention à bien respecter la polarité) même en cours de fonctionnement à l’aide d’un connecteur micro-USB. Il est possible d’alimenter plusieurs cartes simultanément grâce à 3 sortie 5V et 3 sortie 3.3V (broches à souder) ainsi qu’un connecteur USB classique.  Voici les caractéristiques de la carte :

  • Alimentation électrique : 5V à 8V via un port micro USB jusqu’à 0.5A
  • Puissance de sortie
    • 5V via le port USB de type A
    • 3 connecteurs permettant de délivrer 3V jusqu’à 1A
    • 3 connecteurs permettant de délivrer 5V jusqu’à 2A
  • Divers : 1 sortie USB, LED pour l’état de charge (vert = batterie chargée, rouge = en charge)
  • Protection de la batterie (surcharge ou décharge excessive). Attention, pas de protection en cas d’inversion de polarité
  • Dimensions : 98 x 29 mm

Sélection complète de shield 18650

En fonction de votre projet et de la fréquence d’envoi des données, choisissez une batterie de grande capacité.

Sélection complète de batteries 18650

3.3V 5V arduino power supply breadboard alimentation électrique

Alimentation pour breadboard 3.3V ou 5V

Durant toute la phase de développement et de mise au point de votre projet, il est très pratique d’utiliser une breadboard avec une alimentation 5V / 3.3V. On trouve des cartes d’alimentation pour breadboard à moins de 2€.

 

Sélection complète d’alimentation pour breadboard

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.

alimentation 3.3V breadboard arduino LD1117 jack

Sélection complète de régulateur de tension LD1117V33

Comment programmer un module ESP8266

Câble USB ou module FTDI ?

module ftdiLe modules ESP-12 (ou ESP-12E) sont généralement équipé d’un port USB. Un simple câble micro-usb sera suffisant. Certaines cartes doivent être programmées à l’aide d’un adaptateur Série/USB, appelé module FTDI que l’on peut se procurer pour 2.50€ environ.

Attention toutefois. Certains câbles FTDI ne sont pas en mesure délivrer les 300mA nécessaires au téléversement.

Sélection complète de modules FTDI

ESP Easy : aucune programmation nécessaire

ESP Easy est un firmware qui permet de programmer, ou plutôt de configurer le module ESP sur lequel il est installé. Pour en savoir plus, lisez cet article de présentation qui explique comment installer le firmware et réaliser une petite sonde de température ensuite intégrée à Jeedom.

esp easy configuration device dht22

Pour aller plus loin, voici les derniers tutoriels publiés sur le firmware ESP Easy

Développer en C++ avec l’IDE 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. Lisez ce tutoriel pour bien démarrer avec les modules ESP8266 et l’IDE Arduino (installation des librairies, GPIO, Web Serveur, Client Web).

esp8266 web server spiffs bootstrap dht22 bmp180 google charts

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 Pins GPIO WeMos D1 mini

Correspondance des broches de la Wemos D1 Mini. Source : http://www.wemos.cc

Librairies ESP8266Wifi

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

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
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 (NodeMCU)

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.

En MicroPython

Si vous avez déjà quelques notions en Python, vous pouvez installer le firmware MicroPython. C’est un portage du langage Python pour les modules ESP8266. La syntaxe est exactement la même. On retrouve toutes les fonctions de base du langage ainsi que des fonctions spécifiques aux modules ESP8266. Gestion du WiFi, du GPIO…

Voici une série de tutoriels pour débuter en MicroPython

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

 

Historique des modifications :

[16 mars 2018] ajout des modèles ESP8266EX (ESP-WROOM-02) 2018, les anciens modèles seront obsolète courant 2018. Ajout de l’alimentation solaire par Power Bank. Merci Migui

[15 mars 2018] ré-écriture de l’article avec ajout de solution d’alimentation, programmation en MicroPython

Print Friendly, PDF & Email

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous dés inscrire à tout moment.

Comparateur de prix

Bons plans

Les offres suivantes se terminent bientôt. Utilisez le coupon indiqué pour profiter du prix promo

Projets DIY - Domotique et objets connectés à faire soi-même