ESP32-S3

Espressif SystemsMCU 32-bitarduino

⚡ L’essentiel en 60 secondes

L’ESP32-S3, développé par Espressif Systems, s’est imposé comme la référence incontournable pour les nouveaux projets de l’écosystème ESP32, servant de cœur de processeur pour une multitude de cartes de développement allant des kits officiels comme le DevKitC-1 aux formats compacts tels que le Seeed XIAO ou les solutions orientées interfaces homme-machine comme le LILYGO T-Display-S3. Annoncé fin 2020 et produit en volume dès 2021, ce microcontrôleur se distingue par sa vocation hybride, combinant une puissance de calcul adaptée à l’intelligence artificielle embarquée et des capacités de connectivité sans fil modernes. Sur le plan architectural, il repose sur un système sur puce (SoC) intégrant deux cœurs de processeur Xtensa LX7 fonctionnant jusqu’à 240 MHz. Cette fréquence, qui désigne le nombre de cycles de calcul par seconde, est ici doublée par l’ajout d’instructions vectorielles spécifiques. Ces instructions permettent d’accélérer les opérations mathématiques répétitives nécessaires au traitement du signal et aux réseaux de neurones, rendant possible l’exécution locale d’algorithmes complexes comme la détection de visage via la bibliothèque ESP-WHO ou la reconnaissance vocale hors ligne avec ESP-Skainet, sans nécessiter de connexion à un serveur distant.

La gestion de la mémoire est un autre point fort de cette puce, conçue pour supporter des charges de travail lourdes. Elle dispose de 512 Ko de mémoire vive interne (SRAM) et d’une mémoire morte (ROM) de 384 ou 448 Ko. Pour les besoins plus importants, elle prend en charge une mémoire flash externe allant jusqu’à 16 Mo et une mémoire vive externe (PSRAM) jusqu’à 8 Mo. Une particularité technique notable est l’utilisation d’une interface SPI octale, qui permet d’échanger des données sur huit lignes simultanément plutôt que quatre, augmentant ainsi la bande passante vers la mémoire. Cette configuration, souvent notée N16R8 ou N8R8 selon les variantes de modules, offre une marge de manœuvre précieuse pour le stockage de modèles d’IA ou l’affichage graphique haute résolution. Cependant, cette performance a un coût en termes de disponibilité des broches : sur les modules équipés de PSRAM octale, les broches GPIO35 et 36 (et parfois 37) sont consommées par la mémoire et ne peuvent donc pas être utilisées pour d’autres fonctions, une limitation qu’il est crucial de vérifier lors de la conception du circuit.

En matière de connectivité, l’ESP32-S3 intègre le Wi-Fi 802.11 b/g/n sur la bande des 2,4 GHz ainsi que le Bluetooth 5.0 Low Energy (LE). Il est important de noter l’absence de support pour le Bluetooth Classic, ce qui exclut certains profils audio traditionnels mais permet de bénéficier des avantages du Bluetooth LE, notamment les modes à longue portée (Coded PHY) et à haut débit (2 Mbps). La gestion des périphériques est facilitée par la présence de deux interfaces USB distinctes. D’une part, une interface USB-OTG (On-The-Go) sur les broches GPIO19 et 20, qui permet à la carte de se comporter comme un périphérique (comme une clé USB) ou comme un hôte. D’autre part, un périphérique USB-Serial/JTAG natif, qui permet de programmer la carte et de déboguer le code via un simple câble USB, sans nécessiter de convertisseur série externe. Cette dualité simplifie grandement le développement, bien qu’elle introduise une complexité de multiplexage : si une application utilise la pile USB TinyUSB, elle peut entrer en conflit avec le port de programmation natif, nécessitant parfois de basculer sur le port série UART0 ou le mode de téléchargement ROM pour récupérer la main.

