Arduino IDE VS PlatformIO, quoi choisir ?

L’IDE arduino est très largement utilisé par la plupart des personnes lorsqu’il s’agit de programmer des microcontrôleurs. En effet, cet IDE, leadeur dans le domaine propose énormément de fonctionnalités allant de la compilation à la lecture de port série en passant par la gestion de librairies. Le tout, à la portée de tout à chacun.

Il est très intuitif et pratique pour débuter la programmation de microcontrôleur. Même si beaucoup l’utilise également à ‘haut’ niveau pour développer des programmes complexes je pense personnellement qu’il n’est pas la meilleure solution aujourd’hui, surtout dans le domaine de l’IoT.

En disant ça, je pense, notamment à tous les développeurs qui sont passés d’IDE ‘moderne’ qui inclus un thème sombre et coloré (agréable pour les yeux) et un système « d’intelligent code compétition » (pratique quand les programmes deviennent très longs) à l’IDE arduino qui ne propose pas de thème et qui reste très basique par rapport à ce qu’il existe aujourd’hui.

C’est pour ces raisons que j’ai décidé de changer d’IDE pour adopter une solution plus « développée ».

Présentation

PlateformIO est un éco système open source conçu pour le développement IOS supportant le framework Arduino. Celui-ci est accessible depuis tout type de systèmes d’exploitation puis qu’il est programmé en python.

Comme le montre l’image ci-dessous venant du site officiel de plateformIO, celui-ci est intégrable dans un grand nombre d’environnements de développement connus. Je vous apprendrais à l’installer sur Atom, mais sachez qu’il y a une documentation pour vous expliquer comment faire selon l’IDE.

L’IDE arduino étant pionnier possède beaucoup de librairies et possède une grande communauté, ce qui n’est pas forcément le cas de PlatformIO. Cependant, à part si vous voulez programmer sur des supports insolites, vous trouverez toujours des tutoriels. Sur le site, vous trouverez une bonne documentation traitant de la plupart des plateformes. De plus, les librairies que vous pouvez installer directement depuis l’environnement sont généralement documentées aussi.

Avantages de platformIO

Si vous êtes adepte du thème sombre, sachez qu’avec platformio vous retrouverez le bonheur de celui-ci. En fait, je trouve que l’aspect général de platformIO est plus agréable et ‘moderne’ que celui de l’IDE arduino. Les couleurs, l’interface, etc.

Si vous installer Clang, platformIO embarquera également un remplissage automatique, bien pratique si vous ne connaissez pas toutes les fonctions et méthode par cœur. Nous verrons comment installer tout ça en dessous.

Son désavantage principal qui est aussi sa plus grande force c’est qu’il n’est pas aussi intuitif que l’IDE arduino. En effet, nous verrons que vous serez parfois amené à utiliser une invite de commande ou toucher à certains fichiers de configuration selon les cas. Ceci offre à l’utilisateur une grande flexibilité qui ravira les plus bidouilleurs d’entre nous.

C’est pourquoi je le conseillerai à des personnes expérimentées. Il est important de comprendre que l’IDE arduino est un logiciel complet tandis que platformIO est un environnement de développement. Il propose quand même beaucoup de fonctionnalités graphiques, mais l’intérêt c’est que vous pouvez l’adapter selon vos besoins.

Un dernier truc aussi que je trouve excellent ! C’est la gestion de l’interface. Celui de platformIO contrairement à son grand frère est très modulable. Vous pouvez avoir une fenêtre qui affiche le code partagé avec le dossier du projet sur un écran et sur un autre avoir les terminaux pour upload le programme et avoir le retour de la liaison série sans problèmes, c’est très confortable pour programmer 😊.

Installer et appréhender platformIO

PlatformIO est un écosystème qui se rajoute par-dessus un environnement de développement. J’utilise Atom personnellement ! Cet éditeur de texte créé par Github est très utilisé et je pense que vous l’utiliserez pour d’autres applications pratiques si vous vous intéressez à la programmation.

