Débuter avec l’ESP32 et IDE PlatformIO. Programmation C++ d’objets connectés

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

PlatformIO (PIO) est un éditeur de code alternatif à l’IDE Arduino que l’on installe sous la forme d’un plugin pour de nombreux éditeurs de code à usage plus général. PlatformIO permet de développer pour la plupart des micro-contrôleurs du marché et en particulier l’ESP32 d’Espressif.

 

Avant commencer

Avant de commencer, vous devez disposer installer le plugin  PlatformIO pour l’éditeur de code favori. Ici, nous utiliserons VSCode. Le processus d’installation est les outils proposés sont similaires d’un éditeur à l’autre.

Importer un projet arduino existant sur platformio pio

Si vous débutez avec PlatformIO, commencez par lire cet article qui explique étape par étape l’installation ainsi que les bases de fonctionnement de l’environnement.

A LIRE AUSSI :
Débuter avec PlatformIO IDE sur VSCode (Windows, macOS, Raspbian, Linux)

Créer un nouveau projet ESP32

PIO est très souple. Il est possible d’ajouter une carte de développement à un projet actuel, c’est la grande force de PlatformIO, ou tout simplement créer un projet vierge. C’est la même option qui sert à tout. Sélectionnez l’option Initialize or Update PlatformIO Project depuis le menu ou depuis la barre d’icône latérale.

platformio esp32 init project

Sélectionnez votre carte de développement. Si vous utilisez une carte générique (par exemple la Doit de Geekcreit), choisissez Espressif ESP32 Dev Module dans la liste. Pour ajouter cette carte à une configuration existante, sélectionnez celle-ci dans la liste. Sinon, cliquez sur Other puis indiquez le dossier dans lequel PIO doit créer l’arborescence du projet.

platformio esp32 2 choose board

Attention. Par rapport à l’IDE Arduino, il faut créer le dossier racine. Sinon, l’arborescence et les fichiers seront ajoutés au niveau indiqué.

Cliquez enfin sur Process. PlatformIO s’occupe de récupérer et d’installer le SDL d’Espressif pour les modules ESP32. C’est la magie de PlatformIO. Si vous avez débutez la programmation avec l’IDE Arduino, vous devez me comprendre, sinon lisez cet article.

platformio esp32 3 install espressif sdk

Une fois que le SDK est installé, PIO créé la structure du projet ainsi que le fichier platformio.ini

platformio esp32 4 project structure ini file

Premier exemple : faire clignoter une Led

PIO créé l’arborescence du projet et créé automatiquement le fichier de configuration platformio.ini. Par contre c’est à nous de créer le premier fichier Arduino. Pour cela, faites un clic droit sur le dossier scr et choisissez New File.

platformIO 9 new cpp file

Donnez un nom au fichier en lui donnant l’extension .cpp

platformIO 10 new cpp file path

Pour que le programme puisse fonctionner, il faut inclure la librairie Arduino.h en début de programme ! Et oui, il faut bien indiquer à PIO que la cible doit exécuter du code Arduino.

Ensuite, la programmation est parfaitement identique à l’IDE Arduino. Voici un petit programme qui fait clignoter une Led branchée sur la broche 15 de l’ESP32. Il est parfaitement identique au code de l’ESP8266 présenté dans le tutoriel précédent. La seule différence réside dans le numéro de la broche. La broche n°15 n’existe pas sur l’ESP8266. C’est cool d’avoir autant d’E/S !

/*
 * Demo PlatformIO - ESP32 - ESP8266 - Blink a Led
 * Turns on an LED on for one second, then off for one second, repeatedly.
 * projetsdiy.fr - diyprojects.io
 */

#include <Arduino.h>

#define LED_BUILTIN 15

void setup()
{
  // initialize LED digital pin as an output.
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED_BUILTIN, HIGH);
  // wait for a second
  delay(1000);
  // turn the LED off by making the voltage LOW
  digitalWrite(LED_BUILTIN, LOW);
  Serial.println("Blink");
   // wait for a second
  delay(1000);
}

Adaptez le code à vos besoins puis enregistrez le CTRL + S. Ensuite dans le menu choisissez Build (ou utilisez l’icône dédiée).

