Aziz Bench

Brochage ESP32 : quelles broches GPIO utiliser sans risque

Touchez une broche pour voir ce qu’elle peut faire et à quoi faire attention. Listez ensuite les broches de votre projet : le planificateur signale les broches de strapping, les GPIO en entrée seule et les broches ADC2 qui ne fonctionnent plus avec le Wi-Fi.

Brochage Raspberry Pi Pico →
  • Libre
  • Avec précaution
  • Entrée seule
  • Ne pas utiliser
  • Alimentation et contrôle
Projet

Les broches ADC2 ne fonctionnent plus quand le Wi-Fi est activé.

Ajouter la broche

Mon plan des broches

    Aucune broche pour l’instant. Choisissez-en une sur le schéma, ou ajoutez-la avec le formulaire.

    Prêt à coller en haut d’un sketch ou dans une issue.

    Les broches à éviter ou à utiliser avec précaution

    L’ESP32 a 34 GPIO, mais sur un DevKit, seuls deux tiers environ se comportent comme des broches ordinaires. Quatre groupes demandent de l’attention.

    GPIO 6 à 11 : occupés par la flash

    Ces six broches relient la puce à la flash SPI à l’intérieur du module. Les cartes DevKitC les sortent sous les noms CLK, SD0, SD1, SD2, SD3 et CMD, mais y toucher fait planter le programme ou empêche la carte de démarrer.

    GPIO 0, 2, 5, 12 et 15 : broches de strapping

    La puce lit ces broches au reset pour décider comment démarrer. Une fois le programme lancé, ce sont des GPIO normaux : ils conviennent bien comme sorties ou pour des boutons. Les problèmes viennent de tout ce qui impose le mauvais niveau à la mise sous tension, comme une résistance de pull-up, un module qui pilote la ligne ou un capteur qui la maintient.

    GPIOValeur au resetCe qu’il sélectionneEn pratique
    0Pull-up (HAUT)Mode de démarrage : HAUT lance le programme, BAS passe en mode téléchargementRien ne doit le maintenir à l’état BAS à la mise sous tension
    2Pull-down (BAS)Doit être BAS ou flottant pour le mode téléchargementPas de pull-up ; souvent la LED de la carte
    5Pull-up (HAUT)Timing SDIO esclave, avec GPIO15Sans risque pour la plupart des usages
    12Pull-down (BAS)Tension de la flash : BAS 3,3 V, HAUT 1,8 VJamais à l’état HAUT au reset
    15Pull-up (HAUT)Log de démarrage sur UART0 : HAUT l’affiche, BAS le masqueSans risque ; BAS masque seulement le log

    GPIO 34 à 39 : entrée seule

    Ces broches n’ont ni étage de sortie, ni pull-up ou pull-down interne. Elles conviennent bien aux lectures analogiques et aux boutons avec une résistance externe. Elles ne peuvent pas piloter une LED, un relais ou une ligne de bus. Les GPIO 37 et 38 existent sur la puce, mais ne sont pas sortis sur les modules WROOM.

    GPIO 1 et 3 : le port série USB

    L’UART0 est relié à la puce USB-série et sert à la fois au téléversement et à Serial. Vous pouvez réutiliser ces broches dans un projet terminé, mais vous perdez le moniteur série et le téléversement peut échouer tant que quelque chose y est branché.

    L’ADC2 ne fonctionne plus quand le Wi-Fi est activé

    L’ESP32 a deux ADC. L’ADC1 est sur les GPIO 32 à 39, l’ADC2 sur les GPIO 0, 2, 4, 12 à 15 et 25 à 27. Le pilote Wi-Fi utilise l’ADC2 : dès que le Wi-Fi démarre, les lectures sur ces broches échouent ou renvoient n’importe quoi. Dans un projet connecté, placez toutes les entrées analogiques sur l’ADC1. Vous mesurez une batterie ? GPIO 34 ou 35 avec un pont diviseur résistif, c’est le choix habituel.

    Même sur l’ADC1, les lectures ne sont pas linéaires près des extrémités de la plage. Avec une atténuation de 12 dB, Espressif recommande de rester à peu près entre 0,15 V et 2,45 V pour des résultats précis : dimensionnez le pont diviseur pour garder le signal dans cette fenêtre.

    Tableau complet des GPIO de l’ESP32

    GPIOÉtatADCTactileRTCNotes
    GPIO0Avec précautionADC2_CH1T1RTC_GPIO11strapping
    GPIO1 (TX)Avec précaution———série USB, UART0 TX
    GPIO2Avec précautionADC2_CH2T2RTC_GPIO12strapping, LED sur certaines cartes
    GPIO3 (RX)Avec précaution———série USB, UART0 RX
    GPIO4LibreADC2_CH0T0RTC_GPIO10—
    GPIO5Avec précaution———strapping, VSPI SS
    GPIO6 (CLK)Ne pas utiliser———flash SPI
    GPIO7 (SD0)Ne pas utiliser———flash SPI
    GPIO8 (SD1)Ne pas utiliser———flash SPI
    GPIO9 (SD2)Ne pas utiliser———flash SPI
    GPIO10 (SD3)Ne pas utiliser———flash SPI
    GPIO11 (CMD)Ne pas utiliser———flash SPI
    GPIO12Avec précautionADC2_CH5T5RTC_GPIO15strapping, HSPI MISO
    GPIO13LibreADC2_CH4T4RTC_GPIO14HSPI MOSI
    GPIO14LibreADC2_CH6T6RTC_GPIO16parfois actif au démarrage, HSPI SCK
    GPIO15Avec précautionADC2_CH3T3RTC_GPIO13strapping, HSPI SS
    GPIO16Libre———PSRAM sur WROVER, RX2/TX2 sur certaines cartes
    GPIO17Libre———PSRAM sur WROVER, RX2/TX2 sur certaines cartes
    GPIO18Libre———VSPI SCK
    GPIO19Libre———VSPI MISO
    GPIO21Libre———I2C SDA
    GPIO22Libre———I2C SCL
    GPIO23Libre———VSPI MOSI
    GPIO25LibreADC2_CH8—RTC_GPIO6—
    GPIO26LibreADC2_CH9—RTC_GPIO7—
    GPIO27LibreADC2_CH7T7RTC_GPIO17—
    GPIO32LibreADC1_CH4T9RTC_GPIO9quartz 32 kHz
    GPIO33LibreADC1_CH5T8RTC_GPIO8quartz 32 kHz
    GPIO34Entrée seuleADC1_CH6—RTC_GPIO4entrée seule
    GPIO35Entrée seuleADC1_CH7—RTC_GPIO5entrée seule
    GPIO36 (VP)Entrée seuleADC1_CH0—RTC_GPIO0entrée seule
    GPIO39 (VN)Entrée seuleADC1_CH3—RTC_GPIO3entrée seule

    Les broches RTC peuvent réveiller la puce de la veille profonde (deep sleep) : ext0 pour une broche, ext1 pour un groupe. Les broches tactiles peuvent la réveiller par un simple toucher. Les rôles par défaut sont ceux d’Arduino-ESP32 : Wire sur 21/22, SPI (VSPI) sur 18/19/23/5. Les broches par défaut de Serial2 ont changé avec le core 3.x : indiquez-les explicitement.

    Questions fréquentes

    Quelles broches de l’ESP32 peut-on utiliser sans risque ?

    Sur un DevKit, les GPIO sans restriction sont 4, 13, 14, 16 à 19, 21 à 23, 25 à 27, 32 et 33. Les GPIO 34 à 39 conviennent comme entrées. Les GPIO 0, 2, 5, 12 et 15 fonctionnent une fois le programme lancé, mais décident de la façon dont la puce démarre, et les GPIO 6 à 11 appartiennent à la flash. Sur les modules WROVER, les GPIO 16 et 17 sont pris par la PSRAM.

    Peut-on utiliser les broches ADC2 avec le Wi-Fi ?

    Non. Le pilote Wi-Fi utilise l’ADC2 : les lectures analogiques sur les GPIO 0, 2, 4, 12 à 15 et 25 à 27 échouent tant que le Wi-Fi est activé. Utilisez les broches de l’ADC1, les GPIO 32 à 39. L’ADC2 ne redevient utilisable qu’une fois le Wi-Fi arrêté.

    Pourquoi mon ESP32 ne démarre-t-il plus depuis que j’ai branché quelque chose sur le GPIO12 ?

    GPIO12 fixe la tension de la flash au reset. Si un pull-up ou un module branché le maintient à l’état HAUT, la puce alimente la flash en 1,8 V et les modules à flash 3,3 V ne démarrent pas. Déplacez le branchement sur une autre broche, ou gravez la tension de la flash dans les eFuses avec espefuse set-flash-voltage 3.3V. Cette dernière opération est définitive : on ne peut pas revenir en arrière.

    Quelles broches peuvent réveiller l’ESP32 de la veille profonde (deep sleep) ?

    Les GPIO RTC : 0, 2, 4, 12 à 15, 25 à 27 et 32 à 39. Utilisez ext0 pour réveiller la puce avec une seule broche et ext1 avec un groupe de broches. Les broches tactiles peuvent aussi réveiller la puce par un simple toucher.

    Quelles sont les broches I2C et SPI par défaut de l’ESP32 ?

    Dans Arduino-ESP32, Wire utilise le GPIO 21 pour SDA et le 22 pour SCL, et SPI utilise les broches VSPI : 18 SCK, 19 MISO, 23 MOSI et 5 SS. Grâce à la matrice GPIO, vous pouvez les déplacer sur presque n’importe quelle broche capable de fonctionner en sortie, en passant les broches à Wire.begin() ou SPI.begin().

    Les broches de l’ESP32 tolèrent-elles le 5 V ?

    Non. Les GPIO fonctionnent en 3,3 V et Espressif ne les garantit pas pour le 5 V. Branchez les signaux 5 V via un convertisseur de niveaux logiques ou un pont diviseur résistif.