Outils d'utilisateurs

Outils du Site


trucs_astuces:programmer_un_esp8266_avec_l_environnement_arduino_genuino

Ceci est une ancienne révision du document !


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 ?

  • 1 module ESP8266 : Il en existe différents modèles, choisissez celui qu'il vous conviens. . Pour ce premier test j'utiliserai l'ESP01 petit, simple, et suffisant pour une première utilisation.
  • 1 breadboard (platine d'essais) pour effectuer ses connections.
  • Un adaptateur usb/série (type FTDI) capable de fonctionner en 3.3v (Attention l'esp8266 ne supporte pas de fonctionner en 5V contrairement à ce que l'on peu avoir l'habitude avec un Arduino/Genuino) Le plus pratique étant d'utiliser un adaptateur permettant de sélectionner sa tension de travail.
  • Des petits câbles de connexion Dupont1) Mâle-Femelle et Mâle-Mâle pour connecter les modules à la breadboard.
  • 2 petits boutons poussoir enfichables sur la platine d'essai.

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 :

  • S'il sont démarré avec leur 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.
  • Si cette même broche est relié à 3.3v (état haut) au démarrage alors on passe en mode FLASH et le programme présent dans la mémoire3) du contrôleur est exécuté.

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.

  • Adaptateur USB/Serie :
    • GND ⇒ Relié à la ligne de masse de la platine d'essai
    • VCC ⇒ Relié à la ligne +3.3v de la platine d'essai
    • 3.3V ⇒ Relié à la ligne +3.3v de la platine d'essai
    • RX ⇒ Relié à la broche TXD0 de l'esp8266 (GPIO1)
    • TX ⇒ Relié à la broche RXD0 de l'esp8266
    • 5VNon utilisé
  • ESP02 :
    • CH_PD ⇒ Relié à la ligne +3.3v de la platine d'essai (état haut)
    • GPI0 ⇒ Relié à l’interrupteur de sélection de mode.
    • RST ⇒ Relié à l’interrupteur de réinitialisation (RESET)
    • GND ⇒ Relié à ligne de masse de la platine d'essai
    • VCC ⇒ Relié à ligne +3.3v de la platine d'essai
    • GPIO2Non utilisé

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.

  • Ajouter l'url http://arduino.esp8266.com/package_esp8266com_index.json à la liste de dépôts : “fichier” > “préférences” ; champ “Additionnal Board Manager URLs”
  • Aller dans la sélection des cartes ( menu “outils” > type de cartes xxxx> “Boards manager” (au dessus de la liste des cartes)
  • Tapper “esp8266” dans le champ de recherche
  • Sélectionner le module “esp8266 by ESP8266 Comunity” et cliquez sur le bouton Install
  • Fermer la fenêtre

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

  • Hackable n°7 : article d'introduction à la programmation de modules ESP8266
  • Esp8266 pinout : Schémas de brochage jolis et complets des modules ESP01 ESP12 et ESP03
  • Documentation officielle du module de support de l'ESP82566 pour l'environnement Arduino/Genuino
  • Arduinesp : Introduction en anglais a la programmation de modules ESP8266
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
trucs_astuces/programmer_un_esp8266_avec_l_environnement_arduino_genuino.1469738358.txt.gz · Dernière modification: 2016/07/28 22:39 par bumblebee