Accueil | Niveau de difficulté | Avancé | Démarrer avec PlatformIO, l’IDE alternatif pour Arduino, ESP8266, ESP32 et autres micro-contrôleurs

Démarrer avec PlatformIO, l’IDE alternatif pour Arduino, ESP8266, ESP32 et autres micro-contrôleurs

PlatformIO IDE est un environnement de développement qui peut se substituer à l’IDE Arduino traditionnel. PlatformIO prend en charge plus de 400 cartes de développement des principaux micro-contrôleurs (Atmel AVR, Espressif ESP8266 et ESP32, STMicro STM32, Teensy…). Ce n’est pas un simple éditeur de code, c’est une véritable plateforme de développement qui vise le marché professionnel avec des outils très puissants. Il est par exemple possible de tester le code sur différents micro-contrôleurs, déployer les mises à jour à distance au travers d’internet. C’est une solution qui s’adresse à l’entreprise avec une offre payante. PlatformIO est toutefois parfaitement utilisable dans le cadre des loisirs ou de l’apprentissage avec une version gratuite (Community) permet d’utiliser la quasi totalité des fonctionnalités avec certaines limitations. Par exemple, il n’est pas possible de faire plus de 50 mises à jour à distance (OTA) par mois. C’est suffisant pour une utilisation personnelle, démarrer une petit projet d’entreprise ou un établissement scolaire. La grille tarifaire est disponible ici.

Installer PlatformIO sur macOS, Windows ou Linux

L’IDE de PlatformIO est une sur-couche qui vient s’ajouter à un éditeur de code ou un éditeur de texte. PIO est proposé par défaut sous la forme d’un package pour d’éditeur de texte Open Source Atom développé par GitHub. Atom est entièrement développé en Javascript (le langage du Web) puis compilé à l’aide d’Electron. Electron est un compilateur qui permet de créer des applications multi-plateforme (cross-platform). Un même code source javascript pourra ainsi être compiler pour fabriquer une application Windows, macOS, Linux.

platformio web site

Allez sur cette page puis téléchargez la version d’Atom qui correspond à votre environnement

platformio 1 install atom

Sur macOS, décompressez simplement l’archive puis déplacez Atom dans le dossier des Applications. Pour Linux, seul regret, la version 32-bits n’est plus supportée. Il n’est donc plus possible de recycler un (trop) ancien PC pour le transformer en plateforme de développement DIY  :cry:.

Installer le package PlatformIO sous Atom

Une fois Atom installé, il faut installer le package PlatformIO. Ouvrez les préférences. En fonction de votre système d’exploitation, le chemin est différent

  • Windows, Menu: Fichier > Settings > Install
  • macOS, Menu: Atom > Preferences > Install
  • Linux, Menu: Edit > Preferences > Install

Dans le champ de recherche, saisissez platformio-ide. Il y a 3 packages disponibles :

  • platformio-ide
  • platformio-ide-terminal
  • platformio-ide-debugger

Installez les packages ide et ide-terminal en cliquant sur Install. L’installation est silencieuse mais vous pouvez la suivre en survolant la roue crantée dans le coin inférieur droit de l’écran. L’installation peut durer quelques minutes en fonction de votre débit internet. Restez sur cette page jusqu’à ce que le package soit marqué comme installé.

platformio 2 atom install packages

Lorsque l’installation est terminée, un nouvel onglet PlatformIO Home est ajouté à Atom. Cet onglet peut s’ouvrir automatiquement au démarrage d’Atom et vous permettra de gérer vos projets et mettre à jour le package et le Core de PlatformIO. Si une nouvelle version est disponible (ici la version 3.3.1), profitez en pour mettre à jour avant de continuer en cliquant sur Upgrade NOW!.

platformio 3 atom home screen update

Le menu et la barre d’outils PlatformIO

Un nouveau menu est également ajouté à la barre de menu d’Atom. Si vous fermez l’écran d’accueil, pas de panique, il est possible de le ré-ouvrir depuis le menu >> Home Screen.

