ESP8266, la petite star de l’IoT, de la domotique et du DIY

Depuis quelques temps, je remarque que les projets basés sur l’ESP8266 (et sur l’ESP32, maintenant) se multiplient.

Au départ, je n’y ai prêté que très peu d’attention, je pensais qu’il s’agissait d’une plateforme semblable à l’Arduino, avec un framework de très haut niveau qui mâche tout le travail. Enfin, c’étaient là des aprioris d’un développeur habitué à programmer son microcontrôleur registre par registre, et qui peut maîtriser au byte près l’utilisation de sa mémoire.

Mais à force de voir des ESP8266 par-ci, et des ESP32 par-là, j’ai fini par m’y intéresser… Et ce que j’ai découvert m’a fortement intéressé, au point de me procurer un petit kit et de commencer quelques petits développements.

Qu’est-ce que l’ESP8266?

Il s’agit d’un circuit intégré qui embarqué un microcontrôleur, de la mémoire RAM et un stack WiFi. Il doit son succès à son très faible coût, le nombre réduit de composants nécessaires à sa mise en œuvre, ainsi que le SDK proposé gratuitement par son fabriquant chinois, Espressif.

Il semblerait que, au départ, ce module ait été prévu être utilisé comme extension WiFi pour des projets existants. Son firmware d’origine permet en effet, via une série de commandes AT, de se connecter à un point d’accès WiFi, établir des connections TCP, HTTP,…

Cependant, le module a été rapidement adopté par des makers, des hobbyistes, qui ont vu dans ce module un moyen simple et peu cher pour concrétiser des projets utilisant le WiFi (domotique, IoT,…).

Avec le temps, une grande communauté s’est créée sur internet. On ne compte plus maintenant le nombre d’articles de blogs, de posts de forum et vidéos montrant des réalisations basées sur ce processeur.

Le SDK s’est aussi amélioré et stabilisé, et de nombreux frameworks sont apparus. Ces frameworks se basent sur le SDK de Espressif et facilitent encore le travail des développeurs. Ils peuvent ainsi se concentrer sur leur applicatif, sans devoir se soucier de faire fonctionner un port I²C, configurer une pin en entrée analogique ou se connecter à un point d’accès Wifi. Le plus utilisé semble être… Arduino!

Et l’ESP32, alors?

Il s’agit du successeur de l’ESP8266. Il est plus puissant, possède 2 cœurs (dont un est dédié au WiFi), plus de mémoires, plus de périphériques,…

Cependant, il est encore relativement récent, son SDK en évolution, et les cartes basées sur celui-ci sont plus chères que celles basées sur l’ESP8266.

Quels sont les liens avec Arduino?

Ce n’était en effet pas clair pour moi. Quasiment partout où l’on parle de l’ESP8266, on parle aussi de ArduinoIDE, de sktech Arduino,… Pour moi, un Arduino, c’est une petite carte électronique, avec un petit microcontrôleur et se programmant avec un langage de programmation de très haut niveau.

Mais Arduino, c’est bien plus que ça : il s’agit d’un framework complet, basé sur C++, et qui se programme en C++. Il est entouré par une grande communauté qui a développé toute une série de librairies permettant d’interagir avec toute une série de capteurs, actuateurs, moteurs, LED, et autres dispositifs divers et variés. Mieux encore : l’environnement Arduino a été porté sur l’ESP8266. Du coup, une bonne partie de ces librairies est directement utilisable sur ce module, sans aucune modification! Il est donc possible de développer en une soirée un programme qui mesure la température ambiante et qui l’envoie à une instante ce Home-Assistant via un broker MQTT sur une connection WiFi (je parle d’expérience)!

Et MicroPython? Lua?

Je ne connais pas Lua, mais j’ai cru comprendre qu’un des premiers firmware alternatifs à être développé était un interpréteur Lua. Il permet donc de programmer l’ESP8266 avec ce langage.

Je connais mieux MicroPython, et j’adore ce projet! Il s’agit d’un port du langage Python destiné à fonctionner sur des systèmes peu puissants et disposant de peu de mémoire, tels que les microcontrôleurs (je l’ai utilisé sur un STM32F7, par exemple). Vous le devinerez : MicroPython a aussi été porté sur l’ESP8266, et même sur l’ESP32 par la suite.

PlatformIO

J’ai donc découvert un processeur par cher qui embarque du WiFi et qui est supporté par toute une série de framework et de langage. Il ne manque plus qu’un environnement de développement confortable, et le Saint-Graal est à nous…

Cet environnement, il existe! Il s’agit de PlatformIO. PlatformIO est un « éco-système » open-source dédié au développement IoT. Il propose entres-autres un IDE, des outils et des librairies supportant différents hardware (Arduino, ARM,…).

L’IDE est basé sur l’éditeur Atom. PlatformIO y ajoute une série de plugin permettant de créer des projets cross-platform (le même code pourrait fonctionner sur plusieurs plateformes différentes), de les compiler et de les uploader dans la mémoire du processeur.

Vous vous en doutez : PlatformIO supporte l’ESP8266! Il est donc très facile de créer un projet (plusieurs cartes basées sur l’ESP8266 sont reconnues par défaut), d’écrire du code c++ basé sur le framework et les librairies Arduino, et de programmer sa petite carte.

Notez qu’il est aussi possible d’utiliser le SDK de Espressif directement, permettant ainsi un contrôle plus bas niveau sur le code, la mémoire et les timings.

Par où commencer?

Mon but était de voir si il était possible de créer de petits projets orientés domotique et IoT rapidement, et en dépensant le moins d’argent possible.

Et dans ce contexte, l’ESP8266 a tout pour plaire : WiFi, SDK, librairies, faible coût,…

Le tout maintenant est de choisir une carte de développement pour commencer le projet. Le choix est vaste, il n’y a plus qu’à choisir la taille, les équipements, accessoires,… Je me suis orienté vers les WemosD1 Mini. Il s’agit de cartes vraiment petites, et disposant de petits modules (semblables aux shields Arduinos) que l’on peut connecter facilement sur le processeurs (capteurs de température, LED RGB, écran, relai,…). Ces modules correspondent exactement à ce que je voulais mettre en œuvre, il s’agissait donc du choix idéal.

Je pense en avoir assez dis sur l’ESP8266 pour le moment. Dans les prochains articles, je vous montrerai quelques réalisations basées sur ce module.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *