VSCode et PlatformIO

L’IDE Arduino est très bien pour débuter ou apprendre à programmer des microcontrôleurs.
Cependant, lorsque l’on est plus expérimenté, il devient vite frustrant car beaucoup de fonctionnalités très utiles sont manquantes : Thème sombre, auto-complétion, multilanguage, gestion efficace des librairie avec git, outils d’analyses ..
Dans cet article nous allons voir comment VSCode et PlatformIO peuvent remplacer efficacement l’IDE Arduino.

VSCode

Logo Visual Studio Code

Visual Studio Code de Microsoft est un éditeur de code (ou IDE) très efficace. Il intègre les fonctionnalités que tout bon IDE moderne doit avoir (auto-complétion, highlight, customisable …)
VS Code est Open-source, gratuit et multiplateforme (compatible Windows, Mac, Linux). De plus, il y a des milliers d’extensions qui apportent beaucoup de fonctionnalités.
VS Code devient vite un outil très flexible et indispensable.
Je vous invite à faire des recherches et surtout à adopter ce logiciel.

Il est à noter qu’il existe un fork sans les outils de télémétrie de Microsoft : VSCodium

PlatformIO

Logo PlatformIO

Avec PlatformIO, il est possible d’intégrer le support de différents microcontrôleurs dans VSCode. De plus tout devient plus simple, la gestion des bibliothèques, des outils de compilation et programmation …
La portabilité des projets est également améliorée grâce à l’intégration des librairies.
Cependant, PlatformIO nécessite d’utilisé des fichiers de configuration et l’interface de VSCode peut dérouter.
La prise en main n’est pas insurmontable.

Installation de PlatformIO dans VSCode

PlatformIO est un écosystème qui se rajoute par-dessus un environnement de développement. Il peut également être utilisé seul en ligne de commande comme décrit dans l’article « Programmer un Arduino avec un Raspberry Pi via SSH« .

Dans un premier temps, il faut télécharger et installer VSCode.

Pour installer PlatformIO dans VSCode, il faut aller dans le menu des extensions, rechercher « PlatformIO » et cliquer sur « Install ».
Comme pour les autres extensions VSCode, l’installation est très facile.

Installation de Platformio

Démarrer un nouveau projet

Pour ouvrir PlatformIO, il suffit de cliquer sur le logo dans le bandeau de gauche de VSCode.
Puis dans « QUICK ACCESS », cliquer sur « PIO HOME->Open ».

Open PlatformIO

Lorsque l’on créer un projet en cliquant sur « + New Project », nous sommes invités à entrer un nom de projet, une cible (board) et un Framework.
De nombreuses board sont utilisable avec PlatformIO (AVR, STM32, ESP32, ESP8266 …).
Il est possible d’utiliser d’autres Framework que Arduino. Par exemple STM32Cube pour les STM32 ou ESP8266 RTOS SDK …
Comme exemple nous allons créer un projet « TestProject » pour un Arduino UNO en utilisant le Framework Arduino.

PlatformIO télécharge automatiquement les outils nécessaire à l’utilisation de la carte sélectionnée pour le projet. Il n’est pas nécessaire de se préoccuper du gestionnaire de carte comme dans l’IDE Arduino.

Lorsque le projet est créé, la première chose à faire est de configurer le projet via le fichier « platformio.ini ».

Dans notre projet d’exemple nous allons utiliser un capteur de température OneWire et afficher la température sur le terminal toute les 2 secondes.
Pour utiliser le terminal intégré à l’IDE, il faut ajouter la ligne « monitor_speed = 115200 » (il faut faire correspondre la vitesse de communication avec le programme).
PlatformIO détecte automatiquement le port série attribué à la carte Arduino. Cependant lorsque plusieurs cartes sont connectées à l’ordinateur il est parfois nécessaire de spécifier le port avec la ligne « upload_port = … ».
Pour finaliser le fichier de configuration de notre exemple nous allons aussi intégrer la librairie OneWire avec la ligne « lib_deps = paulstoffregen/OneWire @ 2.3.5 ».

Au final, nous obtenons un fichier « platformio.ini » suivant :

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:uno]
platform = atmelavr
board = uno
framework = arduino
//upload_port = COM7
monitor_speed = 115200

lib_deps = paulstoffregen/OneWire @ 2.3.5

Exemple de Programme Arduino « main.cpp » :

#include <Arduino.h>
#include <OneWire.h>

#define ONEWIRE_PIN A0

uint8_t addr[8];
uint8_t data[9];
float temp;

OneWire ds;

void setup() {
  Serial.begin(115200);
  ds.begin(ONEWIRE_PIN);
  //Reset the 1-Wire bus
  ds.reset_search();
  //Check Sensor
  if (!ds.search(addr)) 
    Serial.println("No Sensor found");
  if (OneWire::crc8(addr, 7) != addr[7]) 
    Serial.println("Invalid Address");
  if (addr[0] != 0x28)
    Serial.println("Invalid Sensor");
}

void loop() {
  //Starts a temperature measurement and waits 800ms
  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);
  delay(800);
  //Reset the 1-Wire bus, select the sensor and send a scratchpad read request
  ds.reset();
  ds.select(addr);
  ds.write(0xBE);
  //Scratchpad reading
  for (byte i = 0; i < 9; i++)
    data[i] = ds.read();
  //Calculation of temperature in degrees Celsius
  temp = (int16_t) ((data[1] << 8) | data[0]) * 0.0625; 
  //Print temperature
  Serial.print("Temp.: ");
  Serial.print(temp);
  Serial.println("*c");
  delay(1200);
}

Grace à l’ajout de la ligne « lib_deps = paulstoffregen/OneWire @ 2.3.5 », il est possible d’utiliser la librairie OneWire sans devoir l’installer dans l’IDE.

Compilation, Upload et Terminal

Les icones situé en bas de l’interface de VSCode servent à lancer la compilation, le téléchargement, le terminal …

VSCode et PlatformIO : Icônes pour Compilation, Upload et Terminal

Utilisation des librairies

Comme nous l’avons vu précédemment, il est possible de lier un projet à des librairies qui seront automatiquement téléchargées et ajoutées au projets. Cela permet d’obtenir des projets totalement indépendant d’une bibliothèque de librairies et d’avoir des projets portable. Il est même possible de spécifier une version spécifique de librairies. Ce qui permet d’utiliser des versions différentes sur plusieurs projets ou de maintenir automatiquement à jour des librairies.

PlatformIO contient un outil de recherche de librairie :

Lorsque l’on choisit une librairie, l’onglet « Installation » nous permet de consulter les informations à ajouter au fichier « platformio.ini » pour utiliser la librairie.

Avec PlatformIO, il est facile de chercher et d’utiliser des librairies. L’onglet « Examples » permet de parcourir les programmes d’exemples fournis avec les librairies.

Conclusion

Même si l’utilisation de VSCode avec PlatformIO est un peu déroutante lorsque l’on a pas l’habitude d’utiliser se genre d’outils. On prends vite ses marques et on fini par abandonner l’IDE Arduino.
Tout est plus simple, plus rapide et plus puissant. PlatformIO améliore largement la gestions des cartes, des librairies et des projets. De nombreux outils viennent en aide au développeur (auto-complétion, thème sombre, flexibilité et customisation de l’espace de travail …)
Il est possible de travailler sur des projets avec de multiples langages, d’intégrer des tests unitaires et encore pleins d’autres choses.

N’hésitez pas à consulter la documentation de PlatformIO pour parcourir les possibilités offertes par cet outil.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.