Comment charger son propre firmware sur l'ESP8266 à travers un arduino.

Catégorie: Arduino (Mis à jour le 03-03-2016 13:41:10)

Cet article fait suite à mon article de découverte de l'ESP8266. Lorsque l'on commence à jouer avec ce composant, on se rend vite compte que le firmware de base est très limité.

Accessoirement, on peux coder son propre firmware, et en plus il existe un projet qui permet de programmer son ESP8266 comme un Arduino. Si votre projet utilise seulement quelques pins et l'ESP, vous pouvez donc carrément supprimmer l'arduino de votre montage!

Changer le firmware de l'ESP est plutot trivial. Si comme moi vous n'avez qu'un arduino sous la main pas de panique, il est tout à fait possible de flasher l'ESP à travers l'arduino. Je détaille la marche à suivre dans la suite de cet article.

Le choix du firmware

Dans mon cas, j'ai testé deux versions du firmware en particulier:

Je vous invite à tester des firmwares précompilés en .bin avant de vous lancer dans la compilation/création de votre propre firmware.

Le materiel

Si vous avez suivi ma découverte de l'ESP8266, vous avez déjà le montage de base.

Pour rappel voici les noms des pins de la carte quand la puce est vers vous:

--------------------------------
| TX    GND |      ____    ___ |
| CHPD  GP1 |     |    |   ___||
| RST   GP2 |     |____|  |___ |
| 3V     RX |              ___||
--------------------------------

D'après l'article précédent on à donc le montage suivants:

  • Les pins RST et CHPD seront brochés sur des pins 8 et 9 de l'arduino.
  • Le pin 3V est branché sur le Pin +3V de l'arduino.
  • Le pin GND est commun avec celui de l'arduino.
  • Les pins TX/RX seront branchés sur une liaison série. Dans mon cas il s'agit pins 0 et 1 de la Léonardo.

Pour passer l'ESP en mode firmware, il faut passer lors du boot le pin GP1 à l'état LOW. On va donc relier ce pin au pin 10 de notre arduino.

Le logiciel

Le firmware doit être écrit sur la mémoire flash de la carte via la liaison série. Il nous faut donc un logiciel qui va charger le code comme il faut.

Notre arduino sert d'interface série entre l'interface serie USB de notre PC et celle native de l'ESP. Il doit aussi passer les pins de l'ESP dans le bon état pour permettre l'upload du nouveau firmware.

Voici le programme à charger sur votre arduino:

L'arduino se contente de recevoir les données sur l'USB et de les transferer sur la liaison série de l'ESP. Inversement, lorsqu'il reçoit quelque chose de l'ESP, il envoie les données sur l'USB.

La procédure

En premier, on place l'arduino sous tension sur le port USB de notre PC. Celui-ci s'initialise et place l'ESP en mode programmation.

Ensuite, on démarre lance l'ESP flasher, qui va envoyer le contenu de notre .bin sur la liaison série. Il faut renseigner à quelles adresses il faut inscrire le firmware. Ces informations sont souvent renseignées dans le readme du firmware. Par exemple pour le espduino, le fichier 0x00000.bin doit être écrit à l'adresse 0x00000 et 0x40000.bin à l'adresse 0x40000 (trivial non?). Faites attention à bien lire la doc du firmware si vous voulez réussir du premier coup!

Un fois le chargement terminé, le logiciel nous signale qu'il ne peux pas quitter le mode programmation. C'est tout à fait normal car notre programmateur (l'arduino) ne supporte pas le redémarrage de l'ESP. Ce n'est pas un probléme car le firmware à été écrit malgré tout.

Nous allons le faire manuellement en retirant l'alimentation, débrochant le pin 10 puis en remettant l'alimentation. Cela compléte la procédure et normalement, votre ESP8266 tourne maintenant avec le nouveau firmware.

A lire aussi:

Bien choisir sa carte arduino

[Arduino] Il existe une multitude de cartes arduino différentes et il est difficile de choisir la bonne. Voici mon avis sur les principales cartes arduino afn de vous aider a faire le bon choix pour votre projet.
Suite...

Une sonde de temperature à distance pour arduino

[Arduino] Avec arduino et une sonde de température, on peux faire des choses intéréssantes. Voici ma démarche pour améliorer votre projet domotique avec une sonde de température esthétique et sans fil!
Suite...