Dans menu contient les options suivantesplatformIO 1 menu atom

  • Home Screen : ouvrir la page d’accueil
  • Projects Example : créé un nouveau projet à partir des exemples pour les plateformes prisent en charge
  • Initialize or Update Project : permet d’ajouter une plateforme à un projet existant. Les ressources nécessaires sont téléchargées et installées
  • Import Arduino IDE Project : importe un projet Arduino existant
  • Open Project folder : ouvre le répertoire des projets dans le gestionnaire de fichier (ou le Finder sur macOS)
  • Build : compile le code avant téléversement
  • Upload : téléverse le code sur le micro-contrôleur
  • Clean : supprime le dossier masqué .pioenv qui contient toutes les versions compilées.
  • Test : test le code pour toutes les plateformes cibles. Fonction non disponible pour la version Community gratuite.
  • Run other target : permet de choisir la cible. PlatformIO détecte seul la carte connectée et téléverse le code correspondant. Dans ce cas, on peut choisir la carte (par exemple si plusieurs cartes sont connectées à la machine), ou envoyer des fichiers dans la zone mémoire SPIFFS (contenu du dossier Data)
  • Toggle Build Panel : affiche ou masque le Terminal
  • Terminal : ouvre le Terminal sur macOS, Linux, Raspberry et Power Shell sur Windows 10
  • Library Manager : une page d’information qui explique comment gérer les librairies. Tout se fait en ligne de commande (plus loin)
  • Serial Monitor : ouvre le moniteur série. Sur Windows, une session Power Shell est lancée.
  • List Serial Ports : liste les périphériques branchés en USB pouvant communiquer via le port série
  • Update : vous pouvez directement mettre à jour le Core de PlatformIO, les packages et les librairies utilisées
  • Settings : un raccourci pour accéder au réglages d’Atom et des packages

Toutes ces fonctions prennent également place sous la forme d’une barre d’icône latérale. La barre d’icône peut être placée en haut, bas, gauche ou en bas.

platformIO 1b barre laterale atom

Installer Clang

PlatformIO utilise Clang pour l’auto-complétion des commandes. Cette installation est optionnelle.

Nouveau projet ESP8266 avec PlatformIO

Nous allons maintenant créer un petit projet ESP8266 pour comprendre le fonctionnement de l’environnement. Par rapport à l’IDE Arduino, PlatformIO met en place une structure de dossier plus complexe. Avec l’IDE Arduino, il suffit de créer un nouveau croquis pour démarrer un nouveau projet. Avec PlatformIO, ce n’est pas aussi simple. PlatformIO fonctionne avec une arborescence qui contient le code source (src), les librairies, le fichier de configuration… Heureusement, il y a un outil pour préparer tout ça. Ouvrez le menu et sélectionnez Initialize or Update PlatformIO Project.

Cette boîte de dialogue permet de faire deux choses :

  • Ajouter une cible (une carte de développement) à un projet existant
  • Ou créer une nouvelle arborescence de projet.

Création de l’arborescence

Pour créer un nouveau projet, sélectionnez la carte souhaitée dans la liste. Vous pouvez saisir les premières lettres pour la trouver plus facilement. Ensuite, cliquez sur Other à droite du champ de saisie du chemin et sélectionnez le répertoire de destination.

platformIO 5 nouveau projet board

Attention. Par rapport à l’IDE Arduino, il faut créer le dossier racine. Sinon, l’arborescence et les fichiers seront ajoutés au niveau indiqué.

Cliquez sur Process. PlatformIO va récupérer toutes les dépendances et les ressources nécessaires pour la carte sélectionnée. C’est la magie de PlatformIO.

platformIO 7 init project esp8266

Par exemple, si vous voulez développer avec les nouvelles cartes ESP32, vous n’aurez rien à installer par rapport à l’IDE Arduino. C’est un vrai confort. La première fois que vous utilisez une carte, il faut laisser un peu de temps à PIO. Il doit télécharger les ressources, les installer et dans certain cas compiler.

Voici l’arborescence type obtenue

platformIO 8 arborescence project

Regardons de plus près le fichier platformio.ini

Pour le moment, il ne contient que la cible d1 mini (Wemos d1 mini). Vous pouvez à n’importe quel moment ajouter une carte cible en lançant de nouveau l’outil  Initialize or Update PlatformIO Project (recommandé) ou manuellement. Dans ce cas, toutes les cartes sont listées ici. Nous verrons plus en détail toutes les autres options disponibles dans un prochain tutoriel.