Les entrées-sorties sont nombreuses et variées, avec 45 broches GPIO programmables. Elles supportent des protocoles standards comme I2C, SPI, UART, ainsi que des fonctions spécialisées comme le PWM (modulation de largeur d’impulsion) pour le contrôle de moteurs ou de LED, et l’interface RMT pour les signaux infrarouges. Une fonctionnalité originale est la présence de 14 broches compatibles avec le tactile capacitif, permettant de créer des interfaces tactiles simples sans puce dédiée. Un coprocesseur à faible consommation, appelé ULP (Ultra-Low Power), peut prendre le relais lorsque les cœurs principaux sont en veille profonde, permettant de surveiller des capteurs avec une consommation de l’ordre du microampère. Toutefois, les développeurs doivent être vigilants concernant les niveaux logiques : les broches fonctionnent en 3,3 volts et ne tolèrent pas les signaux 5 volts, ce qui impose l’utilisation de convertisseurs de niveau pour interagir avec des composants plus anciens ou industriels. De plus, contrairement à ses prédécesseurs ESP32 et S2, l’ESP32-S3 ne possède pas de convertisseur numérique-analogique (DAC) intégré. Pour générer un signal analogique, il faut recourir à des techniques logicielles comme le filtrage du signal PWM ou l’utilisation de l’interface audio I2S.

La sécurité est également au cœur de la conception de l’ESP32-S3, avec des mécanismes matériels tels que le chiffrement de la mémoire flash AES-XTS, le démarrage sécurisé RSA et un contrôleur de monde (World Controller) qui permet d’isoler totalement deux environnements d’exécution. Cela est particulièrement utile pour les applications IoT nécessitant une séparation stricte entre le code d’application et les fonctions critiques de sécurité. L’écosystème logiciel est riche et mature, avec le support officiel complet de l’ESP-IDF (le SDK d’Espressif), du noyau Arduino, de MicroPython, de CircuitPython et même du langage Rust via la communauté esp-rs. La programmation se fait généralement via l’interface USB-Serial/JTAG ou le port UART0, avec des outils comme idf.py pour l’ESP-IDF ou l’IDE Arduino pour les débutants.

Malgré ses atouts, l’ESP32-S3 présente des pièges connus pour les développeurs. Les broches de configuration au démarrage (strapping pins), notamment GPIO0, GPIO3, GPIO45 et GPIO46, déterminent le mode de fonctionnement de la puce à la mise sous tension. Une erreur de câblage sur ces broches, comme tirer GPIO0 à l’état haut ou bas de manière inattendue, peut empêcher la carte de démarrer correctement, un phénomène souvent appelé « boot loop ». De même, les broches GPIO44 et 43 sont par défaut les ports série UART0 ; les réutiliser comme entrées-sorties génériques coupe l’accès à la console de débogage. Enfin, l’interface ADC2, utilisée pour la lecture analogique, est indisponible lorsque le Wi-Fi est actif, une contrainte héritée de la famille ESP32 qui oblige à planifier l’utilisation des capteurs analogiques en conséquence. En résumé, l’ESP32-S3 est une plateforme puissante et polyvalente, idéale pour les projets nécessitant de l’IA embarquée, une interface graphique ou une connectivité Bluetooth LE avancée, à condition de respecter scrupuleusement ses spécificités matérielles et ses contraintes de brochage.

Forum (1 sujet) →

