Pourquoi j’ai abandonné l’IDE Arduino pour PlatformIO (et repris le contrôle de mon code)
L’IDE Arduino est une passerelle formidable. C’est avec lui que la plupart d’entre nous font clignoter leur première LED ou affichent les premières données d’un capteur sur un ESP32. Il faut lui reconnaître un mérite : il rend l’électronique accessible.
Pourtant, dès que mes projets IoT ont pris de l’envergure, cet outil que je trouvais si pratique est devenu un frein. En voulant simplifier à l’extrême, l’IDE Arduino confisque le contrôle au développeur. J’ai fini par plier bagage pour m’installer sur VS Code avec PlatformIO. Voici pourquoi ce choix a radicalement changé ma façon de coder.
Le piège de la « magie » Arduino : Moins de contrôle, plus de limites
Pour faciliter la vie des débutants, Arduino utilise un préprocesseur qui fait de la magie sous le capot. En clair : il modifie le code en cache avant de le compiler.
1. L’illusion des fichiers .ino
Dans l’IDE Arduino, il est possible de déclarer une fonction tout en bas d’un script et de l’appeler tout en haut sans problème. En C++ standard, c’est une hérésie : une fonction doit obligatoirement être déclarée (via un prototype) avant d’être utilisée. Arduino génère ces prototypes automatiquement, en tâche de fond. Le problème ? Quand un projet grandit, qu’il s’étale sur plusieurs fichiers et que la magie rate, on se retrouve avec des erreurs de compilation incompréhensibles.
2. Une gestion des bibliothèques opaque
Le gestionnaire de cartes et de bibliothèques d’Arduino s’installe de manière globale sur l’ordinateur. Si l’on met à jour une bibliothèque pour un projet B, on risque de casser sans le savoir un projet A codé quelques mois plus tôt avec une ancienne version. Impossible de verrouiller proprement une version de dépendance par projet.
3. Un éditeur de texte d’un autre âge
Même dans sa version 2.x, l’IDE Arduino reste limité. L’autocomplétion est capricieuse, la navigation entre les fichiers d’un gros projet est laborieuse, et les outils de refactorisation (renommer une variable partout d’un coup, par exemple) sont quasiment inexistants.
PlatformIO + VS Code : Le choix du C++ pro et transparent
Migrer vers PlatformIO intégré à Visual Studio Code, c’est accepter de faire du vrai C++, mais avec un confort de travail incomparable. Ici, pas de fonctions magiques cachées : on écrit du code standard, rigoureux, et on sait exactement ce que l’on fait.
Le cerveau du projet : Le fichier platformio.ini
C’est la fonctionnalité majeure. Chaque projet possède son propre fichier de configuration à la racine nommé platformio.ini.
Mais au fait, c’est quoi un fichier .ini ou .toml ? Ce sont des formats de fichiers texte ultra-populaires pour store des configurations. Ils sont conçus pour être lus et modifiés très facilement, sans s’encombrer des dizaines d’accolades ou de balises propres aux fichiers JSON ou XML.
- Le format INI (Initialization) : C’est un format historique (qui pilotait les premières versions de Windows). Il fonctionne simplement par Sections entre crochets
[ ], associées à des clés et des valeurs (clé = valeur). C’est lui qui régit PlatformIO.- Le format TOML (Tom’s Obvious, Minimal Language) : C’est le cousin moderne et standardisé de l’INI. Il lui ressemble visuellement mais intègre des fonctionnalités avancées (gestion stricte des types de nombres, des dates, des listes). On le retrouve aujourd’hui partout dans le développement moderne (Rust, Python, outils web).
Dans un projet ESP32, ce fichier INI permet de piloter les environnements de manière chirurgicale :
Ini, TOML
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps =
adafruit/DHT sensor library @ ^1.4.6
pololu/VL53L1X @ ^1.3.1
Lorsque l’on ouvre le projet sur n’importe quel ordinateur, PlatformIO lit ce fichier, télécharge automatiquement les bonnes versions des bibliothèques dans un dossier isolé propre au projet, et compile. Rien ne bouge, rien ne casse dans le temps.
La puissance de l’écosystème VS Code
En passant sur VS Code, on profite de l’un des meilleurs éditeurs du marché :
- IntelliSense : Une autocomplétion ultra-rapide qui comprend réellement l’architecture du code.
- Navigation chirurgicale : Un
Ctrl + Clicsur une fonction ou une variable amène instantanément à sa définition, même si elle est cachée au fond d’une bibliothèque externe. - Gestion Git intégrée : Indispensable pour suivre l’évolution de son code et effectuer des retours en arrière propres.
En conclusion : Moins d’assistanat, plus de liberté
Quitter l’IDE Arduino demande un petit effort d’adaptation. Il faut réapprendre à inclure #include <Arduino.h> en haut de ses fichiers, déclarer ses prototypes de fonctions et structurer son code proprement.
Mais le jeu en vaut largement la chandelle. En abandonnant les béquilles magiques d’Arduino pour la rigueur de PlatformIO, on arrête de subir les caprices d’un environnement fermé. Les projets ESP32 deviennent modulaires, stables dans le temps, et l’on reprend enfin le contrôle total de son code.
