L'ESP8266 est un petit microcontrôleur disposant de fonctionnalité wifi. Il est possible de le programmer en utilisant l'environnement Arduino ce qui rend son utilisation beaucoup plus accessible.
Petit résumé de ma première prise en main de la bête.
Fig. 1: Montage permettant de programmer un ESP01
Lorsque l'on utilise un Arduino/GEnuino il n'y a généralement rien de special a faire pour téléverser un programme ormis brancher la carte sur le port USB avant de cliquer sur le bouton “Téléverser”. Avec un ESP8266 ce n'est pas tout a fait le cas, en effet il ne comporte pas de “bootloader” (programme d’amorçage) facilitant l'envois d'un programme, il va nous falloir basculer manuellement la puce en “mode programmation”.
Le microcontrôleur tel que configuré sur les module couramment disponibles (ESP01, ESP07, ESP12, ….) disposent pour faire simple de deux modes :
GPIO0
relié à la masse (état zéro) alors la puce démarre en mode UART2) autrement dit en mode “programmation” qui permet d'envoyer notre programme dans la mémoire du contrôleur.
Il semble que la broche GPIO0
permettant ce changement de mode soit doté d'une résistance dite de rappel4) elle est donc naturellement à l'état haut, et ne passe à l'état bas que si elle est physiquement relié a la masse.
Pour nous simplifier la tache nous allons doter notre montage d'un interrupteur permettant de sélectionner le mode souhaité. Nous ajouterons un second interrupteur relié à la broche RESET (réinitialisation) nous permettant de redémarrer le microcontrôleur à volonté sans avoir à le brancher débrancher. Ces deux interrupteur permettrons donc respectivement de relier à la masse les broches GPIO0
et RESET
.
Si cela n'est pas déjà fait il va falloir ajouter dans votre environnement Arduino/Genuino la bibliothèque permettant de compiler pour l'ESP8266. Fort heureusement, pour nous simplifier la tache, l’environnement Arduino/Genuino dispose depuis la version 1.6.4 d'un gestionnaire de cartes additionnel et Mac nous a même déjà rédigé un petit article sur le sujet.
Et voila votre environnement de développement Arduino/Genuino peut dorénavant compiler et envoyer des programme vers votre ESP8622 !
Pour valider que nous arrivons a compiler et envoyer des programme vers notre module nous allons commencer, comme le veux la tradition, par faire clignoter une led :
void setup() { pinMode(BUILTIN_LED, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(BUILTIN_LED, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(BUILTIN_LED, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Si ce n'est déjà fait branchez l’adaptateur USB/Série à votre ordinateur. La diode (rouge chez moi) d'alimentation devrait s'allumer. Les autres diodes restent normalement éteintes pour le moment.
Dans le menu “Outils” > “Type de carte” sélectionnez la carte “Generic ESP8266 Module”. Sélectionnez ensuite dans Outils” > “Port” le port ou est connecté votre module (il n'y en à probablement qu'un de proposé si vous n'avez pas d'autre périphérique série connecté a votre machine)
Cliquer sur le bouton “Vérifier” pour valider que votre programme compile bien puis … vous allez devoir basculer votre ESP8266 en mode programmation ! Pour cela comme nous l'avons vu plus haut nous allons basculer la broche GPIO0
à la masse puis redémarrer le microcontrôleur : Appuyer (et maintenir) le bouton relié à la GPIO0
, donner une impulsion sur le bouton “RESET” puis relâcher le premier bouton. Ren de visible mais si tout va bien le microcontrôleur a redémarré en mode “UART”.
Cliquez sur le bouton “Téléverser”, le téléversement va commencer.
Lorsque le téléversement est terminé le module vas se ré-initialiser tout seul et comme vous n’appuyer plus sur le bouton basculant la GPIO0
à la masse le microcontrôleur va redémarrer en mode “FLASH” et exécuter votre programme. La diode (bleue dans mon cas) de votre module se met alors clignoter doucement.
Si l'erreur warning: espcomm_sync failed, error: espcomm_open failed
apparaît c'est que le microcontrôleur n'est pas en mode “UART” permettant de la programmer. Re-effectuez la manipulation (vérifiez que vous n'intervertissez pas les deux boutons) et relancez le téléversement.
Et voila notre premier programme tournant sur un ESP8266.