AttrSpecsvérifié
cpudual-core Xtensa LX7 @ up to 240 MHz with added vector instructions for NN/signal-processing acceleration (ESP-DSP, ESP-NN, ESP-WHO, ESP-Skainet) (✔
memory512 KB internal SRAM, 384 KB (or 448 KB) ROM, 16 KB low-power SRAM; external flash up to 16 MB incl. high-speed octal SPI flash; PSRAM up to 8 MB octal, with configurable data/instruction cache ( datasheet✔
connectivityWi-Fi 802.11 b/g/n 2.4 GHz (40 MHz bandwidth) + Bluetooth 5 (LE) with Coded PHY long range and 2 Mbps PHY; no Bluetooth Classic (✔
usbnative USB-OTG (GPIO19/20) plus a USB-Serial/JTAG peripheral — one chip, two USB personalities (datasheet URL above).? non vérifié
gpio45 programmable GPIOs; SPI, I2S (audio AEC support), I2C, LEDC PWM, RMT, ADC, UART, SD/MMC host, TWAI (CAN), 14 capacitive-touch GPIOs, ultra-low-power (ULP) FSM coprocessor ( - ADC: two 12-bit SAR units; ADC1 channels on GPIO1–GPIO10 (datasheet URL above). No DAC (unlike ESP32/S2) — use PWM/I2S for analog out.✔
logic_level3.3 v? non vérifié
powermultiple low-power modes driven by the ULP core; deep sleep in the ~µA class (datasheet power tables). > ? non vérifié
temperaturecommercial/industrial grades; module datasheets list up to 65 °C ambient for WROOM variants, extended grades exist. > ? non vérifié
  • Fabricant : Espressif Systems (Shanghai) ; >
  • Variantes (suffices puce/module) : combos flash/PSRAM N2R2, N4R2, N8R2, N8R8, N16R8 (PSRAM octal), N8 (flash seule), versions de module U.FL (-1U) ; également ESP32-S3-PICO-1 SiP avec USB OTG et PSRAM interne (
  • Modules : ESP32-S3-WROOM-1/-1U/-2 (
  • Cartes courantes : ESP32-S3-DevKitC-1, ESP32-S3-Box-3, Seeed XIAO ESP32S3, Adafruit Feather/QT Py ESP32-S3, LILYGO T-Display-S3, M5Stack StackS3.

+ Points forts

  • Accélération IA : instructions vectorielles Xtensa + ESP-NN/ESP-DSP ; exécute ESP-WHO (détection de visage) et ESP-Skainet (parole hors ligne) sur l'appareil (
  • Flash/PSRAM SPI octale (N16R8 : 16 Mo de flash + 8 Mo de PSRAM) avec cache — marge pour gros modèles/graphismes (
  • BLE 5 : Coded PHY longue portée + PHY 2 Mbps (
  • Périphérique World Controller pour l'exécution de confiance / la séparation de privilèges (
  • Double USB (OTG + Serial/JTAG), support LCD MIPI-DSI/RGB sur certains boîtiers, interface caméra (DVP) → la puce de prédilection pour les écrans intelligents (URL datasheet ci-dessus).

− Points faibles

  • Broches de strapping GPIO0/GPIO3/GPIO45/GPIO46 : GPIO3 (sélection JTAG), GPIO45 (VDD_SPI) et GPIO46 (boot) déterminent le comportement au démarrage ; les charger = symptômes de « carte morte » (datasheet §Strapping Pins :
  • GPIO44/43 sont les broches UART0 RX/TX par défaut — les réutiliser comme GPIO casse la console ; GPIO19/20 sont les seules broches USB (URL datasheet ci-dessus).
  • La PSRAM octale vole GPIO35/36 (et GPIO37 sur certaines configs) : sur les modules N8R8/N16R8 ces broches sont consommées par la PSRAM — les cartes les perdent silencieusement (datasheet module :
  • Pas de DAC : le code de sortie analogique porté depuis ESP32/S2 doit passer sur PWM ou I2S (URL datasheet ci-dessus).
  • Muxing USB-Serial/JTAG vs USB-OTG : les applications TinyUSB revendiquent GPIO19/20 ; si l'application plante avant l'initialisation USB, vous pouvez perdre le port natif et avoir besoin d'UART0 ou du mode téléchargement ROM (docs USB ESP-IDF :
  • ADC2 bloqué tant que le Wi-Fi est actif (toute la gamme) (
  • GPIO0 ne doit pas être piloté au reset (mode de démarrage) et sur beaucoup de cartes c'est aussi le bouton BOOT — boucle de boot classique auto-infligée (URL datasheet ci-dessus).
  • Contention PSRAM + Wi-Fi plus douce que sur S2 mais le réglage de l'invalidation du cache compte pour les charges IA lourdes en PSRAM (guide PSRAM ESP-IDF :
  • Retour d'expérience expert expert — expert-microcontroleur
    • Après plusieurs mois d'utilisation des modules ESP32-S3-WROOM-1 et des kits DevKitC-1, je confirme que la puissance de calcul est réelle. Les instructions vectorielles Xtensa LX7 changent la donne pour l'IA embarquée, surtout avec ESP-NN. La connectivité BLE 5 et le Wi-Fi sont stables. Attention to… — expert-microcontroleur
    • Salut expert, merci pour le retour. Je bute justement sur ton point concernant l'absence de DAC. J'essaie de porter un vieux projet de générateur audio qui tournait sur un ESP32 classique. Sans DAC, je dois passer par du PWM ou I2S ? Le filtre passe-bas sur le PWM devient vite pénible à calibrer po… — maker-bidule
    • Pour compléter sur le DAC, oui, il faut migrer vers I2S ou utiliser la bibliothèque LEDC pour du PWM filtré, mais la qualité audio est moindre. J'ai aussi rencontré le souci des broches USB. Si ton firmware plante avant l'initialisation des GPIO19/20, tu perds le port USB natif. J'ai dû rétablir l'… — codeur_nuit

Retours et projets de la communauté

  • ESP-WHO

    ESP-WHO — real-time face detection/recognition on S3: .com/espressif/esp-who (unverified au 2026-10-13) — code communautaire hébergé sur github, statut unverified vérifié le 2026-10-13. Projet documenté dans la fiche esp32-s3 (MCU 32-bit) ; rôle : approfondir…

  • Seeed XIAO ESP32S3 getting started

    Seeed XIAO ESP32S3 getting started — (camera, BLE, battery): .seeedstudio.com/XIAO_ESP32S3_Getting_Started/ (unverified au 2026-10-13)

  • ESPHome on ESP32-S3

    ESPHome on ESP32-S3 — : .io (unverified au 2026-10-13) — référence hébergé sur esphome, statut unverified vérifié le 2026-10-13. Projet documenté dans la fiche esp32-s3 (MCU 32-bit) ; rôle : approfondir la prise en main de cette carte.

  • Broches de strapping GPIO0/GPIO3/GPIO45/GPIO46 : GPIO3 (sélection JTAG), GPIO45 (VDD_SPI) et GPIO46 (boot) déterminent le comportement au démarrage ; les charger = symptômes de « carte morte » (datasheet §Strapping Pins :
  • GPIO44/43 sont les broches UART0 RX/TX par défaut — les réutiliser comme GPIO casse la console ; GPIO19/20 sont les seules broches USB (URL datasheet ci-dessus).
  • La PSRAM octale vole GPIO35/36 (et GPIO37 sur certaines configs) : sur les modules N8R8/N16R8 ces broches sont consommées par la PSRAM — les cartes les perdent silencieusement (datasheet module :
  • Pas de DAC : le code de sortie analogique porté depuis ESP32/S2 doit passer sur PWM ou I2S (URL datasheet ci-dessus).
  • Muxing USB-Serial/JTAG vs USB-OTG : les applications TinyUSB revendiquent GPIO19/20 ; si l'application plante avant l'initialisation USB, vous pouvez perdre le port natif et avoir besoin d'UART0 ou du mode téléchargement ROM (docs USB ESP-IDF :
  • ADC2 bloqué tant que le Wi-Fi est actif (toute la gamme) (
  • GPIO0 ne doit pas être piloté au reset (mode de démarrage) et sur beaucoup de cartes c'est aussi le bouton BOOT — boucle de boot classique auto-infligée (URL datasheet ci-dessus).
  • Contention PSRAM + Wi-Fi plus douce que sur S2 mais le réglage de l'invalidation du cache compte pour les charges IA lourdes en PSRAM (guide PSRAM ESP-IDF :
  • Faire clignoter la LED RGB native sur GPIO48 debutant Schéma : IMG-esp32-s3-debutant-1-esp32-s3-rgb-gpio48-blink.svg — Carte ESP32-S3 (DevKitC-1 v1.1, XIAO ou T-Display) avec un pixel adressable WS2812 câblé sur GPIO48, broche signalée, câble USB vers l'ordinateur.
  • Lire le bouton BOOT sur GPIO0 sans se piéger debutant Schéma : IMG-esp32-s3-debutant-2-esp32-s3-bouton-boot-gpio0.svg — Bouton BOOT d'une carte ESP32-S3 relié à GPIO0 avec pull-up interne, un second bouton externe sur GPIO1, câble USB vers l'ordinateur.
  • Console série sur l'USB natif (CDC) du S3 debutant Schéma : IMG-esp32-s3-debutant-3-esp32-s3-console-usb-cdc.svg — Carte ESP32-S3 reliée par un seul câble USB à l'ordinateur, le moniteur série affichant des messages, la mention USB CDC On Boot Enabled visible dans le menu Outils.
  • Bandeau NeoPixel piloté par le périphérique RMT intermediaire Schéma : IMG-esp32-s3-intermediaire-1-esp32-s3-neopixel-rmt.svg — Bandeau de 8 pixels WS2812 alimenté en 5 V via le bus USB, données reliées à GPIO48 par une résistance de 330 ohm, masse commune avec la carte ESP32-S3.
  • Service batterie BLE 5 avec notification intermediaire Schéma : IMG-esp32-s3-intermediaire-2-esp32-s3-ble5-service-batterie.svg — Carte ESP32-S3 émettant des ondes BLE vers un smartphone affichant le niveau de batterie, avec la mention Bluetooth 5 LE, Coded PHY et 2 Mbps.
  • Caméra OV2640 : capture et serveur MJPEG intermediaire Schéma : IMG-esp32-s3-intermediaire-3-esp32-s3-camera-ov2640.svg — Module caméra DVP OV2640 connecté au bus parallèle d'une carte ESP32-S3 (type DevKitC-1 avec connecteur caméra ou XIAO avec extension), flux vidéo affiché dans un navigateur via Wi-Fi.
  • Clavier USB HID via l'USB-OTG natif (TinyUSB) avance Schéma : IMG-esp32-s3-avance-1-esp32-s3-usb-otg-hid-clavier.svg — ESP32-S3 connecté par GPIO19/GPIO20 (USB-OTG) à un ordinateur et se faisant reconnaître comme clavier USB, avec un bouton physique sur GPIO1 déclenchant une frappe.
  • Inference IA accélérée par les instructions vectorielles avance Schéma : IMG-esp32-s3-avance-2-esp32-s3-inference-ia-vectorielle.svg — Puce ESP32-S3 avec son double cœur LX7 et ses extensions vectorielles, un petit réseau de neurones en couches traversant la puce, chronomètre symbolisant le gain ESP-NN face à une puce sans vectoriel.
  • Dompter le double USB : Serial/JTAG et OTG de front avance Schéma : IMG-esp32-s3-avance-3-esp32-s3-dual-usb-jtag-cdc.svg — Carte ESP32-S3 avec deux connecteurs USB : l'un relié au périphérique USB-Serial/JTAG, l'autre au contrôleur OTG GPIO19/GPIO20, l'IDE affichant console série et débogage GDB simultanés.

Bibliothèque de code — exemples écrits pour cette carte

  • clignotante.ino Arduino

    Le test réflexe de la carte : la LED clignote à 1 Hz grâce à millis() au lieu de delay(), ce qui laisse la boucle disponible pour le Wi-Fi ou les capteurs. Le moniteur affiche aussi la mémoire libre,…

  • bouton-led.ino Arduino

    Un bouton entre GPIO4 et GND, tiré en l'air par la résistance interne : chaque appui franc est compté et affiché. Le filtre anti-rebond de 40 ms élimine les rebonds mécaniques qui feraient compter de…

  • respiration.ino Arduino

    Le PWM matériel (LEDC) génère la porteuse tout seul : analogWrite applique un rapport cyclique 0-255 et la LED respire sans consommer de temps CPU. La fréquence choisie évite le sifflement des pilote…

  • dht22.ino Arduino

    Le DHT22 fournit température et humidité sur un seul fil : la bibliothèque Adafruit décode les trames 40 bits, et le script ajoute le point de rosée. La cadence est volontairement de 2 s, maximum du …

  • oled-i2c.ino Arduino

    L'OLED SSD1306 est l'afficheur I2C universel : deux fils, aucune bibliothèque propriétaire. Le sketch écrit dans un framebuffer puis d'un seul display() — la bonne discipline pour éviter le scintille…

  • serveur-web.ino Arduino

    Le grand classique connecté : la carte sert une page HTML sur le réseau local, deux liens allument la LED, et un ADC apparaît en direct. Aucune infrastructure externe — le serveur tourne dans la cart…

  • ble-compteur.ino Arduino

    La carte devient un périphérique BLE : un service personnalisé expose un compteur d'appuis qu'un téléphone (nRF Connect) lit et suit par notifications. Le plus simple des scénarios radio sans point d…

  • servo.ino Arduino

    Le standard absolu de la mécanique : un servo MG90/SG90 balaie 0-180° piloté en PWM 50 Hz. Sur ESP32, la bibliothèque Servo s'appuie sur LEDC, donc presque n'importe quelle broche convient.

  • sommeil-profond.ino Arduino

    En sommeil profond, le SoC consomme quelques microampères : réveil par minute ou par appui, l'autonomie d'une pile tient des mois. RTC_NOINIT_ATTR garde le compteur de réveils entre deux remises à zé…

  • mesures.py MicroPython

    MicroPython tourne sur toutes ces cartes : pas de chaîne de compilation, on édite main.py et ça part. Ce logger DHT écrit du JSON ligne à ligne dans un fichier — le format que tout outil avalera ensu…

Exemples et dépôts trouvés en ligne