Vérification de la toolchain

Installer la chaîne ESP32-S3 et valider ton premier flashage

Vérification de la toolchain

Configurer PlatformIO pour la XIAO ESP32S3 et faire clignoter la LED embarquée, avant d'ajouter une LED externe.

Durée :
Difficulté :
Documentation réalisée à 90% 90
Créée par :  Alban Petit

Ce tutoriel a pour but de vérifier que chacun a une chaîne de développement fonctionnelle avant d’attaquer la suite des aventures sur les microcontrôleurs. Au TD2, ce même montage accueillera les modules de la mallette ; au TD3, vous concevrez la carte qui les réunit.

  À faire avant la séance

L’installation de PlatformIO (voir le prérequis ci-dessus) et du support ESP32 doit être terminée.

Étape 1 : Créer le projet PlatformIO

Dans VSCode, ouvre l’onglet PlatformIO (icône fourmi dans la barre latérale) puis New Project.

Configure :

  • Name : pong-esp32
  • Board : Seeed Studio XIAO ESP32S3
  • Framework : Arduino

PlatformIO génère un dossier avec un fichier platformio.ini et un dossier src/ contenant main.cpp. Ajoute la ligne monitor_speed à la main.

; platformio.ini
[env:seeed_xiao_esp32s3]
platform = espressif32
board = seeed_xiao_esp32s3
framework = arduino
monitor_speed = 115200
  Garde la ligne #include

Le main.cpp généré commence par #include <Arduino.h>. Contrairement à un .ino de l’Arduino IDE, un fichier .cpp ne l’ajoute pas tout seul : sans cette ligne, pinMode, digitalWrite ou Serial sont inconnus et la compilation échoue ('pinMode' was not declared in this scope). Tous les programmes de l’atelier commencent donc par elle.

Étape 2 : Brancher la carte

Le connecteur USB-C de la XIAO est relié directement à l’USB natif de l’ESP32-S3 : il n’y a pas de puce USB-série, donc aucun driver à installer. Branche la carte avec un câble USB-C qui transporte des données (beaucoup de câbles ne font que charger).

  • Windows : un nouveau port COM apparaît dans le Gestionnaire de périphériques (« Périphérique série USB »).
  • macOS : le port apparaît sous la forme /dev/cu.usbmodem….
  • Linux : le port apparaît sous la forme /dev/ttyACM0 ; ton utilisateur doit appartenir au groupe dialout pour y accéder sans sudo.

PlatformIO détecte le port tout seul au moment de l’upload.

Remplace le contenu de src/main.cpp par le code ci-dessous, puis clique sur Upload (flèche →) dans la barre bleue PlatformIO en bas de VSCode.

#include <Arduino.h>

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // LOW allume la LED de la XIAO
  delay(500);
  digitalWrite(LED_BUILTIN, HIGH);  // HIGH l'éteint
  delay(500);
}
  Ça ne flashe pas ?

Si l’upload échoue (Failed to connect ou port introuvable), force le mode téléversement : débranche la carte, maintiens le bouton BOOT (marqué B), rebranche le câble USB, puis relâche BOOT et relance l’upload. Une fois l’upload terminé, appuie sur RESET (marqué R) pour lancer le programme. Si ça ne suffit pas : Récupérer une carte ESP32-S3 qui n’apparaît plus.

  Une LED en logique inversée

La LED utilisateur de la XIAO (orange, à côté du connecteur USB-C, sur GPIO21) est câblée vers le 3,3 V : elle s’allume quand la broche est à LOW et s’éteint à HIGH. Le clignotement est le même, seul le sens est inversé. La LED rouge voisine indique la charge de la batterie et ne se pilote pas.

Étape 4 : Validation individuelle

La LED orange intégrée (LED_BUILTIN) doit clignoter à 1 Hz. Montre ta carte qui clignote avant de passer à la suite : c’est la seule sortie attendue de ce TD1.

Bonus : LED externe sur breadboard

S’il te reste du temps, câble une LED externe avec sa résistance série entre la broche D3 (GPIO4) et GND. C’est ta première sortie physique : un montage d’essai, à retirer ensuite : au TD2, D3 accueille le buzzer de la mallette, et sur la carte de la console, le connecteur I2C.

BreadBoard

La photo montre une autre carte ESP32-S3 : le principe est le même, seule la broche change (D3 sur la XIAO). Cette LED externe est câblée de façon classique (anode côté broche) : HIGH l’allume.

Voici le code nécessaire au fonctionnement de cette démonstration.

#include <Arduino.h>

constexpr int LED_PIN = D3;   // GPIO4

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

Le calcul de la résistance série est détaillé dans le concept GPIO & monde numérique.

  Rendez-vous au tutoriel suivant

Le TD2 réutilise cette même carte et ce même projet PlatformIO : retire la LED externe, puis tu brancheras un à un les modules de la mallette, selon le câblage de la future carte : voir Les modules de la mallette.

Besoin d'aide ?