BTS CIELCybersécurité, Informatique et Réseaux, Électronique
Espace pédagogique · M. Rayssac

Séance 0 · Présentation OT & PlatformIO

Objectifs : présenter la matière et les objectifs, puis prendre en main l'environnement jusqu'à un premier échange sur la liaison série.

Séance 0
Situation / objectifActivité cibléeTâches associées (≤ 3)MatérielLangage & outils
Réceptionner une carte ESP32-WROOM, câbler une LED et un potentiomètre, importer et transférer un programme, lire/vérifier les données sur le moniteur série (UART). R2 – Installation et qualification T4 Préparation du chantier · T5 Réalisation des opérations · T6 Recettage (fiche recette) ESP32-WROOM DevKit + écran OLED + LED + potentiomètre (Grove) C++ / platformio (VSCode)
Fiche de recette : un document qui liste les scénarios de test à réaliser et les résultats attendus, pour vérifier qu'une installation fonctionne bien comme prévu. Ouvrir dès maintenant la fiche recette de cette séance et cocher chaque ligne au fur et à mesure de la progression dans le TP (ne pas attendre la fin). Elle doit être enregistrée et imprimée en fin de séance.
Compétences visées (référentiel BTS CIEL, option A)
CodeDétail
C08 CODER — Langages de développement et IDE associés (N4) ; Chaînes de développement embarqué / compilation croisée (N3) ; Programmation embarquée (N3).
C06 VALIDER — Maîtrise des environnements de développement (N2) ; Tests unitaires et d'intégration (N3) ; Fiches de recette (N3).
Connaissances nouvelles
Environnement VSCode + platformio ; structure d'un projet (src, include, lib, platformio.ini) et d'un programme (setup / loop).
Bases du C++ embarqué : compilation, lecture des erreurs, fautes de syntaxe courantes (point-virgule, nom de variable/fonction).
Liaison série UART, moniteur série, débit en bauds.
Notions OT/IoT ; GPIO ; ADC (lecture d'un potentiomètre) ; PWM (clignotement d'une LED).

1. L'OT et les objets connectés (IoT)

OT (Operational Technology) : les technologies qui pilotent et contrôlent des procédés physiques — capteurs, actionneurs, automates — par opposition à l'IT (systèmes d'information et de gestion). Dans l'industrie 4.0, IT et OT convergent.

IoT (Internet of Things, en français « Internet des objets ») : des objets qui mesurent leur environnement et communiquent leurs données sur un réseau. Toute l'année, on met en œuvre de tels objets communicants autour de la carte ESP32.

Vocabulaire
  • Capteur : composant qui mesure une grandeur physique (lumière, température, humidité…) et la transforme en signal électrique.
  • Actionneur : composant qui agit sur le monde réel (LED, moteur, relais…).
  • Automate : appareil industriel qui contrôle automatiquement une machine ou un procédé.
  • Microcontrôleur : un petit ordinateur tenant sur une puce, qui exécute un programme et pilote capteurs et actionneurs.
  • ESP32 : la carte que nous utiliserons ; elle contient un microcontrôleur avec le WiFi et le Bluetooth intégrés.

2. Découverte de VSCode — la notion d'IDE

