ESP Easy est très facile à flasher sur Windows à l’aide de l’utilitaire d’installation contenu dans le dépôt du projet. Si vous êtes un utilisateur Linux (PC, Raspberry Pi, Orange Pi…) ou macOS, il va falloir utiliser esptool.py déjà présenté dans ce tutoriel.
Dernière mise à jour : 20 avril 2020
Pour ce tutoriel, nous allons installer sur firmware sur une LoLin WeMos D1 Mini, mais la méthode s’applique également à tous les ESP8266 NodeMCU (attention, certaines cartes nécessitent d’être en mode bootload avant de pouvoir flasher le firmware).
Sommaire
- 1 Installer Python et esptool.py
- 2 Sur Windows
- 3 Sur macOS
- 4 Flasher le firmware ESP Easy sur l’ESP8266 LoLin D1 Mini
- 5 Flasher ESP Easy sur une autre carte ESP8266 NodeMCU générique
- 6 Bonus : comment déterminer la taille de la mémoire d’un ESP8266
- 7 Comment utiliser esptools.py sur Windows ?
- 8 Rien ne fonctionne ! Effacez simplement la mémoire
Installer Python et esptool.py
Avant de commencer, vérifions que la version 2.7.x de python est bien installée. Ouvrez le Terminal et exécutez Python. Si Python est installé, le shell doit démarrer. Saisissez exit() pour quitter le shell.
Python 2.7.10 (default, Oct 23 2015, 19:19:21) [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> exit()
Si Python n’est pas installé sur votre machine, installez le en vous rendant ici.
Pour installer esptool.py, le mieux est de laisser Python s’en charger de manière à ce que toutes les dépendances soient installées en même temps.
pip install esptool
en cas de difficulté, vous pouvez aussi exécuter python -m pip install esptool ou pip2 install esptool.
Sur Windows
Lancez PowerShell (qui permet d’exécuter les commandes Unix). Placez vous dans le répertoire d’installation d’esptool, par exemple Documents et lancez l’installation d’esptool (et des dépendances) comme sur macOS ou Linux.
PS C:\Users\Christophe\Documents> pip install esptool Collecting esptool Downloading esptool-1.3.tar.gz Collecting pyserial>=2.5 (from esptool) Using cached pyserial-3.2.1-py2.py3-none-any.whl Installing collected packages: pyserial, esptool Running setup.py install for esptool ... done Successfully installed esptool-1.3 pyserial-3.2.1 PS C:\Users\Christophe\Documents>
Vous pouvez maintenant appeler esptool.py depuis n’importe ou. En effet, il a été installé dans le répertoire des exécutables par défaut de Python (C:\Python27\Scripts).
Sur macOS
Suivez ce tutoriel pour macOS.
A LIRE AUSSI :
esptool.py, mise à jour du firmware NodeMCU ESP8266 sur macOS
Flasher le firmware ESP Easy sur l’ESP8266 LoLin D1 Mini
Maintenant que tout est prêt, nous allons pouvoir lancer l’installation. Dans un Terminal, placez vous dans le répertoire d’ESP Easy. Vous pouvez le récupérer directement depuis GitHub ici ou le cloner à l’aide de la commande
git clone https://github.com/espressif/esptool.git
La commande esptool.py pour flasher la mémoire flash d’un ESP8266 est de la forme suivante
esptool.py --port [serial-port-of-ESP8266] write_flash -fm [mode] -fs [size] 0x00000 [nodemcu-firmware].bin
On doit donc lui passer les paramètres suivants :
- Le port série sur lequel est branché l’ESP8266. Sur moaOS ou linux, exécutez la commande ls /dev/tty.*. Sur Windows, exécutez mode dans l’invite de commande
- mode (-fm ou –flash_mode) : dio par défaut
- size (-fs ou –flash_size) : 32m pour 4MB
- nodemcu-firmware : le chemin vers le binaire à flasher. Ici ESPEasy_Rxxx_xxxx.bin
Ce qui donne par exemple pour une Wemos D1 Mini (4MB)
esptool.py --port COM3 --baud 115200 write_flash -fm dio -fs 32m 0x00000 ESPEasy_R120_4096.bin
Il possible d’indiquer d’autres paramètres
- baud (–baud) : la vitesse de transfert. En cas de problème, il ne faut pas hésiter à la diminuer à 115200 bauds par exemple.
- after (–after) : permet de faire un reset (no_reset, hard_reset ou soft_reset) après l’opération de flashage.
Flasher ESP Easy sur une autre carte ESP8266 NodeMCU générique
esptool.py est un utilitaire à tout faire pour toutes les carte ESP8266 du marché. Il faudra adapter la commande en passant les paramètres qui correspondent à votre carte. Ca fonctionne également pour la nouvelle génération ESP32. Pour cela, il faudra aller piocher dans la documentation d’esptool.py qui se trouve ici. esptool.py envoi un autre
Les cartes NodeMCU, WeMOS, HUZZAH Feather, Core Board, ESP32-WROVER-KIT sont en mesure de passer en mode bootload, pour les autres il faudra appliquer la méthode classique déjà expliquée dans ce tutoriel.
Pour récupérer les caractéristiques de la carte, exécutez la commande esptool.py –port COMx flash_id
C:\Users>esptool.py --port COM3 flash_id esptool.py v1.3 Connecting.... Manufacturer: ef Device: 4016
Bonus : comment déterminer la taille de la mémoire d’un ESP8266
C’est un problème récurrent car la taille de la mémoire n’est jamais notée sur les cartes. Si vous avez plusieurs modèles, vous risquez rapidement d’avoir des problèmes. Voici comment faire pour déterminer la taille de la mémoire à partir de d’identifiant et du fabricant.
Tout d’abord, allez sur cette page qui liste les fabricants de puces ESP8266 https://code.coreboot.org/p/flashrom/source/tree/HEAD/trunk/flashchips.h
Ne vous occupez pas du fabricant, ici “ef”. Faites une recherche sur l’id du device, ici 0x4016. Vous allez trouver les lignes suivantes :
- #define AMIC_A25LQ032 0x4016 /* Same as A25LQ32A, but the latter supports SFDP */
- #define ESMT_F25L32QA 0x4016
- #define GIGADEVICE_GD25Q32 0x4016 /* Same as GD25Q32B */
- #define SPANSION_S25FL132K 0x4016
- #define WINBOND_NEX_W25Q32_V 0x4016 /* W25Q32BV; W25Q32FV in SPI mode (default) */
Par convention, il faut prendre les 2 derniers chiffres du code sans s’occuper des lettres éventuelles qui se trouvent derrière (aucune idée de la signification pour le moment). Ici, on prendra donc 32. Toujours par convention, ce chiffre indique la quantité de mémoire en megabits, ce qui fait donc 32Mb, soit 4Mo (un convertisseur en ligne).
Pour le moment, c’est la seule méthode que j’ai pu trouvé. Si vous avez plus facile, n’hésitez pas à partager dans les commentaires.
Cas particulier de la Wemos d1 mini Pro 16MB
En théorie, l’ESP8266 est capable de supporter jusqu’à 128Mb (16Mo) de mémoire flash QSPI. C’est le cas de la nouvelle Wemos d1 mini Pro. Si on cherche 0x4018, le numéro de device, on va par exemple trouver GIGADEVICE_GD25Q128. Dans ce cas, on prendra 128. Après conversion, on obtient bien 16Mo (128Mb). On dira plutôt qu’il faut prendre les 2 ou 3 derniers chiffres du code dans s’occuper des dernières lettres.
Comment utiliser esptools.py sur Windows ?
Sur Windows, tout fonctionne à l’identique. esptool étant un script Python, le programme est cross-plateforme. Il faudra simplement modifier le port de destination. Sous Windows il sera de la forme COM1, COM2… Pour connaître le port COM sur lequel est branché l’ESP8266, exécutez la commande mode. La commande permet de récupérer beaucoup plus de paramètres que la commande sous Linux.
PS C:\Users\Christophe\Documents\esptool-master> mode Statut du périphérique COM3: ---------------------------- Baud : 1200 Parité : None Bits de données : 7 Bits d’arrêt : 1 Temporisation : OFF XON/XOFF : OFF Protocole CTS : OFF Protocole DSR : OFF Sensibilité DSR : OFF Circuit DTR : ON Circuit RTS : ON Statut du périphérique CON: --------------------------- Lignes : 3000 Colonnes : 120 Vitesse clavier : 31 Délai clavier : 1 Page de codes : 850
Rien ne fonctionne ! Effacez simplement la mémoire
Si vous rencontrez des problèmes d’installation, vous pouvez tenter d ‘effacer la mémoire avec la commande erase_flash.
esptool.py --port COM3 erase_flash
Avez-vous aimé cet article ?