🛠 Console série sur l'USB natif (CDC) du S3
Objectifs
Maîtriser la console série sur ESP32-S3 via l'USB natif. Contrairement à l'ESP32 classique, le S3 n'a pas besoin de puce pont USB-série : il possède d'une part un contrôleur USB-OTG (broches GPIO19/GPIO20) et d'autre part un périphérique USB-Serial/JTAG. En activant « USB CDC On Boot: Enabled », la commande Serial.print sort directement par le port USB de la carte. Vous apprendrez aussi la différence avec l'ancienne UART0 (GPIO43 TX / GPIO44 RX par défaut) et comment récupérer l'accès si le port disparaît.
Matériel
- 1 carte ESP32-S3 avec USB natif câblé (DevKitC-1 v1.1, XIAO ESP32S3, Feather S3…)
- 1 câble USB data
- IDE Arduino 2.x avec le core « esp32 by Espressif Systems » (v2.0.14 ou plus récent)
Code complet
// Console sur USB natif : outils Arduino -> "USB CDC On Boot: Enabled"
// (sur certaines cartes : "USB Mode: Hardware CDC and JTAG")
unsigned long t0 = millis;
uint32_t n = 0;
void setup {
Serial.begin(115200); // flux CDC, pas d'UART materielle ici
while (!Serial && millis < 5000) {
// attend que le terminal hote soit branche (max 5 s)
delay(10);
}
Serial.println;
Serial.println("ESP32-S3 : console sur USB natif (CDC)");
Serial.printf("Chip: %s, %d coeur(s), %.0f MHz\n",
"ESP32-S3", portNUM_PROCESSORS,
(double)getCpuFreqMHz);
}
void loop {
Serial.printf("[%4.1f s] message n=%u\n", (millis - t0) / 1000.0, ++n);
if (Serial.available) { // echo de ce que l'hote envoie
char c = Serial.read;
Serial.print("Recu: ");
Serial.println(c);
}
delay(1000);
}
Vérification attendue
Le moniteur série de l'IDE (ou PuTTY/Arduino Serial Monitor à 115200) affiche l'en-tête puis une ligne par seconde ; les caractères tapés côté ordinateur sont renvoyés. Tout cela avec un seul câble USB, sans pont série externe. Le moniteur système Windows confirme la présence d'un périphérique « USB Serial Device » quand la carte est reconnue.
Erreurs fréquentes
- « USB CDC On Boot » laissé sur Disabled : le code tourne mais Serial.print part sur l'UART0 (GPIO43/44) et le moniteur reste désespérément vide.
- Écrire trop tôt : sur CDC, les premiers octets émis avant l'ouverture du port sont perdus ; la boucle while (!Serial ...) ci-dessus limite le phénomène.
- Un TinyUSB/HID plus tard réclame GPIO19/20 : si l'on bascule en mode TinyUSB, le port CDC matériel disparaît ; tout se joue dans le menu Outils.
- Bloqué en boucle de reset : maintenir BOOT, presser RESET, relâcher RESET puis BOOT force le mode téléchargement (ROM) et permet de reflasher.
- Mauvais type de carte : choisir « ESP32S3 Dev Module » (ou la carte exacte), pas un modèle ESP32 ou ESP32-C3.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino