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.
| Situation / objectif | Activité ciblée | Tâches associées (≤ 3) | Matériel | Langage & 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) |
| Code | Dé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). |
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.
- 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.
- Dans VSCode : Fichier > Préférences > Profils > Créer un profil…
- 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.
_ et -.- Dans votre espace personnel (lecteur P:), créer un dossier OT-Rayssac, puis à l'intérieur un dossier Seance0-PresentationOT-PlatformIO.
- Télécharger le projet test_ESP32Wroom_seance0 (lien plus bas, dans
Progs), puis extraire le.zipdans ce dossier Seance0-PresentationOT-PlatformIO. - Ouvrir le dossier sur platformio — voir la ressource 03 · Ouvrir un projet PlatformIO existant.
- 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
.cpppar 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.cppetClignotementLedBleueInterne.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
.hpour chaque fichier.cppdesrc(même nom, ex.LogoCarnus.h) — il permet àmain.cppd'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…) etAdafruit 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
- 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.
- 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.
- Brancher le potentiomètre sur le port Grove correspondant à la broche GPIO 39.
- Connecter la carte sur un port USB.
- 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.
- 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.
- Repérer le port COM de la carte (Gestionnaire de périphériques → « Silicon Labs CP210x… (COMx) »).
- 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).
- 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.
- 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.
- 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).
_ 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);
}
- 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]. - Téléverser (Upload) le programme sur la carte.
- Ouvrir le Moniteur série à 115200 bauds et observer : le compteur qui s'incrémente chaque seconde.
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.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.