PlatformIO est un écosystème complet pour le développement embarqué qui s’intègre dans Visual Studio Code. C’est une plateforme professionnelle de développement qui supporte plus de 1000 cartes de développement différentes et plus de 50 plateformes, incluant Arduino, ESP32, STM32, Raspberry Pi Pico, et bien d’autres.
PlatformIO offre un environnement de développement moderne et puissant qui remplace avantageusement l’IDE Arduino traditionnel. Il combine la simplicité d’utilisation d’Arduino avec les fonctionnalités avancées d’un environnement de développement professionnel.
PlatformIO présente plusieurs avantages significatifs par rapport à l’IDE Arduino traditionnel:
PlatformIO s’installe sous VS Code en y ajoutant l’extension ‘PlatformIO IDE’:




La structure d’un projet PlatformIO est organisée de manière professionnelle:

#include <Arduino.h>
void setup() {
Serial.begin(9600);
Serial.println("Bonjour le Monde!\n");
}
void loop() {
}
Explication du code:
#include <Arduino.h>: Inclusion obligatoire de la librairie ArduinoSerial.begin(9600): Initialisation de la communication série à 9600 baudsSerial.println(): Affichage d’un message dans le moniteur série💡Note: Contrairement à l’IDE Arduino qui utilise des fichiers .ino, PlatformIO utilise des fichiers .cpp standard C++. Il faut donc inclure explicitement la librairie Arduino avec #include <Arduino.h>.

ou -> CTRL+ALT+B

La compilation vérifie le code sans le téléverser sur la carte. C’est utile pour détecter rapidement les erreurs de syntaxe.
Avantages de la compilation PlatformIO:
ou -> CTRL+ALT+U



Le téléversement (upload) compile automatiquement le projet si nécessaire, puis transfert le programme vers la carte Arduino.


ou -> CTRL+ALT+S
Le moniteur série de PlatformIO offre plusieurs avantages:
// -----------------------------------------------
// Projet: Introduction à Arduino
// Auteur: Alain Boudreault
// Date: 2026.01.25
// -----------------------------------------------
// Ajouter dans platformio.ini
// monitor_filters =
// default ; Retire les caractères de contrôle
// time ; Horodatage des lignes
// log2file ; Log les Serial.print dans le fichier “device-monitor-date-heure*.log” situé dans le dossier 'logs' du projet.
#include <Arduino.h>
void setup() {
Serial.begin(9600)
pinMode(13, 1); // OUTPUT
}
void loop() {
static int i = 0;
Serial.print("\nItération numéro: " + String(i++));
digitalWrite(13, 1); // ON
delay(500);
digitalWrite(13, 0); // OFF
delay(500);
}
👉 Tester l’application et consulter le fichier ‘log’
Explication du code:
pinMode(13, 1): Configure la broche 13 en sortie (OUTPUT = 1)digitalWrite(13, 1): Allume la LED (HIGH = 1)delay(500): Attend 500 millisecondes
#include <Arduino.h>
#define DEL_ROUGE 13
#define SORTIE 1
#define ALLUMER 1
#define ETEINDRE 0
#define DELAI 500
void setup() {
pinMode(DEL_ROUGE, SORTIE);
}
void loop() {
digitalWrite(DEL_ROUGE, ALLUMER);
delay(DELAI);
digitalWrite(DEL_ROUGE, ETEINDRE);
delay(DELAI);
}
👉 Tester l’application
Avantages des macros:
Bonnes pratiques:
// Fichier include/main.h
// Dans main.cpp, ajouter : #include "main.h"
#define DEL_ROUGE 13
#define SORTIE 1
#define ALLUMER 1
#define ETEINDRE 0
#define DELAI 500
Structure recommandée du fichier include/main.h:
#ifndef MAIN_H
#define MAIN_H
// Définitions des broches
#define DEL_ROUGE 13
// Modes des broches
#define SORTIE OUTPUT
#define ENTREE INPUT
// États logiques
#define ALLUMER HIGH
#define ETEINDRE LOW
// Temporisations
#define DELAI 500
#endif // MAIN_H
Et dans main.cpp:
#include <Arduino.h>
#include "main.h"
void setup() {
pinMode(DEL_ROUGE, SORTIE);
}
void loop() {
digitalWrite(DEL_ROUGE, ALLUMER);
delay(DELAI);
digitalWrite(DEL_ROUGE, ETEINDRE);
delay(DELAI);
}
Avantages de cette organisation:
#ifndef / #define / #endif évitent les erreursStructure professionnelle complète:
mon_projet/
├── platformio.ini # Configuration du projet
├── src/
│ └── main.cpp # Code principal
├── include/
│ ├── main.h # Constantes et macros
│ └── fonctions.h # Déclarations de fonctions
├── lib/
│ └── MaLibrairie/ # Librairies personnalisées
└── test/
└── test_main.cpp # Tests unitaires
Le fichier platformio.ini permet de configurer finement votre projet:
[env:uno]
platform = atmelavr
board = uno
framework = arduino
; Configuration du port série
monitor_speed = 9600
monitor_filters = colorize
; Librairies du projet
lib_deps =
mikem/Streaming @ ^1.0.0
adafruit/DHT sensor library @ ^1.4.4
; Options de compilation
build_flags =
-DDEBUG=1
-DVERSION="1.0.0"
; Téléversement
upload_speed = 115200
Explications:
monitor_speed: Vitesse du moniteur sériemonitor_filters: Ajout de couleurs dans le moniteur sérielib_deps: Liste des librairies avec versions spécifiquesbuild_flags: Définitions de macros pour la compilationupload_speed: Vitesse de téléversement (peut accélérer le processus)| Action | Raccourci |
|---|---|
| Compiler | Ctrl + Alt + B |
| Téléverser | Ctrl + Alt + U |
| Moniteur série | Ctrl + Alt + S |
| Nettoyer | Ctrl + Alt + C |
| Recherche des commandes PIO | Ctrl + Shift + P → “PlatformIO” |
Toujours inclure <Arduino.h>: C’est obligatoire dans les fichiers .cpp (contrairement aux .ino)
Organiser son code: Utiliser les dossiers src/, include/, lib/ selon leur fonction
Versionner avec Git: PlatformIO s’intègre parfaitement avec Git
Lire les messages de compilation: Ils contiennent des informations précieuses sur l’utilisation mémoire
Utiliser les constantes (MACROs) Arduino: OUTPUT, INPUT, HIGH, LOW préférer aux valeurs numériques
Commenter son code: Documenter les sections importantes et les choix techniques
Tester régulièrement: Compiler et téléverser fréquemment pour détecter les erreurs rapidement
Explorer les exemples: PlatformIO fournit de nombreux exemples de code
PlatformIO représente une solution efficace pour le développement Arduino et embarqué en général. En combinant la simplicité d’Arduino avec la puissance d’un IDE professionnel, avec lequel vous êtes déjà familier (VSCode), il permet aux développeurs de créer des projets plus robustes, maintenables et évolutifs (git).
Document rédigé par Alain Boudreault © 2021-2026
Version 2026.01.25.01
Contenu par VE2CUY