Table des matières

Programmer un ESP8266 avec l'environnement Arduino/Genuino

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.

De quoi que j'ai besoin ?

Attention :

  • Certains modèles (ESP07, ESP08 ESP12, …) ont des connecteurs au pas de 2mm et non pas de 2.54mm, assurez vous d'avoir une petit platine adaptateur si vous voulez vous connecter sur une platine d'essais
  • Certains modèles (Olimex MOD-WIFI-ESP8266 par exemple) ne sont pas (facilement) programmable les entrées servant à sélectionner le mode programmation étant configurée en dur sur le module. Ce type de module est donc à éviter pour notre type d'utilisation.

Petite explication sur la programmation d'un esp8266

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 :

Les branchements

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.

Configuration de l'environnement Arduino

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 :

blink.ino
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
}

Compilation et envois du programme

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. ^_^

Sources & liens

1) Petit câbles couramment utilisé lors de prototypage de circuit Arduino/Genuino
2) Universal Asynchronous Receiver Transmitter : Émetteur-récepteur asynchrone universel
3) Dite mémoire flash