Un IDE (Environnement de Développement Intégré) regroupe dans un seul outil tout ce qu'il faut pour développer. Le code source — le texte du programme écrit par le développeur, ici en langage C++ — y est saisi, puis l'IDE se charge de :

  • La compilation : traduire le code source écrit en C++ en un code machine — le binaire, c'est-à-dire une suite de 0 et de 1 — directement compréhensible par le microcontrôleur de la carte.
  • Le téléversement (upload) : transférer ce programme compilé dans la mémoire de l'ESP32, via le câble USB, pour qu'il s'exécute sur la carte.
  • Le débogage : rechercher et corriger les erreurs du programme — exécution pas à pas, points d'arrêt, observation de la valeur des variables.
  • Les extensions : des modules que l'on ajoute à l'IDE pour lui apporter de nouvelles fonctions (par exemple platformio pour l'embarqué, ou le pack de langue française).

On utilise Visual Studio Code avec l'extension platformio IDE pour programmer l'ESP32.

3. L'environnement : VSCode + platformio

Pour ce cours, on travaille dans un profil VSCode dédié « OT-Rayssac » : une configuration séparée, avec ses propres extensions et réglages.

Obligatoire, avant toute installation d'extension :
  1. Dans VSCode : Fichier > Préférences > Profils > Créer un profil…
  2. Le nommer « OT-Rayssac », puis l'activer : Fichier > Préférences > Profils > OT-Rayssac, cliquer dessus.

L'environnement de développement — VSCode et l'extension platformio IDE — s'installe une seule fois sur le poste. La procédure complète (prérequis, extensions, configuration) est décrite dans la ressource 01 · Installation de platformio.

4. Importer le programme de test

Le projet fourni, test_ESP32Wroom_seance0, est volontairement plus riche qu'un simple test de liaison série : il pilote un écran OLED, lit un potentiomètre, fait clignoter des LED et envoie un message de bienvenue par liaison série. Ce n'est pas grave si le code n'est pas encore compris en détail : l'objectif ici est de découvrir comment un projet platformio est organisé, en observant les dossiers qui le composent.

Noms de dossiers et de projets : jamais d'espace, d'accent ni de caractère spécial (é, à, ç, espace, /, \, etc.) dans un nom de dossier ou de projet — cela peut provoquer des erreurs d'ouverture de projet, de compilation ou de chemin d'accès. N'utiliser que des lettres non accentuées, des chiffres, _ et -.
  1. Dans votre espace personnel (lecteur P:), créer un dossier OT-Rayssac, puis à l'intérieur un dossier Seance0-PresentationOT-PlatformIO.
  2. Télécharger le projet test_ESP32Wroom_seance0 (lien plus bas, dans Progs), puis extraire le .zip dans ce dossier Seance0-PresentationOT-PlatformIO.
  3. Ouvrir le dossier sur platformio — voir la ressource 03 · Ouvrir un projet PlatformIO existant.
  4. Patienter : platformio installe le nécessaire au premier build.

Découverte de l'arborescence du projet

Dans l'Explorateur (à gauche), sans ouvrir chaque fichier en détail, repérer les dossiers suivants :

  • src : le code source, réparti en un fichier .cpp par fonctionnalité plutôt que tout regroupé dans un seul fichier :
    • main.cpp : le programme principal, qui assemble et appelle toutes les autres fonctionnalités ;
    • LogoCarnus.cpp : affiche le logo du lycée sur l'écran OLED au démarrage ;
    • LectureADCpin39.cpp : lit la tension du potentiomètre sur la broche 39 (ADC) ;
    • ClignotementPin27.cpp et ClignotementLedBleueInterne.cpp : font clignoter respectivement une LED externe (broche 27) et la LED bleue intégrée à la carte ;
    • messageUART.cpp : envoie le message de bienvenue dans le moniteur série.
  • include : un fichier d'en-tête .h pour chaque fichier .cpp de src (même nom, ex. LogoCarnus.h) — il permet à main.cpp d'utiliser les fonctions définies dans les autres fichiers.
  • lib : les bibliothèques externes, ici trois bibliothèques Adafruit nécessaires pour piloter l'écran OLED : Adafruit SSD1306 (le pilote de l'écran), Adafruit GFX Library (dessin : texte, formes, jauges…) et Adafruit BusIO (communication de bas niveau avec l'écran).
  • platformio.ini : le fichier de configuration du projet — carte utilisée, framework, plateforme (voir aperçu ci-dessous).

Aperçu du fichier platformio.ini de ce projet :

[env:upesy_wroom]
platform = https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip
board = upesy_wroom
framework = arduino
Vocabulaire
  • Projet platformio : un dossier qui contient le code (dossiers src, include, lib) et un fichier de configuration (platformio.ini).
  • platformio.ini : ce fichier de configuration ; il indique le type de carte, la vitesse de communication et les bibliothèques utilisées.
  • Fichier d'en-tête (.h) : un fichier qui déclare ce que contient un fichier .cpp, pour qu'il puisse être utilisé depuis les autres fichiers du projet.
  • Bibliothèque (lib) : du code déjà écrit par quelqu'un d'autre (ici pour piloter l'écran OLED), que l'on réutilise sans avoir à le récrire.
  • Build : l'action de compiler le projet (au premier build, platformio télécharge automatiquement les outils nécessaires).

5. Connecter, compiler et transférer

Avant de compiler, câbler les composants sur les broches utilisées par le programme.

  1. Brancher la LED sur le port Grove correspondant à la broche GPIO 27. Voir la ressource 01 · Carte ESP32 WROOM pour faire correspondre broche GPIO et port Grove.
  2. Brancher le potentiomètre sur le port Grove correspondant à la broche GPIO 39.
  3. Connecter la carte sur un port USB.
  4. Compiler (Build) puis téléverser (Upload) le programme sur la carte. Voir la ressource 04 · Compiler et transférer un programme.

Vérifier le bon fonctionnement :

  • l'écran OLED affiche d'abord le logo du lycée ;
  • puis l'écran affiche le réglage du potentiomètre sous forme d'une jauge de 0 à 100 % ;
  • tourner le potentiomètre fait varier cette jauge et la vitesse de clignotement de la LED.

6. Utiliser le moniteur série

La carte ESP32 dialogue avec l'ordinateur par une puce USB-série CP210x (pilote déjà installé) qui crée un port COM virtuel.

Vocabulaire
  • Liaison série : une communication où les données sont transmises un bit après l'autre, ici entre la carte et l'ordinateur par le câble USB.
  • Moniteur série : la fenêtre de l'IDE qui affiche, sur l'ordinateur, les messages envoyés par la carte.
  • Débit (bauds) : la vitesse de transmission, en bits par seconde ; elle doit être identique côté carte et côté moniteur (ici 115200).
  • Pilote (driver) : le petit logiciel qui permet à Windows de reconnaître la puce CP210x.
  • Port COM (COM pour COMmunication) : le « numéro de porte » (COM3, COM4…) que Windows attribue à la carte pour communiquer avec elle.
  1. Repérer le port COM de la carte (Gestionnaire de périphériques → « Silicon Labs CP210x… (COMx) »).
  2. Ouvrir le Moniteur série et le régler à 115200 bauds, puis démarrer l'écoute (Start Monitoring). Voir la ressource 06 · Le moniteur série (extension Serial Monitor).
  3. Observer : les messages de bienvenue qui défilent dans le moniteur série, l'écran OLED qui affiche le logo puis une jauge, et les LED qui clignotent — la chaîne fonctionne.
  4. Sans arrêter le moniteur série, relancer un Upload : le transfert échoue (port COM déjà utilisé par le moniteur). Arrêter le moniteur (Stop Monitoring), puis relancer l'Upload : il réussit cette fois. Retenir la règle : toujours arrêter le moniteur série avant un transfert.

7. Créer un projet simple « moniteur série »

Pour finir, créer soi-même un nouveau projet platformio n'utilisant que la liaison série (un message puis un compteur), le téléverser et l'observer.

  1. Créer un nouveau projet platformio nommé test_moniteur_serie-seance0, dans le dossier Seance0-PresentationOT-PlatformIO créé au chapitre 4, pour une carte ESP32-WROOM. Voir la ressource 05 · Créer un nouveau projet (ESP32 WROOM).
Nom du projet : pas d'accent, d'espace ni de caractère spécial (é, à, ç, espace…) — cela peut provoquer des erreurs de compilation. N'utiliser que des lettres non accentuées, des chiffres, _ et -.

Pour un nom composé de plusieurs mots, on peut aussi utiliser le camelCase : pas d'espace ni de tiret entre les mots, chaque mot (sauf le premier) commençant par une majuscule — ex. testMoniteurSerie.

Remplacer le contenu de src/main.cpp par le code ci-dessous. Attention, il contient des erreurs de saisie volontaires. Même si vous les repérez à la lecture, ne les corrigez pas tout de suite : lancer directement la compilation, puis corriger les erreurs une par une, au fur et à mesure des messages affichés par le compilateur, en s'aidant de la ressource 04 · Compiler et transférer un programme.

#include <Arduino.h>

void setup() {
  Serial.begin(115200)
  Serial.println("Bonjour depuis l'ESP32 !");
}

void loop() {
  static int compteur = 0;
  Serial.println(comptuer);
  compteur++;
  dalay(1000);
}
  1. Compiler (Build) : corriger les erreurs signalées une par une, en repartant à chaque fois de la toute première ligne d'erreur, jusqu'à obtenir [SUCCESS].
  2. Téléverser (Upload) le programme sur la carte.
  3. Ouvrir le Moniteur série à 115200 bauds et observer : le compteur qui s'incrémente chaque seconde.
Le message de bienvenue ne s'affiche qu'une seule fois, au démarrage de la carte (dans setup()) — comme le moniteur série est ouvert après ce démarrage, il ne l'affichera pas. Pour le voir : activer l'outil Reconnexion automatique (voir la ressource 06 · Le moniteur série), puis faire un reset de la carte (bouton RESET, ou débrancher/rebrancher le câble USB) — le moniteur se reconnecte automatiquement et affiche le message de bienvenue.
À retenir : IDE, extension platformio, profil VSCode, puce CP210x et port COM, liaison série et moniteur série (débit en bauds).
À la fin de la séance, effacer la carte ESP32 afin qu'elle soit vierge pour le prochain créneau : dans platformio, panneau PlatformIO (icône fourmi) → Project Tasks → votre environnement → PlatformErase Flash (ou pio run --target erase dans le terminal). Cette méthode efface la totalité de la puce flash, contrairement à un simple programme vide qui ne remplace que le programme (sketch) et laisse les autres données de la puce intactes. Penser à fermer le moniteur série avant, comme pour un transfert classique.

Fichiers