La prise en main du XIAO ESP32-S3 consiste à installer le support de la carte dans l’IDE Arduino, à la faire reconnaître par l’ordinateur via l’USB-C, et à téléverser un premier programme. Comme la carte est un ESP32-S3, la procédure est celle de la prise en main de l’ESP32. On l’adapte ici aux spécificités du format : barrettes à souder, antenne à clipser, LED utilisateur active à l’état bas, et surtout la séquence de récupération quand la carte « disparaît ».

Avant de commencer

La XIAO est livrée sans barrettes : souder les broches nécessaires (attention aux pâtés de soudure, la carte est minuscule). Pour le Wi-Fi/BLE, clipser l’antenne fournie sur le connecteur U.FL — un côté dans le bloc d’abord, puis presser l’autre ; ne jamais tirer sur le câble pour la retirer.

Installer le support et téléverser (Arduino)

  1. Installer l’IDE Arduino (version stable).
  2. Fichier → Préférences → URL de gestionnaire de cartes supplémentaires, ajouter : https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  3. Outils → Type de carte → Gestionnaire de cartes, chercher esp32 (Espressif) et installer la dernière version (il faut ≥ 2.0.8).
  4. Sélectionner la carte XIAO_ESP32S3 et le port (un COM3 ou plus sous Windows ; un usbmodem/usbserial sous macOS — au doute, débrancher/rebrancher pour voir lequel disparaît).
  5. Ouvrir Fichier → Exemples → 01.Basics → Blink et téléverser : la LED orange se met à clignoter.

La démarche complète (et l’alternative ESP-IDF) est détaillée dans prise en main de l’ESP32 et ESP32 Arduino-core. Ici, on s’en tient au minimum pour valider la carte.

Premier programme : la LED qui clignote

La LED utilisateur est câblée sur GPIO21, et elle est active à l’état bas : un niveau LOW l’allume, un niveau HIGH l’éteint. C’est le piège classique du « Blink à l’envers ».

En Arduino :

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);   // LED_BUILTIN = GPIO21
}
 
void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // allumée (actif à l'état bas)
  delay(500);
  digitalWrite(LED_BUILTIN, HIGH);  // éteinte
  delay(500);
}

Le même en MicroPython (une fois le firmware MicroPython flashé, voir MicroPython) :

from machine import Pin
from time import sleep
 
led = Pin(21, Pin.OUT)
while True:
    led.value(0)   # allumée
    sleep(0.5)
    led.value(1)   # éteinte
    sleep(0.5)

Pour vérifier que les radios répondent, lancer ensuite un scan Wi-Fi ou BLE (voir Wi-Fi et BLE).

Récupérer une carte qui ne répond plus

Tôt ou tard, un mauvais programme (ou un deep sleep mal réglé) fait « disparaître » la carte : plus de port, ou un port présent mais le téléversement échoue. La parade est le mode bootloader, qu’on force avec le bouton BOOT.

Procédure en quatre étapes pour passer le XIAO ESP32-S3 en mode bootloader : maintenir BOOT, brancher l'USB-C, relâcher BOOT, téléverser puis appuyer sur Reset.|640

Une fois en mode bootloader, téléverser un programme sain (le Blink fait l’affaire), puis appuyer sur Reset pour le lancer. Le bouton Reset seul, lui, relance simplement le programme déjà en place.

Moniteur série vide ou en erreur ?

L’ESP32-S3 gère l’USB nativement (pas de puce série dédiée). Si le moniteur reste muet ou renvoie une erreur à l’ouverture, activer l’option « USB CDC On Boot » dans le menu Outils, puis re-téléverser. Pour l’usage de la liaison série, voir moniteur.

Raccrochage projet

  • Étape 4 de la phase de preuve de concept. Le premier téléversement sur la carte cible valide d’un coup toute la chaîne (IDE, support ESP32, USB natif, sélection carte et port). Tant que le Blink ne clignote pas, aucune mesure ni asservissement aval n’est crédible.
  • Toutes les fiches XIAO et ESP32 aval. La séquence bootloader et l’option USB CDC On Boot débloquent la majorité des séances qui s’enlisent. Les acquérir ici, sur du code trivial, évite de les redécouvrir dans l’urgence d’un projet.

Le format timbre-poste ajoute une contrainte propre : soudure et antenne se font avant le premier essai, et une carte mal soudée donne les mêmes symptômes qu’un problème logiciel. Valider la carte nue en début de PoC évite ce doute.

Voir aussi