esptool.py, mise à jour du firmware NodeMCU ESP8266 sur macOS • Domotique et objets connectés à faire soi-même

esptool.py est un script python qui permet de récupérer des informations sur votre module ESP8266 et flasher son firmware. Dans l’article précédent, nous avons utilisé ESPFlasher pour installer un firmware NodeMCU sur une carte à base d’ESP8266 (et même installer un firmware personnalisé grâce à nodemcu-build), mais ESPFlasher n’est disponible que pour Windows (32 ou 64 bits) alors qu’esptool peut fonctionner sur toutes les plateformes pouvant faire fonctionner Python.

Tutoriel actualisé le 28 mai 2020

Installer les outils esptool sur macOS

Munissez vous d’un module(ou câble) FTDI si votre module est équipé d’une interface de programmation via un port COM.Si vous êtes débutant, nous allons utiliser le Terminal pour réaliser toutes les étapes de ce tutoriel. Vous le trouverez dans les applications, dans le dossier Utilitaires ou en saisissant terminal dans Spotlight.

esptool.py nécessite Python 2.7 ce qui est normalement le cas par défaut sur Mac OS X. Pour savoir si python est déjà présent sur votre machine, tapez simplement la commande python dans le Terminal. Si tout est bien installé vous devriez avoir un message de ce type

Python 2.7.10 (default, Aug 22 2015, 20:33:39) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

Si ce n’est pas le cas installez python 2.7 en vous rendant ici. N’oubliez pas de quitter python en saisissant exit(), quit() ou Ctrl+D avant de continuer.

Allons maintenant dans le répertoire Document (ou le répertoire de votre choix, c’est égal) comme ceci

cd ~/Documents

Nous allons récupérer esptool en le clonant depuis github avec la commande.

git clone https://github.com/themadinventor/esptool.git

Vous risquez d’obtenir ce message d’erreur.

Il faut que XCode et les outils en ligne de commande soient installés sur votre Mac pour que la commande git puisse d’exécuter. Cliquez sur Installer puis exécutez la commande précédente.

La commande git permet de cloner en local le dépôt du projet esptool en local. Allez dans le répertoire esptool

cd esptool

Maintenant, nous allons executer le script setup.py qui permet d’ajouter les dépendances nécessaires (notamment pySerial). Vous devrez saisir votre mot de passe pour permettre à la commande de s’executer.

sudo python setup.py install

Mise à  jour du firmware ESP8266 NodeMCU avec esptool.py sur macOS

Maintenant que esptool est prêt, téléchargez la dernière version du firmware NodeMCU ESP8266 en vous rendant sur github. Télécharger la version qui correspond à votre projet. Par défaut prenez la version integer. Pour rédiger cet article, j’ai utilisé le binaire nodemcu_integer_0.9.6-dev_20150704.bin.

Connectez votre carte ESP8266 NodeMCU à l’aide d’un module (ou câble) FTDI (ou un câble USB en fonction de la carte que vous possédé).

Pour identifier le port série sur lequel se trouve votre carte, vous pouvez utiliser l’IDE Arduino ou saisir la commande suivante

ls /dev/tty.*

La commande renvoie la liste des appareils connectés à votre Mac. Dans mon cas il est connecté sur /dev/tty.usbserial-A1048DR2

Il ne reste plus qu’à préparer la commande permettant de flasher le firmware. Elle se compose ainsi :

sudo python esptool.py --baud 921600 --port PORT_COM_DE_VOTRE_CARTE write_flash -fm dio 0x00000 CHEMIN_BINAIRE.BIN

Ce qui donne dans le cas présent

sudo python esptool.py --baud 921600 --port /dev/tty.usbserial-A1048DR2 write_flash -fm dio 0x00000 ~/Downloads/nodemcu_integer_0.9.6-dev_20150704.bin

En fonction de votre module ESP8266, vous devrez peut-être mettre celui-ci en bootload mode. Petit rappel comment faire pour ceux qui découvrent

  • Appuyez et maintenez appuyé le bouton GPIO0. La Led s’allume à pleine puissance
  • Appuyez sur le bouton Reset
  • Relâchez le Reset
  • Relâchez le bouton GPIO. La led éclaire à demi. L’ESP8266 est en « bootload mode »

Exécutez maintenant la commande de mise à jour. Si tout est correct, esptool commence par effacer la mémoire flash puis télécharge le firmware. Vous pouvez suivre la progression de la mise à jour depuis le terminal. La Led bleue de l’antenne clignotera durant toute l’opération.

1kqo5dnlplmqqxbwczxd-6409032

Ouvrez maintenant votre IDE Arduino et ouvrez le Moniteur Série. Appuyez sur le bouton Reset de la carte. Vous devriez obtenir un message indiquant la version du firmware et un message d’erreur

NodeMCU 0.9.6 build 20150704 powered by Lua 5.1.4
lua: cannot open init.lua

Pour aller plus loin

Si vous avez besoin d’un firmware sur mesure, par exemple un module uniquement disponible sur la version de développement, gagner de la place… vous pouvez lire cet article précédent qui présente comment obtenir un firmware personnalisé grâce à nodemcu_build de frightanic.

Le flashage du firmware est une opération consommatrice en énergie (avec des pics entre 200 et 300mA). Même si tout semble s’être bien déroulé (la led bleue  clignote durant l’opération, esptool ne signale aucune erreur), il peut arriver que le firmware soit mal installé. Pas de panique, ajoutez simplement une alimentation complémentaire, par exemple un batterie LiPo 3.7 Volts en la reliant à la broche V+ et GND de votre module puis recommencez.

Avez-vous aimé cet article ?