platformio esp32 build

Vous pouvez suivre l’avancement de la compilation en survolant la roue crantée dans le coin inférieur droit de VSC.

platformio esp32 6 building

Une fois la compilation terminée, téléversez le programme avec upload.

platformIO 12 upload project

Ouvrez maintenant le moniteur série. Directement depuis le menu, via le raccourci clavier Alt + Shift + M ou depuis la barre d’icône.

platformIO 13 open serial monitor

Sélectionnez le port COM sur lequel est branché la carte et la vitesse

platformio esp32 7 serial monitor

Et voilà, on trace le déroulement du programme pour pour n’importe quelle autre carte comme sur l’IDE Arduino.

platformio esp32 8 serial monitor

Installer, mettre à jour manuellement le SDK Espressif 32

Normalement, PIO s’occupe d’installer lui même le SDK ESP-IDF pour les cartes de développement ESP32. En cas de problème, il est possible de l’installer manuellement depuis le gestionnaire de cartes

Menu PIO -> Platforms -> Espressif 32

install esp-idf espressif esp32 platformio manually

PIO conserve les versions majeures successives

Pour mettre à jour le SDK manuellement, allez dans Menu PIO -> Platforms -> Updates

Cliquer sur update to xxx pour mettre à jour le framework manuellement.

update espressif 32 esp idf platformio

D’autres projets réalisés à l’aide de PlatformIO

Avez-vous aimé cet article ?
[Total: 0 Moyenne: 0]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

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

quel modèle esp8266 choisir
Quel modèle d'ESP8266EX choisir en 2020 ?
guide choix esp32 development board
Quel ESP32 choisir en 2020 ?

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

4 Commentaires
  1. Bonjour,
    Je débute un nouveau projet sur base d’ESP32 avec pas mal d’interaction serveur (page web embarquée, envoi de donnée sur serveur distant, etc.). Quel est le meilleur environnement de développement selon vous, Platformio, Arduino (ou autre ) ?
    J’ai aussi vu Mongoose OS, connaissez vous ? Y a t il une différence de performance à utiliser l’un ou l’autre système ?

    • Bonjour Julien. Je trouve que l’IDE Arduino reste le plus facile pour le moment. PlatformIO est très bien pour les entreprises qui développent des flottes d’objets connectés. PlatformIO permet de déployer les mises à jour à distance sur des microcontrôleurs hétérogènes. Beaucoup d’opérations se font encore en ligne de commande, ce qui demande une utilisation régulière pour être productif. Coté performance, je n’ai pas fait de benchmark mais à mon avis il ne devrait pas y avoir de différence significative. PlatformIO et MangooseOS génèrent du code C/C++ qui devrait être quasi identique à celui de l’IDE Arduino. Oui, j’ai testé Mangoose OS. On s’éloigne encore un peu plus du DIY par aller vers les projets d’entreprises. MangooseOS est avant tout destiné à fonctionner avec des services en ligne tels que Amazon AWS (https://projetsdiy.fr/sdk-amazon-aws-greengrass-disponible-raspberrypi-linux/), Google IO, Microsoft Azure… A vérifier, mais il ne me semble pas possible de développer d’interface HTML. A très bientôt.

      • Merci pour votre réponse.
        Lorsque je créé un nouveau projet sous PIO, on me demande de choisir entre le framework “Arduino” et “ESP-IDF”. Quels sont les différences majeures entre ces 2 frameworks ? Sont ils tous les deux aussi complet ? Est ce que ce choix peut jouer sur les performances sur de “gros” programmes ?

        • Bonjour Julien. PlatformIO permettant de cibler plusieurs cartes pour un même projet, on peut lui indiquer de compiler le code pour un Arduino ou un ESP8266 (le framwork ESP-IDF : https://github.com/espressif/esp-idf). Il n’y a pas d’impact au niveau performance. Ce sont juste les librairies qui sont adaptées pour fonctionner sur la plateforme utilisée(ESP32, Arduino, ESP8266, STM32….). C’est ce qui st génial avec PlatformIO. Bon weekend.

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.