Platformio.ini, astuces et paramètres utiles. data_dir, monitor_speed, upload_port…

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Le fichier de configuration platformio.ini permet de définir les plateformes cibles, les options de compilations et de nombreux autres paramètres. La documentation est ligne est très complète, voir trop complète pour des projets simples ou lorsqu’on débute. 

 

Ce document récapitule les paramètres les plus importants à connaître lorsqu’on démarre un nouveau projet avec PlatformIO. Comment créer et ajouter un environnement d’une carte de développement, spécifier la vitesse pour téléverser, la vitesse du port série, installer et mettre à jour les librairies d’un projet, activer le système de fichier SPIFFS ou LittleFS, spécifier le chemin vers le dossier data…

Si vous rencontrez des problèmes lors de vos développement avec PlatformIO, je vous invite à consulter cet article qui récapitule les problèmes les plus courants et les remèdes à tester.

A LIRE AUSSI :
Développer avec PlatformIO. Problèmes et solutions

Structure d’un projet Arduino sous PIO, fichier platformio.ini

La structure d’un projet Arduino sous l’IDE et PlatformIO est différente. Elle est également différente après une migration.

A LIRE AUSSI :
Migrer un projet de l'IDE Arduino vers PlatformIO. ESP32, ESP8266 ou autre

Lorsqu’on développe un projet avec l’IDE Arduino, les librairies sont stockées dans les Documents dans le sous-dossier Arduino -> Libraries.

Sous PIO, il est conseillé de gérer les librairies directement dans le dossier du projet, c’est le comportement par défaut. 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.

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

#include <Arduino.h> 

Il faudra déplacer manuellement le dossier data qui contient les fichiers SPIFFS ou LittleFS (s’il existe) au même niveau que le dossier src.

Structure d’un projet Arduino Structure d’un projet PIO importé depuis l’IDE Arduino Structure d’un projet généré par PlatformIO
project_dir
├── data 
│   └── file.txt
├── main.ino
project_dir 
├── data
│   └── file.txt
├── lib 
│   └── README 
├── platformio.ini 
├── src 
│   └── main.ino
└── test 
    └── ...
project_dir
├── lib
│   └── README
├── platformio.ini
├── src
│   └── main.cpp
└── test
    └── ...

Environnement de base d’un projet platformio

Découvrons maintenant ce que contient le fichier de configuration platformio.ini qui ce trouve à la racine du projet.

La force de PIO est de pouvoir compiler un même code (projet) vers autant de cibles (cartes de développement) que l’on souhaite. La configuration de chaque carte se fait par bloc qui commence par la clé env: entre crochets

Par exemple [env:esp12e] pour la LoLin d1 mini.

Trois paramètres sont nécessaires pour définir complètement une carte :

  • Platform qui correspond au SoC utilisé par la carte (ESP32, ESP8266, Atmel AVR, STM32…). La liste complète est ici
  • Board, la carte de développement. La liste complète se trouve ici
  • Framework, l’environnement logiciel qui fera fonctionner le code du projet. Attention, chaque SoC n’est compatible qu’avec un nombre limité de framework. La liste se trouve ici.
[env:esp12e]               ## Début de configuration pour la carte de développement
platform = espressif8266   
board = esp12e
framework = arduino

C’est l’équivalent du menu sur l’IDE Arduino

esp8266 sdk esp idf espressif ide arduino install

Plutôt que de tâtonner pour trouver les bons paramètres, deux solutions sont possibles pour ajouter une nouvelle carte de développement

Ajouter une nouvelle configuration depuis le site PlatformIO

PIO répertorie presque 900 cartes de développements pour 37 plateformes différentes (Atmel AVR, Atmel SAMD, Espressif ESP8266, ESP32, STM32, PIC…)

Rechercher une carte de développement sur PIO

Il suffit de saisir le début du libellé pour trouver la carte. Il est peu probable que vous ne trouviez pas la vôtre !

Si tel est le cas, vous pouvez soumettre une demande via GitHub.

pio dev boards list platformio

Il suffit ensuite de copier la configuration de la carte dans le fichier platformio.ini

Ici par exemple celle d’une carte Heltec ESP32 Lora V2.

Configuration PlatformIO, carte de développement ESP32 Heltec Lora WiFi

Ajouter une carte de développement depuis le gestionnaire de configuration de PIO

PIO dispose d’un gestionnaire de configuration qui permet de gérer via une interface graphique les paramètres du fichier platformio.ini.

Malheureusement, il n’est pas possible de récupérer directement l’intégralité de la configuration de la carte. Il faudra saisir manuellement chaque paramètre. Je vous conseille donc de passer par la méthode précédente pour ajouter une nouvelle carte

Spécifier le port COM et la vitesse pour téléverser (upload)

Voici quelques options très utiles au quotidien pour développer des projets Arduino, ESP32, ESP8266, ESP01 avec PlatformIO

upload_port permet de spécifier le port USB sur lequel est connecté la carte. C’est utile si vous développez sur plusieurs cibles simultanément.

