Il est facile de pré-configurer ou personnaliser le code source du firmware ESP Easy Mega (version 2) à l’aide de PlatformIO. C’est aussi une solution alternative pour installer ESP Easy Mega lorsque vous rencontrez des problèmes de compilation ou de librairies manquantes avec l’IDE Arduino.
Dernière mise à jour le 14 mai 2020
Le projet ESP Easy est disponible sous la forme d’une archive ZIP contenant les binaires pour les ESP8266 qui disposent de 512ko, 1024ko et 4096ko de mémoire flash ainsi qu’un script d’installation. Ce script ne fonctionne malheureusement que sur Windows. Si vous rencontrez des problèmes ou que vous devez (ou voulez) apporter des modifications au code source, l’autre solution consiste à utiliser PlatformIO déjà présenté à plusieurs reprises.
Installer Visual Studio Code et le plugin PlatformIO
PlatformIO est disponible sous la forme d’un plugin pour de nombreux éditeur de code (Atom, CLion, CodeBlocks, Eclipse, Emacs, NetBeans, Qt Creator, Sublime Text, Vim, Visual Studio, VSCode). Les fonctionnalités sont identiques quelque soit l’éditeur que vous utilisez. J’ai opté pour Visual Studio Code de Microsoft, un éditeur rapide, gratuit et multi-plateforme. A vous de choisir !
Installer ESP Easy Mega v2 avec PlatformIO
Pour récupérer la dernière version en cours de développement d’ESP Easy Mega, allez sur GitHub.
Ce tutoriel a été réalisé avec la version 20200410.
Les binaires (image pré-compilée que l’on peut directement téléverser) et le code source (qui nécessite d’être compilé mais que l’on pourra modifier) sont livrés dans deux archives séparées.
1Allez jusqu’à la fin de la liste des nouveautés et corrections apportées à la release et déplié les assets (ressources). Trois archives sont disponibles :
2L’archive ESPEasy_mega-XXXXXXXX.zip contient les binaires pré-compilés pour de nombreuses cartes et configurations ainsi que le code source du projet. Conseillé
3Code source uniquement zippé
4Code source uniquement dans une archive compressée au format tar.gz (linux, macOS)
Les utilisateurs de Windows disposent de l’utilitaire ESP.Easy.Flasher permettant de pré-configurer et téléverser le binaire pour les cartes les plus courantes
Pour ouvrir le projet sous Visual Studio Code, ouvrez l’écran d’accueil de PlatformIO puis choisissez Open Project.
Naviguez dans les dossiers et placez-vous à la racine du projet dans le répertoire source. Le fichier platformio.ini doit être visible. Cliquez sur Select. PlatformIO ouvre le projet et l’affiche dans la barre latérale à gauche de l’écran.
Le code source n’est pas fondamentalement différent de la version R120. L’interface graphique a été repensée comme nous l’avons vu dans l’article précédent sur une ESP32.
Pré-configurer ESP Easy Mega : réseau WiFi, adresse IP fixe, utilisateur, mot de passe…
Puisque nous allons compiler le code source, il est possible de pré-configurer de nombreux paramètres pour ne pas avoir à le faire au premier démarrage du MCU.
Ouvrez le fichier ESPEasyDefaults.h qui se trouve dans le dossier src/src.
Voici les principales clés que vous pouvez personnaliser :
- DEFAULT_SSID : nom du réseau WiFi sur lequel l’ESP8266 / ESP32 doit se connecter
-
DEFAULT_KEY : mot de passe réseau
-
DEFAULT_USE_STATIC_IP : passer à true pour fixer l’adresse IP du module. C’est utile (nécessaire) pour communiquer avec un logiciel domotique (en cas de redémarrage, changement de routeur/box internet). Ensuite attribuer les paramètres suivants :
-
DEFAULT_IP : adresse IP fixe du module. Vérifiez à l’aide d’un outil d’analyse réseau, votre box internet ou votre routeur que l’adresse est disponible.
-
DEFAULT_DNS : adresse du serveur DNS, en général c’est la box internet ou du routeur
- DEFAULT_GW : idem en général
-
-
DEFAULT_ADMIN_USERNAME : nom d’utilisateur pour se connecter à l’interface WEB d’administration d’ESPEasy
-
DEFAULT_ADMIN_PASS : le mot de passe de l’interface d’administration (fortement conseillé)
-
DEFAULT_SERIAL_BAUD : vitesse de port série
D’autres paramètres utiles peuvent être modifiés :
- DEFAULT_PROTOCOL, protocole domotique à utilise par défaut.
- DEFAULT_PIN_I2C_SDA et DEFAULT_PIN_I2C_SCL si vous devez utiliser d’autres broches que celles par défaut de l’ESP8266
- DEFAULT_USE_RULES : activer par défaut le moteur de règle. Il est possible de l’activer ultérieurement depuis le menu settings
Configurer le fichier platformio.ini pour la carte ESP32 / ESP8266
Le projet est livré avec plusieurs environnements (carte de développements) pré-configurés. Les environnements (cartes) sont regroupés dans 2 fichiers distincts :
- platformio_esp82xx_envs.ini pour les cartes ESP8266, ESP8285, WROOM02.
- platformio_esp32_envs.ini pour les cartes ESP32
Il est possible d’indiquer au compilateur l’environnement à utiliser par défaut directement dans le fichier platformio.ini en ajoutant la clé default_envs. Pour les cartes anciennes (ou en cas de problème), il est possible de fixer la vitesse de transfert. Voici un exemple de configuration pour un LoLin WeMos d1 mini à ajouter juste après la clé extra_configs
extra_configs =
platformio_core_defs.ini
platformio_esp82xx_base.ini
platformio_esp82xx_envs.ini
platformio_esp32_envs.ini
platformio_special_envs.ini
default_envs = normal_ESP8266_4M1M
upload_speed = 115200
monitor_speed = 115200
upload_port = COM3
Compiler et téléverser ESP Easy Mega sur l’ESP8266
Connectez la carte ESP8266 sur un port USB de l’ordinateur.
Il existe plusieurs méthodes pour compiler et téléverser le projet
Depuis le menu PIO, lancer la compilation depuis l’option Upload. Le compilateur compile le projet pour la carte indiquée par défaut dans le fichier platformio.ini puis téléverse le binaire du firmware sur la carte.
Depuis la palette d’outil. Le compilateur cible également la carte indiquée dans default_envs
Depuis le menu PIO ➀, cliquez sur l’environnement qui vous intéresse ➁ pour afficher les fonctions de PIO. Cliquez sur Build pour compiler ou sur Upload pour compiler et téléverser ➂
Depuis le Terminal, exécutez la commande suivante en remplaçant <version> par la version désirée
platformio run --target upload --environment <version>
PlatformIO va tout d’abord compiler le fichier binaire avant de le télécharger sur la carte de développement. Il n’est pas nécessaire d’indiquer le port COM, la détection est automatique. A la fin de l’installation, vous devez obtenir un message de [success]
Ouvrir le moniteur série et récupérer l’adresse IP de l’ESP8266
Si vous n’avez pas attribué une adresse IP fixe au MCU, le plus simple est d’ouvrir le moniteur série depuis le menu PIO.
Pour les fans du Terminal, exécuter
platformio device monitor -b 115200
Quoi faire en cas d’échec de compilation ?
Contrairement à l’IDE Arduino, il est très facile de supprimer les fichiers temporaires. Si vous rencontrez des erreurs de compilation (et que votre code source ne retourne pas d’erreur), il suffit de supprimer le dossier de travail de PlatformIO à l’aide de l’option Clean. Tous les builds et les fichiers temporaires sont supprimés d’un clic de souris !
Installer ESP Easy R120 avec PlatformIO (obsolète)
Téléchargez le code source du firmware ESP Easy R120 en allant sur cette page ou en cliquant sur ce lien. C’est la dernière version stable de la version 1. Décompressez l’archive. Lancez Visual Studio Code et cliquez sur Import Arduino Project
Dans la boite de dialogue qui s’affiche, sélectionnez une carte. Pour la Wemos d1 mini utilisée pour ce tutoriel, choisissez ESP8266 ESP-12E. Allez dans le dossier source du projet ESP Easy. Terminez en cliquant sur Import.
PlatformIO importe le projet dans son répertoire de travail (workspace). Il se situe en général dans le dossier Documents de l’utilisateur connecté. Dans mon cas, PlatformIO a donné un identifiant unique comme nom de projet. Ce n’est pas très pratique. Pour le renommer, quittez Visual Studio Code et allez dans le dossier Projects de PlatformIO.
Maintenant, il faut copier manuellement les librairies Arduino qui se trouvent dans le dossier Librairies du code source. Depuis l’explorateur de fichier, sélectionnez les dossiers puis CTRL + C. Ouvrez le dossier lib du projet PlatformIO puis CTRL + V. Sur Visual Studio, placez le curseur de la souris sur le nom du projet pour faire apparaître la barre d’icônes. Cliquez sur l’icône refresh pour actualiser le contenu du projet.
Un fois le projet ouvert, on trouve les deux dossiers src et lib ainsi que le fichier de configuration platformio.ini
[env:esp12e]
platform = espressif8266
board = esp12e
framework = arduino
Vous pouvez pré-configurer les paramètres réseau en ouvrant le fichier espeasy.ino qui se trouve dans le dossier src. N’oubliez pas de passer à true la clé DEFAULT_USE_STATIC_IP pour fixer l’adresse IP du module.
Ouvrez ensuite un Terminal depuis la barre d’icône située dans le bas de l’écran.
Branchez l’ESP8266 et exécutez la commande suivante pour compiler et téléverser le firmware. Comme il n’y a qu’une seule configuration, il n’est a aucun ‘environment’ à indiquer.
platformio run --target upload
Si tout s’est bien déroulé, vous devez obtenir un message de succès.
Pour récupérer l’adresse IP (si elle n’a pas été fixée dans le code source), exécutez la commande suivante pour ouvrir le moniteur série de PlatformIO. Il existe un raccourcis dans la barre d’icône vers le moniteur série mais il est configuré à 9600 bauds.
platformio device monitor -b 115200
Mises à jour
14/05/2020 Etapes d’installation de la version R120 retirée. Actualisation des étapes de configuration de la version Mega pour refléter les évolutions du code source.
20/04/2020 Correction des liens vers la page de téléchargement du code source
- Développer avec PlatformIO. Problèmes et solutions
- Platformio.ini, astuces et paramètres utiles. data_dir, monitor_speed, upload_port…
- ESP8266. Téléverser le dossier data (SPIFFS ou LittleFS) depuis PlatformIO
- Migrer un projet de l’IDE Arduino vers PlatformIO. ESP32, ESP8266 ou autre
- ESP Easy Mega. Installation facile avec PlatformIO sur ESP8266 (R120 obsolète)
merci vos informations :
mais les lignes [env:esp12e] … je les mets à la fin du fichier platformio.ini ?
[env:esp12e]
platform = espressif8266
board = esp12e
framework = arduino
Il y a déjà un fichier platformio à la racine du projet. Tout est expliqué en détail dans ce tutoriel
j’ai un message d’erreur au build. j’ai envoyé dans votre forum
à la compilation de espeasy mega j’ai un module absent . pygit2 je pense que ca vienne de python2 et python3
premier message d’erreur :
oduleNotFoundError: No module named ‘pygit2’:
File “/home/patrick/.platformio/penv/lib/python3.6/site-packages/platformio/builder/main.py”, line 166:
env.SConscript(item, exports=”env”)
File “/home/patrick/.platformio/packages/tool-scons/script/../engine/SCons/Script/SConscript.py”, line 597:
return _SConscript(self.fs, *files, **subst_kw)
File “/home/patrick/.platformio/packages/tool-scons/script/../engine/SCons/Script/SConscript.py”, line 286:
exec(compile(scriptdata, scriptname, ‘exec’), call_stack[-1].globals)
File “/home/patrick/Documents/projets/ESPEasy-mega-20200515/tools/pio/generate-compiletime-defines.py”, line 7:
from pygit2 import Repository
Bonjour Patrick, avez vous vérifié si la plateforme ESP8266 était bien installée sur PlatformIO ? Menu accueil PIO > Platforms >Installed. Si elle n’est pas présente dans la liste, ça explique probablement l’origine du problème, dans ce cas, il suffit de l’installer manuellement en faisant une petite recherche. Dites moi si j’ai vu juste pour que je puisse corriger le tuto. Bonne journée
pour le moment j’ai pas encore commandé de carte esp8266 , je suis chomeur et même acheter un boitier à 40 euros ca coute cher. alors j’ai activé platformio, ensuite y a un bouton avec platforms et en cliquant dessus j’ai 4 platforms espressif 32 deux fois et ensuite deux espressif 8266. et sur les sites on vends pas des espressif mais nodemcu.
j’ai regarde les boards dans platformio… et alors j’en aie au moins 50 avec la référence.
et merci de m’avoir répondu.
merci de votre réponse.
si j’ai bien compris , faut mettre ces lignes dans platformio.ini du projet. mais à quel endroit ? à la fin du fichier, ou via boards. je vois bien une liste de boards avec esp12e mais rien indiquant installer ?
C’est ça dans le fichier platformIO, peu importe où, ça n’a pas d’importance, “[env:esp12e]”, c’est pour indiquer à PlatformIO (PIO) la configuration à suivre, les 3 lignes en dessous, c’est la configuration. Ensuite lorsqu’on lance la compilation (Build), PIO s’occupe de tout. J’espère avoir été assez claire, pas évident de tout résumé dans les commentaires, faudrait peut être que je fasse une vidéo pour expliquer tout ça
Je viens de vérifier de faire un test. J’ai supprimé toutes les plateformes installées sur mon PIO puis j’ai lancé la compilation. PIO a bien téléchargé et installé tout seul la plateforme ESP8266 puis compilé avec succès. Votre problème doit venir de fichier de configuration platformio.ini. Typiquement il doit contenir 3 lignes, par exemple. Pour les cartes NodeMCU, en général, c’est un module esp12e ou esp12f.
[env:esp12e]
platform = espressif8266
board = esp12e
framework = arduino
Voilà, j’espère que ça vous aidera dans votre projet
Oui je comprend la situation, c’est le problème avec toutes ces cartes génériques. Concernant NodeMCU, c’est du bourrage de mot clé. C’est bien un ESP8266 donc ça devrait fonctionner. Evidemment, impossible pour moi de le garantir, il y a tellement de fabricants qui se battent sur ce marché ! C’est la raison pour laquelle je conseille en priorité la Lolin – Wemos d1 mini. J’en ai testé pas mal depuis 2016 et ça fonctionne toujours ! Perso je commande quasiment tout mon matériel en direct d’Asie, seule solution pour moi pour pouvoir proposer autant de projets et tutoriels.
Si vous voulez, il me reste encore une LoLin d1 mini pro que je n’utilise pas. Envoyez moi votre adresse postale depuis le formulaire situé en bas de page pour que je puisse vous la faire parvenir par courrier. Bonne soirée
Bonjour, il a du avoir des changements dans la méthode de compilation car je n’arrive plus à compiler ESPEasy depuis quelques temps… après quelques recherche j’ai avancé mais je bloque sur la compilation de la “cconexp.c” … il y a une erreur sur la structure … je ne sais pas quoi faire
merci de votre aide
Bonsoir Marc, oui absolument, il n’est plus possible de compiler ESPEasy R120 (la version stable) à l’aide de l’IDE Arduino. Du moins sans mettre les mains dans le code et faire les corrections nécessaires pour passer la compilation. Pour personnaliser le code, il faut donc passer sur la version Mega (v2) en cours de développement…mais c’est une version déjà très stable. Je suis en train d’actualiser la série d’article sur ESP Easy pour tenir compte de ces évolutions. Bonne soirée
Je n’ai pas été assez précis dans ma demande, c’est de la version méga que je parlais … en fait j’avais un conflit avec la librairie time.h après avoir eu un problème avec git et pygit2 … maintenant à priori tout est revenu en ordre et je vais pouvoir regarder la partie ajout de module du playground …
merci pour tous ces articles que je suis depuis un petit bout de temps 🙂
Marc
D’accord, merci beaucoup pour le retour. A très bientôt j’espère
Bonjour,
J’essaye en vain de compiler ESPEasy depuis deux jours.
J’ai installé platform.io via vscode jusque là nickel.
J’ouvre le projet ESP mega du 03/10/2019. Nickel.
Je compile, platform.io télécharge via le client git nickel.
Et là erreur de compilation problème d’encodage est ce que quelqu’un à réussi à résoudre le problème.
UnicodeEncodeError: ‘charmap’ codec can’t encode characters in position 1661311-1661312: character maps to :
File “C:\Users\johann.platformio\penv\lib\site-packages\platformio\builder\main.py”, line 127:
env.SConscript(“$BUILD_SCRIPT”)
File “C:\Users\johann.platformio\packages\tool-scons\script..\engine\SCons\Script\SConscript.py”, line 605:
return _SConscript(self.fs, *files, **subst_kw)
File “C:\Users\johann.platformio\packages\tool-scons\script..\engine\SCons\Script\SConscript.py”, line 286:
exec(compile(scriptdata, scriptname, ‘exec’), call_stack[-1].globals)
File “C:\Users\johann.platformio\platforms\espressif8266@src-39eda9beee721bbfba4e3a2888c84743\builder\main.py”, line 402:
target_elf = env.BuildProgram()
File “C:\Users\johann.platformio\packages\tool-scons\script..\engine\SCons\Environment.py”, line 224:
return self.method(*nargs, **kwargs)
File “C:\Users\johann.platformio\penv\lib\site-packages\platformio\builder\tools\platformio.py”, line 110:
env.BuildFrameworks(env.get(“PIOFRAMEWORK”))
File “C:\Users\johann.platformio\packages\tool-scons\script..\engine\SCons\Environment.py”, line 224:
return self.method(*nargs, **kwargs)
File “C:\Users\johann.platformio\penv\lib\site-packages\platformio\builder\tools\platformio.py”, line 288:
env.ConvertInoToCpp()
File “C:\Users\johann.platformio\packages\tool-scons\script..\engine\SCons\Environment.py”, line 224:
return self.method(*nargs, **kwargs)
File “C:\Users\johann.platformio\penv\lib\site-packages\platformio\builder\tools\piomisc.py”, line 198:
out_file = c.convert(ino_nodes)
File “C:\Users\johann.platformio\penv\lib\site-packages\platformio\builder\tools\piomisc.py”, line 57:
return self.process(contents)
File “C:\Users\johann.platformio\penv\lib\site-packages\platformio\builder\tools\piomisc.py”, line 80:
assert self._gcc_preprocess(contents, out_file)
File “C:\Users\johann.platformio\penv\lib\site-packages\platformio\builder\tools\piomisc.py”, line 90:
fp.write(contents)
File “C:\Users\johann.platformio\python37\lib\encodings\cp1252.py”, line 19:
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
Merci pour ce tuto !!! Après avoir perdu du temps (beaucoup) à essayer de compiler convenablement ESP Easy avec l’Arduino IDE… Je vais suivre ton tuto et passer à PlatformIO qui a l’air beaucoup plus souple…
Disons que PlatformIO est complémentaire. Avec l’IDE Arduino, on reste dans un environnement confortable et connu. PIO est plus destiné aux entreprises qui développent des flottes d’objets connectés et qui ciblent différents micro-contrôleurs. Ca permet de compiler et déployer par lot même si l’objet est à des milliers de kilomètres (formule payante). En tout cas pour ESP Easy c’est génial car la compilation ne pose pas de problème et on peut compiler facilement le code pour l’ESP8285 des modules Sonoff par exemple https://projetsdiy.fr/hack-sonoff-4ch-pro-firmware-mqtt-espurna-inclusion-domoticz-image/