Code Arduino

Maintenant il nous reste à créer notre premier programme. Aucun fichier de base n’est ajouté. Il faut le faire soi même. Pour cela, faites un clic droit sur le dossier scr et choisissez New File.

platformIO 9 new cpp file

Donnez un nom au fichier en lui donnant l’extension .cpp

platformIO 10 new cpp file path

Pour fonctionner sur Arduino, ESP8266, ESP32, il faut inclure la librairie Arduino.h en début de programme !

Ensuite, la programmation est parfaitement identique à l’IDE Arduino. Voici un petit programme qui fait clignoter une Led branchée sur la broche D2 de l’ESP8266.

Quelques remarques par rapport à l’IDE Arduino

  • La détection d’erreur est faite après chaque sauvegarde (CTRL + S)
  • L’utilisation du repérage des broches suivants la convention Espressif (D2 à la place de 4) génère une erreur mais fonctionne parfaitement
  • Il n’est pas nécessaire de re-compiler le code entre deux téléversement (gain de temps)

Adaptez le code à vos besoins puis enregistrez le (CTRL + S). Ensuite dans le menu choisissez Build (ou utilisez l’icone dédiée).

platformIO 11 build project

Une fois la compilation terminée, téléversez le programme avec upload.

platformIO 12 upload project

Ouvrez maintenant le moniteur série. Directement depuis le menu, via le raccourci clavier Alt + Shift + M ou depuis la barre d’icône.

platformIO 13 open serial monitor

Sélectionnez le port COM sur lequel est branché la carte et la vitesse

platformIO 14 choice port serial monitor

Vous pouvez tracer le déroulement de vos programmes comme sur l’IDE Arduino.

platformIO 15 serial monitor

Voilà qui clos ce premier tutoriel de découverte de l’environnement de développement PlatformIO. Un peu déroutant la première fois, PIO a de nombreux arguments en sa faveur. Terminé l’installation des librairies, les ressources des cartes. PIO s’occupe de tout !

 

  • Migui Pda

    Bonjour,
    un grand plaisir d’avoir découvert ici PlateformeIO (portabilité des cartes) alors que j’utilisais initialement le classique Arduino IDE pour des Arduino Nano.
    En vous lisant dans le paragraphe Code Arduino, j’y lis qu’il faut inclure la librairie Arduino pour les cartes Arduino, ESP8266, ESP32. Et alors que vous aviez initialement mentionné faire usage de la WEMOS D1 Mini, comment peut-on savoir dans quelle catégorie entre-t-elle (parmi ARDUINO, ESP8266, ESP32) en vue de savoir si on doit alors ou non inclure ladite librairie Arduino.h ?
    Cette question s’étant alors forcément pour une autre carte. Existe-t-il des listes ou est-ce acquis pour ceux qui maîtrise l’électronique (qui, vous l’aurez compris par ce type de question, n’est pas mon fort).
    Merci de votre réponse et une fois de plus pour la perfection de ce genre d’article.

    • Bonjour Migui. Oui, c’est une astuce qui permet à Platformio de cibler de nombreuses cartes de développement (plateformes 😉 ) plus pro que l’on n’utilise pas beaucoup dans le DIY car plus coûteuses (notamment STMicro STM32…). Platformio offre moins d’assistance que l’IDE Arduino. C’est à nous de déclarer les cartes que l’on souhaite utiliser dans le fichier de configuration platformio.ini. L’article sur l’ESP32 donne plus de détails sur le sujet https://projetsdiy.fr/bien-commencer-la-programmation-des-esp32-avec-platformio/. Sinon, toutes les cartes supportées sont listées ici http://platformio.org/boards. Donc pour toutes nos cartes habituelles Arduino, ESP8266, ESP32, il faudra ajouter la arduino.h au début du programme. Pour le reste Platformio s’occupe de tout.

      Avec Platformio, il est possible de compiler le code pour différentes cartes de développement (on peut faire la même chose avec l’IDE Arduino d’ailleurs). Pour cela on l’indique dans un fichier de configuration platformio.ini. C’est le seul moyen de savoir permet de compiler le code pour plusieurs cibles