Voici quelques exemples en fonction de la plateforme de développement

  • /dev/ttyUSB0 – port série sur les systèmes basés sur Linux (ou macOS)
  • COM3 – port série sur Windows
  • 192.168.0.13 – adresse IP pour la mise à jour sans fil en WiFi (OTA

upload_speed permet de spécifier la vitesse de transfert (en bauds)

Cette option pourra s’avérer utile en cas de problème pour téléverser…ou pour gagner du temps en passant la vitesse de transfert au maximum.

Spécifier la vitesse du port série

monitor_speed permet de spécifier la vitesse du moniteur série

Par défaut le moniteur série est configuré à 9600 bauds. Cette option permet de spécifier la même vitesse que dans le code C++ avec la commande Serial.begin(vitesse).

Si vous rencontrez des problèmes avec le port COM

Looking for upload port...
Auto-detected: /dev/cu.usbserial-1410
Uploading .pio/build/esp01_1m/firmware.bin
esptool.py v2.8
Serial port /dev/cu.usbserial-1410
Connecting........_____....._____....._____....._____....._____....._____....._____

A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
*** [upload] Error 2
=========================== [FAILED] Took 13.47 seconds =========================

Consultez cet article

A LIRE AUSSI :
Développer avec PlatformIO. Problèmes et solutions

Ajouter des librairies à un projet

lib_deps est l’option qui permet de spécifier les librairies à inclure dans le projet

Il est possible de spécifier la (ou les) librairie(s) à ajouter au projet :

  • Le numéro de la librairie PIO. Chaque librairie référencée par l’équipe de PlatformIO est identifiée par un numéro
  • Le nom, celui utilisé.
  • Le dépôt GitHub
  • Un chemin vers un dossier local si vous avez développé votre propre librairie C++

Il est possible de spécifier la (les) version (s) autorisées avec des règles assez complexes qui sont expliquée ici.

Par convention, une version est représentée par 3 chiffres séparés par un point

<numéro de version (révision majeur)>.<numéro de révision>.<correctif (patch)>
                     1               .         2          .         3

Voici un résumé

  • ^1.2.3 toute version compatible. CONSEILLÉ
  • ~1.2.3 toute version avec les mêmes versions majeures et mineures, et une version de correctif égale ou supérieure
  • >1.2.3 toute version supérieure à 1.2.3. > =, <et <= sont également possibles
  • >0.1.0,!=0.2.0, <0.3.0 toute version supérieure à 0.1.0, différente de 0.2.0 et inférieure à 0.3.0
  • 1.2.3  n’utiliser que cette version exacte.

Comment télécharger (installer) les librairies dans un projet PlatformIO

Une fois que les librairies sont spécifiées dans le fichier de configuration, PIO s’occupe de télécharger et d’installer les dépendances avant chaque compilation.

Si aucune règle n’est précisée pour le numéro de version, il est possible de forcer la mise à jour de la librairie manuellement. Ca peut être utile pour effacer une erreur lorsqu’on appel une méthode disponible dans une nouvelle qui n’est pas encore installée en local.

Si vous rencontrez des problèmes avec les librairies, commencer par consulter cet article

A LIRE AUSSI :
Développer avec PlatformIO. Problèmes et solutions

Spécifier le chemin vers le dossier data

Le dossier data contient les fichiers nécessaires au projet que l’on souhaite téléverser sur la mémoire flash disponible sur certaines cartes de développement. Les modules ESP8266 et ESP32 disposent par exemple de 4Mo ou 16Mo de mémoire flash accessible via le bus SPI.

Ce sera par exemple les fichiers de l’interface HTML (code javascript, feuille de style CSS), des images, des fichiers de configuration au format JSON…

data_dir permet de spécifier le chemin vers le dossier data dans le projet. Par défaut le dossier data doit être situé au même niveau que le dossier src

Exemple : le dossier data se trouve dans le dossier src, ce qui est le cas lorsqu’on vient de migrer un projet Arduino vers PlatformIO.

data_dir = /src/data
A LIRE AUSSI :
Migrer un projet de l'IDE Arduino vers PlatformIO. ESP32, ESP8266 ou autre

Activer le système de fichier SPIFFS et LittleFS

Le système de fichier SPIFFS est supporté par défaut par PlatformIO. Il n’y a rien de plus à faire. Tout est expliqué en détail dans cet article

A LIRE AUSSI :
ESP8266. Téléverser le dossier data (SPIFFS ou LittleFS) depuis PlatformIO

Si votre projet nécessite LittleFS, le successeur de SPIFFS, il faudra le spécifier dans le fichier de platformio.ini à l’aide de l’option board_build.filesystem.

board_build.filesystem = littlefs

Ensuite, en fonction de la carte de développement, il faudra indiquer la taille de la mémoire flash réservée au système de fichier.

Pour spécifier la taille du File System (FS), il suffit d’ajouter l’option board_build.ldscript et de 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.ldscript = eagle.flash.4m3m.ld

Où ajouter des fichiers à téléverser

Par défaut, le dossier data qui contiendra tous les fichiers à téléverser sur la mémoire flash de l’ESP8266 ou de l’ESP32 doit se trouver au même niveau que le dossier src.

Il est également possible de spécifier manuellement l’emplacement du dossier en ajoutant la clé data_dir dans le fichier platformio.ini

Structure d'un projet PlatformIO PIO ESP8266 avec un dossier data contenant des fichiers LittleFS SPIFFS

D’autres tutoriels et projets pour aller plus loin

Et ces articles qui expliquent comment utiliser le système de fichier SPIFFS ou LittleFS sur les cartes ESP32 ou ESP8266

Mises à jour

14/09/2020 Publication de l’article

 

Avez-vous aimé cet article ?
[Total: 0 Moyenne: 0]

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

Nous serions ravis de connaître votre avis

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Sondage

Vous avez la parole. Quels sont les thèmes qui vous intéressent en 2021.

Résultats du sondage début janvier.

Merci pour votre confiance. Prenez soin de vous et passez de bonnes fêtes !

Jusqu’à 8 réponses possibles. Vous pouvez faire d’autres propositions.

Les thèmes qui vous intéressent en 2021
  • Proposer une autre réponse
Publicité
Partager
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Table des matières

S'équiper
À Lire aussi
Publicité
Domotique et objets connectés à faire soi-même
Vous avez aimé ce tutoriel

Ne manquez plus les prochains projets

Recevez chaque semaine le récapitulatif des tutoriels et projets.

Vous pouvez vous désabonner à tout moment.