Démarrer avec PlatformIO sur Atom • Domotique et objets connectés à faire soi-même

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 tutoriel est obsolète, je vous conseille d’installer le plugin PIO pour VSCode, une solution beaucoup plus rapide.

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.

ejnmarcvndn2chlmubdw-3367286

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

3kgdn4ebewachjxosgx1-8017204

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 pour 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é.

hihdlo489dpn7yxvxolq-3817199

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

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 suivantes

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

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éer l’arborescence du projet

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.

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.

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

project_dir
├── lib
│   └── readme.txt
├── platformio.ini
└── src
    └── main.cpp

Regardons de plus près le fichier platformio.ini

[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino

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.

thw18tnpsvdvr59iop73-6488825

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

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.

/*
 * Demo PlatformIO - ESP8266 - Blink a Led
 * Turns on an LED on for one second, then off for one second, repeatedly.
 * projetsdiy.fr - diyprojects.io
 */

#include 

#define LED_BUILTIN 4  //or D2 but display an error

void setup()
{
  // initialize LED digital pin as an output.
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED_BUILTIN, HIGH);
  // wait for a second
  delay(1000);
  // turn the LED off by making the voltage LOW
  digitalWrite(LED_BUILTIN, LOW);
  Serial.println("Blink");
   // wait for a second
  delay(1000);
}

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

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

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

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

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

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 !

Avez-vous aimé cet article ?