ESP Easy Mega. Installation facile avec PlatformIO sur ESP8266 (R120 obsolète)

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

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.

Cette solution n’est malheureusement plus applicable à ESP Easy R120 (version stable). En effet, le code source est trop ancien et génère de nombreuses erreurs durant la compilation.

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 !

A LIRE AUSSI :
Débuter avec PlatformIO IDE sur VSCode (Windows, macOS, Raspbian, Linux)

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)

Télécharger ESP Easy Mega depuis Github

 

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

A LIRE AUSSI :
ESP Easy Mega. Installation sur un ESP8266 avec le Flasher pour Windows

espeasy mega binary flasheresp8266

Pour ouvrir le projet sous Visual Studio Code, ouvrez l’écran d’accueil de PlatformIO puis choisissez Open Project.

Ouvrir le projet ESP Easy Mega avec PlatformIO sur VSCode

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.

platformio espeasy mega v2 open project

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…

Localisation du fichier espeasydefaults.hPuisque 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.
0 : Module autonome
1 = Domoticz HTTP
2 = Domoticz MQTT
3 = Nodo Telnet
4 = ThingSpeak
5 = Home Assistant (openHAB) MQTT
6 = PiDome MQTT
7 = EmonCMS
8 = Generic HTTP
9 = FHEM HTTP
  • 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.

Compiler le code depuis le menu PIO

Depuis la palette d’outil. Le compilateur cible également la carte indiquée dans default_envs

Build : génère le binaire

Compiler le code depuis la palette PIO

Upload : génère et téléverse le binaire

palette pio vscode upload

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

Compiler ou téléverser ESP Easy Mega depuis PIO

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]

 

ESP Easy Mega a été correctement téléversé sur l'ESP8266

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.

Attention, par défaut la vitesse de transmission du port série est de 9600 bauds sous PIO alors que ESPEasyMega communique à 115200. Modifiez la vitesse du moniteur série en ajoutant la clé monitor_speed = 115200 au fichier platformio.ini

Pour les fans du Terminal, exécuter platformio device monitor -b 115200

Récupérer l'adresse IP du module esp8266 fonctionnant sous ESP Easy Mega avec le moniteur série de PlatformIO sous VSCode

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 !

Nettoyer le dossier de compilation de PIO

Installer ESP Easy R120 avec PlatformIO (obsolète)

La compilation du code du projet ESP Easy R120 génère malheureusement de nombreuses erreurs rendant la personnalisation impossible (pré-configuration du réseau WiFi, ajout de plugin…). Maintenant, il faut obligatoirement utiliser la version Mega (ou V2) du projet. Cette version est encore en cours de développement mais est parfaitement utilisable (et stable).
Je laisse cette partie du tutoriel pour ceux qui disposent encore d’une version antérieure en production.

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

visual studio code platformio 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.

1 platformio import espeasy arduino project

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.

 visual studio code platformio refresh lib folder

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.

platformio esp easy mega v2 configure ssid wifi settings

Ouvrez ensuite un Terminal depuis la barre d’icône située dans le bas de l’écran.

 visual studio code platformio open terminal window

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.

visual studio code platformio upload esp easy firmware

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

Avez-vous aimé cet article ?
[Total: 1 Moyenne: 4]

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

16 Commentaires
  1. 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

  2. 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

  3. 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

  4. 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]

  5. 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…

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.