Migrer un projet de l'IDE Arduino vers PlatformIO. ESP32, ESP8266 ou autre • Domotique et objets connectés à faire soi-même

PlatformIO semble moins accessible que l’IDE Arduino lorsqu’on débute mais c’est un éditeur de code infiniment plus puissant. Nous allons voir comment migrer (importer) un projet (ESP32, ESP8266 ou autre) existant ayant été développé avec l’IDE Arduino.

PlatformIO prend en charge le support de SPIFFS et LittleFS depuis la version 2.6.0 du SDK ESP8266. Pour utiliser LittleFS, il faudra simplement le spécifier à l’aide de l’option board_build.filesystem = littlefs au fichier de configuration platformio. Lisez ce tutoriel pour en savoir plus.

Installer PlatformIO (PIO) sur VSCode

PlatformIO (PIO) n’est pas un éditeur de code. C’est un environnement de développement en ligne de commande (appelé aussi tool-chain) disponible sous la forme d’un plugin pour la grande majorité des éditeurs de code. Atom, CLion, CodeBlocks, Eclipse, Emacs, NetBeans, Qt Creator, Sublime Text, Vim, Visual Studio, VSCode. Les fonctionnalités sont identiques quelque soit l’éditeur que vous utilisez.

Je vous conseille d’installer le plugin PIO pour Visual Studio Code (VSCode) de Microsoft, un éditeur rapide, gratuit et multi-plateforme. A vous de choisir !

Importer manuellement un projet Arduino sur PlatformIO

1 Ouvrir la page d’accueil de PIO depuis la barre d’outil située à gauche de l’écran ou depuis l’icône en forme de maison depuis la barre d’outil située en bas de l’écran.

2 Cliquer sur Import Arduino Projects pour démarrer l’importation d’un projet existant.

3 Sélectionner la carte de développement désirée

Ici on choisira une LoLin d1 mini. PIO prend en charge plus de 800 cartes de développement.

4 Localiser et sélectionner le dossier du projet Arduino / ESP32 / ESP8266 à migrer vers PIO.

5 Lancer l’importation / migration du projet vers PIO

Le dossier créé dans le répertoire Projects prend comme nom la date-heure-cible (nom de la carte de développement) et contient les éléments suivants :

  • lib les librairies privées sont déplacées dans le dossier lib
  • src contiendra tous les fichiers ino (code source du projet Arduino)
  • platformio.ini est le fichier de configuration qui permet de définir les environnements. Chaque environnement permet de préciser le type de carte de développement (Arduino, ESP32, ESP8266, STM32…), le framework à utiliser pour la compilation et de nombreux autres paramètres documentés ici.

Une fois que la copie des fichiers terminée, PIO génère le fichier de configuration du projet.

Nouvelle structure du projet Arduino sous PIO

Avec l’IDE Arduino, les librairies sont stockées dans les Documents dans un sous-dossier Arduino -> Library.

Sous PIO, il est conseillé de gérer les librairies directement dans le dossier du projet. Cela permet de gérer les versions des libraries pour chaque projet. C’est aussi possible de le faire avec l’IDE Arduino, mais c’est moins pratique.

Lorsqu’on migre un projet existant, le fichier main.ino est automatiquement déplacé dans le dossier src.

Lorsqu’on créé un nouveau projet, PIO génère un fichier cpp et ajoute un appel vers la librairie Arduino.h 

Il faudra déplacer manuellement le dossier data (s’il existe) au même niveau que le dossier src

Structure d’un projet Arduino Structure du projet PIO après migration
project_dir
├── data 
│   └── file.txt
├── main.ino
project_dir ├── data │   └── file.txt ├── lib │   └── README ├── platformio.ini ├── src │   └── main.ino └── test
    └── ...

Déplacer le dossier data contenant des fichiers LittleFS ou SPIFFS (optionnel)

Si votre projet intègre des fichiers LittleFS ou SPIFFS dans un dossier data, il faudra le déplacer manuellement pour qu’il soit au même niveau que le dossier src comme ceci.

Par défaut, PIO utilise le système de fichier SPIFFS. Pour activer LittleFS, il faudra le spécifier en ajoutant l’option board_build.filesystem = littlefs au fichier platformio.ini

Pour spécifier la taille du File System (FS), il suffit d’ajouter l’option board_build.ldscript et spécifier la valeur sous la forme eagle.flash.***.ld

Toutes les configurations disponibles sont ici.

Voici un exemple pour un LoLin d1 mini équipée de 4Mo de mémoire Flash dont 3Mo sera attribué au système de fichier LittleFS.

[env:d1_mini_lite]
platform = espressif8266
board = d1_mini_lite
board_build.filesystem = littlefs
board_build.ldscript = eagle.flash.4m3m.ld

Ensuite, utilisez l’option Upload File System Image

Pour en savoir plus sur l’utilisation de LittleFS et SPIFFS avec PIO, lisez ce tutoriel

Mises à jour

18/08/2020 Publication du tutoriel

Avez-vous aimé cet article ?

[Total: 1 Moyenne: 5]