Sur la page d’accueil du logiciel, vous verrez un bouton « Install a package ». Un package est un regroupement de fonctionnalités propre à une ou plusieurs plateformes de développement. Nous allons chercher platformio-ide-terminal.

ATTENTION

L’installation de l’écosystème peut prendre du temps.

À la fin de l’installation, on vous proposera généralement d’installer Clang. Ce logiciel permet le remplissage automatique des fonction, méthode, variables, etc. Rendez-vous sur le lien indiquer puis télécharger la version qui correspond à votre système d’exploitation.

Si comme moi vous êtes sur Windows, à la fin de l’installation Clang affichera une erreur ! Ce n’est rien, redémarrez simplement votre ordinateur et l’on se retrouve sur platformIO.

Je vais maintenant vous faire un tour d’horizon de l’IDE.

Sachez que je ne suis pas un expert dans le domaine, je ne suis dessus que depuis une semaine. Je vais simplement vous présenter les parties qui me semblent importantes pour débuter, celle que j’ai moi-même utilisée ! Si vous voulez en apprendre plus sur platformIO, rendez-vous sur leurs documentations. Je ne fais que partager mon expérience dans cet article. Si je découvre de nouvelles fonctionnalités à l’avenir j’en parlerai surement dans une newsletter ! Abonnez-vous 😉?

Le home de platformIO est constitué de 3 onglets importants ! Les onglets bobards et librairies sont respectivement ceux qui vont permettre d’ajouter des cartes et des librairies à l’IDE.

L’onglet Home est celui sur lequel vous arriverez. Il est un portail entre vous et vos projets. Vous pourrez créer, ouvrir des projets ou même des exemples comme sur l’IDE Arduino.

Pour illustrer en pratique comment utilisé platformIO je vais réaliser un programme qui va permettre d’effectuer des mises à jour à distance (OTA) sur une carte ESP8266 (Wemos D1 mini).

Réaliser son premier projet

Initialisation

 

Le premier ‘projet’ que nous allons programmer sera celui de la mise à jour OTA. Je pense que c’est une fonctionnalité de l’ESP8266 qui est trop souvent laissé de côté !

Pour commencer un nouveau projet, il faut absolument installer le support pour carte ESP8266 en cliquant sur l’onglet ‘Boards’ puis en recherchant ESP8266.

Une fois installé, vous pouvez commencer un nouveau projet en cliquant sur ‘new project’ et en sélectionnant la carte que vous voulez programmer. Un groupement de dossiers va alors se créer et si tout est par défaut vous aurez l’arborescence à droite de votre fenêtre de code.

Voyons rapidement à quoi correspondent ces dossiers ! Nous toucherons à seulement deux d’entre eux dans ce tuto.

Dans un premier temps, le fichier main.cpp qui se trouve dans le dossier SRC/ est celui qui contiendra le code qu’il faudra upload.

Le fichier platformio.ini est le fichier qui va définir de quel type de projet il s’agit ! De base, il embarque les informations sur le framework utilisé, la carte ainsi que la platform. Vous pouvez très bien ajouter manuellement d’autres cartes si vous voulez rendre votre compatible. C’est bien pratique.  Pas besoin de changer les paramètres de l’IDE à chaque projet puisque c’est déjà stocké dans celui-ci !

Nous verrons qu’il est possible et quelques fois nécessaire d’ajouter des lignes à ce fichier. Ce ligne vont permettre de  spécifier certaines choses en ce qui concerne l’upload de code ou la lecture du port série.

A NOTER

nous ne parlerons pas des autres fichiers dans cet article pour la simple et bonne raison que je n’ai jamais eu l’occasion de les utiliser !

En parlant d’upload. Il y a deux moyens de téléverser le code sur votre ESP. Le premier est celui représenté par la petite flèche ! En faisant de cette manière tout est automatique. PlatformIO détecte automatiquement le port sur lequel est branchée l’ESP et va utiliser les paramètres prêts établis par la carte que vous avez sélectionnée pour téléverser le code.

