Site : tvaira.free.fr

PlatformIO

PlatformIO est un écosystème open source dédié au développement IoT. PlatformIO IDE est l’environnement de développement C/C++ pour les systèmes embarqués supportés. Il est multi-plateformes (Windows, Mac et GNU/Linux) et il fournit une extension à un éditeur de texte existant : soit Atom soit VSCode.

PlatformIO va faciliter le développement embarqué professionnel. En novembre 2018, il prend en charge plus de 500 cartes de développement des principaux micro-contrôleurs (Atmel, ESP8266 et ESP32, STM32, etc …) et regroupe plus de 5000 bibliothèques.

Liens :

Installation PlatformIO IDE pour Atom sous GNU/Linux

Liens :

Installer Atom :

$ curl -sL https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'
$ sudo apt-get update
$ sudo apt-get install atom
$ sudo apt-get install clang

Démarrer Atom : aller dans Menu Edit → Preferences → Install. Puis rechercher le package platformio-ide et l’installer (avec platformio-ide-terminal).

Une fois installé, on accède à la page d’accueil de PlaformIO :

Un nouveau menu est maintenant accessible dans Atom :

Installation PlatformIO IDE pour VSCode sous GNU/Linux

Liens :

Installer VSCode :

$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
$ sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
$ sudo apt-get install apt-transport-https
$ sudo apt-get update
$ sudo apt-get install code

Démarrer VSCode : aller dans File → Preferences → Extensions. Puis rechercher le package platformio-ide et l’installer.

On accède à la fabrication (build), au téléversage (upload) et au moniteur série par la barre bleue en bas de l’IDE :

Tests

On commence par créer un nouveau projet :

On donne un nom au projet et on choisit sa carte (ici une carte ESP32 LoRa de chez Heltec) :

En fonction de la carte choisie, il peut y avoir plusieurs plateformes de développement.

L’architecture d’un projet PlaformIO est la suivante :

Le code source de l’application se situe dans le dossier src avec le fichier main.cpp suivant (par défaut pour un framework Arduino) :

#include <Arduino.h>

void setup() {
  // put your setup code here, to run once:
}

void loop() {
  // put your main code here, to run repeatedly:
}

Il est possible d’ajouter ses fichiers d’en-tête (header) .h dans le dossier include et ses bibliothèques dans le dossier lib. Tout ceci sera automatiquement pris en charge par PlatformIO.

Le fichier platformio.ini contient la configuration du projet :

[env:heltec_wifi_lora_32]
platform = espressif32
board = heltec_wifi_lora_32
framework = arduino
lib_deps =
  LoRa
  ESP8266_SSD1306
  Adafruit Unified Sensor
  DHT sensor library
upload_port = /dev/ttyUSB0
upload_speed = 115200
;monitor_speed = 115200

Les options du fichier platformio.ini sont décrites dans la documentation.

Pour ajouter des bibliothèques de la communauté au projet, il suffit d’ajouter leur nom (ou leur ID) dans la variable lib_deps. PlatformIO fournit un outil de recherche de bibliothèques bien pratique :

On choisit sa bibliothèque et on accède à l’ensemble de ces informations :

Il est aussi possible d’indiquer la version de la bibliothèque désirée en respectant les règles syntaxique définies ici.

On obtient l’environnement de développement ci-dessous :

PlatformIO facilite le développement car il est possible maintenant de fabriquer son application et la téléverser sur sa carte sans rien faire de plus !

  • Fabriquer (build) :
  • Téléverser (upload) :
  • Ouvrir le moniteur série (serial monitor) :

Après avoir choisi le port et le débit, on obtient :

Port série

Les options disponibles sont :

$ platformio device monitor --help
Usage: platformio device monitor [OPTIONS]

Options:
  -p, --port TEXT       Port, a number or a device name
  -b, --baud INTEGER    Set baud rate, default=9600
  --parity [N|E|O|S|M]  Set parity, default=N
  --rtscts              Enable RTS/CTS flow control, default=Off
  --xonxoff             Enable software flow control, default=Off
  --rts [0|1]           Set initial RTS line state, default=0
  --dtr [0|1]           Set initial DTR line state, default=0
  --echo                Enable local echo, default=Off
  --encoding TEXT       Set the encoding for the serial port (e.g. hexlify,
                        Latin1, UTF-8), default: UTF-8
  -f, --filter TEXT     Add filters / text transformation
  --eol [CR|LF|CRLF]    End of line mode, default=CRLF
  --raw                 Do not apply any encodings/transformations
  --exit-char INTEGER   ASCII code of special character that is used to exit
                        the application, default=29 (DEC)
  --menu-char INTEGER   ASCII code of special character that is used to
                        control miniterm (menu), default=20 (DEC)
  --quiet               Diagnostics: suppress non-error messages, default=Off
  -h, --help            Show this message and exit.

Liens :

Les options peuvent être placées directement dans le fichier plaftform.ini, par exemple :

...
upload_port = /dev/ttyUSB0
upload_speed = 115200
monitor_speed = 115200
monitor_filters = colorize, debug 
monitor_flags =
    --encoding
    hexlify

Retour au sommaire