La seconde méthode est par ligne de commande… Celle-ci peut paraitre inutile puisque la première est déjà assez poussée pour détecter le matériel et le port d’écoute toute seule, mais je peux vous assurer qu’il est bon de savoir comment faire. En effet, si vous avez un problème avec votre carte. Ou que la carte que vous utilisez n’a pas exactement les paramètres fournis par la librairie il est bien pratique de pouvoir personnaliser son upload.

Pour ce faire, rendez-vous dans l’onglet invite de commande ! Nous utiliserons l’option ‘run’ de la commande ‘platformio’, pour ce faire il faut taper platformio run. Ensuite, il faut spécifier une ‘target’. Dans notre cas, c’est upload. Puis, à vous de voir les informations que vous voulez préciser ! Vous pouvez ajouter le port d’upload, la vitesse en baud, etc.

Si vous voulez mettre les paramètres que vous avez utilisés dans la ligne de commande par défaut il suffit de les ajouter à l’écrit dans le fichier platformio.init que j’ai parcouru tout à l’heure ! Nous allons utiliser ce fichier afin de préciser que le port que nous utiliserons pour upload le code. Celui-ci ne sera plus le port série de base, mais une adresse IP que nous définirons un peu plus tard.

Le code

Avant de vous expliquer comment pourvoir examiner la liaison série, réalisons le programme de mise à jour OTA. Je ne vais pas trop revenir dessus (voici le lien du code). J’ai défini les variables habituelles pour me connecter au Wifi, celles pour utiliser millis() correctement ainsi qu’un nom d’hôte pour reconnaitre notre ESP à la mise à jour OTA.

La fonction confOTA permet de définir les particularités de la mise à jour allant du port 8266 (par défaut) aux affichages début. J’ai initialisé le wifi, les diverses variables et appelé la fonction confOTA() dans la fonction setup() du programme. Puis J’ai finalement appelé la méthode ‘handle’ qui permet de surveiller si une mise à jour OTA est enclenchée par l’utilisateur (moi).

Pour le fun j’ai également réalisé un blink.

Le problème c’est que j’aimerais voir les informations sur la liaison série tout en réalisant les mises à jour OTA… Comment faire ?

Et bien nous allons devoir ajouter l’adresse IP de l’ESP dans le fichier platformio.ini. Empressons-nous de lancer l’upload du programme sur la liaison série pour voir les changements. Une fois faits, nous allons nous rendre dans l’onglet suivant (de la liaison série).

Normalement, il détecte quel port utiliser et le baudrate, mais vous pouvez toujours le faire vous-même si cela ne fonctionne pas. La terminale de la liaison série s’affiche ! Vous pouvez voir qu’il indique que vous avez la possibilité de demander de l’aide en faisant Ctrl+T… En effet, vous pouvez comme pour l’upload personnalisé à peu près ce que vous voulez en ajoutant des options ! Je vous invite à lire la documentation ici pour en apprendre plus.

FINAL

 

Ajouter au fichier platformio.ini l’adresse IP de votre ESP et réuploader votre code en cliquant sur la flèche.

Désormais, les mises à jour de code se feront à distance ! Vous pourrez donc profiter à la fois des diverses informations sur la liaison série tout en réalisant des mises à jour OTA !

Avec la flexibilité de platformio, vous pouvez organiser votre espace de travail comme vous le souhaitez ! Avoir une fenêtre pour le code, la liaison série et le terminal pour des débuts est maintenant possible.

J’espère que cet article très théorique vous a plu ! J’ai pleins projets en cours qui risque de faire bientôt leurs apparitions sur le blog. En attendant, j’aimerais recueillir vos avis et conseils sur platformIO. N’hésiter donc pas à me les écrire en commentaire je me ferais un plaisir de les lire et d’y répondre.

Reçois 1 un petit guide de réalisation DIY par semaine!

+

Du contenu bonus offert à chaque nouvel article!