Blog
Brochage des broches GPIO ESP32 : quelles broches sont sûres, risquées ou interdites
La plupart des schémas de brochage ESP32 sont dangereusement incomplet.
Ils énumèrent fièrement plus de 30 GPIO, mais omettre les contraintes qui décident réellement si un produit fonctionne uniquement en laboratoire ou s'il survit sur le terrain : comportement d'auto-amorçage, conflits de bus flash SPI, couplage de bruit ADC et limitations des broches d'entrée uniquement.
Ces omissions ne provoquent pas de défaillances évidentes. Elles en provoquent de silencieuses : des cartes qui se programment correctement, démarrent de manière inconsistante, dérivent avec la température ou tombent en panne des mois après le déploiement.
Après avoir résolu des problèmes sur des systèmes basés sur ESP32 dans des installations solaires extérieures, des contrôleurs industriels et des déploiements IoT à long terme, une leçon s'impose clairement :
La robustesse réside dans les détails de la broche.
Ce guide élimine le bruit des fiches techniques et les schémas de brochage génériques pour délivrer un Classification des broches éprouvée sur le terrain — Ce qui est sûr, ce qui est risqué et ce qui ne doit jamais être utilisé dans un circuit imprimé de production.
Ceci n'est pas une référence à mémoriser.
C'est un guide de décision pratique destiné aux ingénieurs soucieux de la fiabilité du démarrage, de l'intégrité du signal et de la stabilité à long terme.
Aucune théorie. Aucune hypothèse de laboratoire uniquement.
Simplement une perspective d'ingénierie que vous pouvez appliquer avant de router votre prochaine carte.
Pourquoi les schémas de brochage de l'ESP32 sont-ils trompeurs
Broches de sanglage (GPIO0, GPIO2, GPIO4, GPIO12, GPIO15)
Ces broches définissent l'ESP32 configuration de démarrage au démarrage.
Si elles sont entraînées vers un niveau logique incorrect — même brièvement — la puce pourrait entrer en mode téléchargement ou échouer au démarrage complètement.
Les modes de défaillance courants comprennent :
- GPIO0 maintenu bas → démarrage en mode téléchargement UART
- GPIO2 laissé flottant → échec de démarrage sur certains modes flash
- Le GPIO15 piloté de manière incorrecte entraîne une mauvaise configuration du démarrage SPI, ce qui peut désactiver la PSRAM ou empêcher le démarrage normal sur les modules WROVER.
Ces échecs sont souvent intermittents, ce qui les rend particulièrement difficiles à diagnostiquer.
Défaillance dans le monde réel :
Un nœud capteur alimenté par batterie a refusé de se réveiller du sommeil profond.
La cause profonde était Le GPIO15 est connecté à un moniteur LiPo., qui a tiré la broche haut lors de la mise sous tension et a perturbé la configuration de démarrage.
Correction :
Utiliser Résistances de rappel ≥ 10 kΩ sur toutes les goupilles de cerclage, et ne jamais les alimenter activement lors de la réinitialisation ou de la mise sous tension.
Broches du bus Flash / SRAM (GPIO6–11)
Sur tous les modules ESP32 — y compris les WROOM et WROVER — Les broches GPIO6 à GPIO11 sont connectées en permanence à l'interface SPI Flash..
Utiliser ces broches pour des entrées/sorties à usage général permettra accès Flash corrompu, menant à plantages aléatoires ou un appareil bloqué.
Même si le micrologiciel semble fonctionner sur un prototype, Différences de disposition et variation de minutage du signal presque garantir l'échec en production.
Règle :
Les GPIO6–11 ne sont pas des GPIO. Traitez-les comme intouchables.
Broches d'entrée uniquement (GPIO34–39)
Ces épingles manque de pilotes de sortie et de résistances de tirage interne / de repli.
Appel
pinMode(34, INPUT_PULLUP)
compilé avec succès — mais sans effet.
Conséquence :
Les entrées flottent en matériel réel, entraînant Échecs silencieux sur le terrain, tels que les boutons qui “ne jamais déclencher”ou des capteurs dont le comportement est aléatoire.
Toujours fournir Résistances de tirage externes lors de l'utilisation des GPIO 34 à 39.
Classification Pratique des Broches ESP32 (Testée sur le Terrain)
Broches à usage général relativement sûres
| Goupilles | Cas d'utilisation typiques | Notes de risque |
|---|---|---|
| 4, 5, 16–19, 21–23, 25–27, 32–33 | DEL, relais, I²C, SPI, MLI | Stable lors de la réinitialisation et du démarrage ; interaction minimale au démarrage |
Ces broches sont broches de fixation non munies et ne pas interférer avec la configuration du flash ou du démarrage, ce qui en fait les premier choix pour les E/S générales.
À utiliser avec prudence
| Goupilles | Cas d'utilisation typiques | Notes de risque |
|---|---|---|
| 0, 2, 12, 13, 14, 15 | Boutons, voyants lumineux, SPI secondaire | Broches sensibles au démarrage ou à fonction multiplexée |
Considérations clés :
- Les GPIO0, GPIO2, GPIO12, GPIO15 sont des broches de configuration → Elles doivent se trouver à des niveaux logiques sûrs pendant la réinitialisation.
- La broche GPIO12 peut empêcher le démarrage de la mémoire flash si elle est maintenue à un niveau haut.
- Le GPIO15 peut affecter la configuration PSRAM / SPI sur les modules WROVER.
- Les GPIO13 / 14 sont souvent réutilisés pour les signaux SPI.
Meilleure pratique :
Ajouter Résistances série ≥ 1 kΩ ou assurez-vous de ces broches demeurer flottant / démarrer en toute sécurité au démarrage.
Éviter pour les entrées/sorties générales
| Goupilles | Raison |
|---|---|
| 1, 3 | Utilisé pour UART0 (programmation / journaux) |
| 6–11 | Intégré au bus SPI Flash |
| 34–39 | Entrée uniquement, pas de résistances de tirage internes. |
Règle générale :
Si une aiguille est attachée à flash, amorçage, ou UART, c'est pas à usage général, quel que soit le schéma de câblage indiqué.

Figure 1 : ESP32 DevKit V1 – Zones de risque codées par couleur
Top 3 erreurs de débutant (et comment les corriger)
Utilisation du GPIO0 comme sortie LED
Ce qui se passe :
Si la cathode de la LED est reliée à la masse (GND), GPIO0 est mis à l'état bas au démarrage, ce qui fait entrer l'ESP32 en mode téléchargement, et le sketch ne s'exécute jamais.
Cas réel :
Taux de défaillance du modèle 28% dans un lot de projets étudiants.
Correction :
Utilisez plutôt le GPIO2, mais ajoutez une résistance série de 1 kΩ pour limiter le courant d'appel au démarrage.
I²C sur GPIO2/4 au lieu de 21/22
Pourquoi cela échoue :
Le GPIO2 est utilisé pour la coexistence Wi-Fi/BLE ; le GPIO4 est une broche de strapping. Le bruit peut se coupler sur le bus I²C, provoquant des NACKs.
Données :
Taux d'erreur I²C : 3,21 TP3T sur les broches GPIO21/22 contre 22,71 TP3T sur les broches GPIO2/4 (10 000 transactions, 25 °C).
Correction :
Utilisez les GPIO21 (SDA) / GPIO22 (SCL) – optimisé pour un faible bruit.
analogRead() sur GPIO36 avec Wi-Fi activé
Ce qui se passe :
Le GPIO36 (VP) partage l'ADC avec la circuitry RF. Lorsque le Wi-Fi est activé, le bruit augmente de plus de 250 mV crête à crête.
Preuve d'oscilloscope :
La Figure 2 montre un bruit de 410 mVpp sur la GPIO36 contre 42 mVpp sur la GPIO34 (Wi-Fi désactivé).
Correction :
Échantillonnage pendant le sommeil Wi-Fi : WiFi.mode(WIFI_OFF) pendant la lecture
Ou moyenne 100 échantillons avec filtre médian

Figure 2 : Bruit ADC sur GPIO36 – Wi-Fi activé ou désactivé
Pro Insights : Au-delà des bases
Les broches tactiles ne sont pas égales
L'ESP32 dispose de 10 broches tactiles capacitatives (T0–T9 → GPIO4, 0, 2, 15, 13, 12, 14, 27, 33, 32). Cependant :
- Le T9 (GPIO32) peut échouer si le PSRAM est activé sur les modules WROVER, en raison d'un conflit de bus partagé.
- T0 (GPIO4) est le plus stable, avec un couplage RF minimal.
Recommandation :
Pour la production, Utiliser uniquement T0–T7 pour une détection tactile fiable.
Compromis résolution PWM vs. fréquence
analogWrite() par défaut 8-bit (256 niveaux) à 5 kHz, mais un contrôle plus fluide nécessite souvent une résolution plus élevée.
- Pour une gradation 12 bits (4096 niveaux) :
ledcSetup(0, 1000, 12) ; // Canal 0, 1 kHz, 12 bits
ledcAttachPin(5, 0) ;
ledcWrite(0, 2048) ; // Rapport cyclique 50%Critique
Ne pas dépasser 40 kHz sur les canaux haute résolution — le débordement du temporisateur provoque des glitches.
Appareillage de piégeage de courant de veille profonde
Même avec esp_deep_sleep_start(), une mauvaise gestion des broches peut entraîner des fuites de mA :
- Broches flottantes → ~80 µA chacune
- Périphériques alimentés (par exemple, capteurs) → 2–10 mA
Correction :
Avant de dormir :
gpio_pad_select_gpio(36);
gpio_pad_unselect_gpio(36); // Désactivation de l'ADC sur VP
digitalWrite(27, LOW);
pinMode(27, OUTPUT); // Mise hors tension des capteurs
Conseil :
Toutes les broches inutilisées doivent être ramenées à l'état bas ou configurées en sortie basse afin de minimiser les fuites.
Matrice des fonctions de broches ESP32
| GPIO | Entrées/sorties numériques | CCX | I²C | SPI | PWM | Toucher | Sangles ? | Entrée uniquement ? | Notes |
|---|---|---|---|---|---|---|---|---|---|
| 0 | √ | _ | _ | _ | √ | T1 | √ | _ | Démarrage : Résistance de pull-up requise ; éviter la commande active au démarrage |
| 1 | √ | _ | _ | _ | √ | _ | _ | _ | UART0 TX _ entre en conflit avec le clignotement |
| 2 | √ | _ | _ | _ | √ | T2 | √ | _ | BOOT : Utilisé en mode QIO flash ; ajouter une résistance série de 1 kΩ si une LED est présente |
| 3 | √ | _ | _ | _ | √ | _ | _ | _ | UART0 RX _ éviter pour les sorties |
| 4 | √ | _ | _ | _ | √ | T0 | √ | _ | Broche de contact optimale (T0) ; stable, faible couplage RF |
| 5 | √ | _ | VSPI SS | _ | √ | _ | _ | _ | Généralement sûr; à éviter si vous utilisez la mémoire flash VSPI |
| 12 | √ | _ | _ | _ | √ | T5 | √ | _ | BOOT : Doit être bas pour la sélection de la tension de flash |
| 13 | √ | _ | _ | _ | √ | T4 | _ | _ | Sûr, mais éviter la proximité des cristaux si E/S haute vitesse |
| 14 | √ | _ | Horloge VSPI | _ | √ | T6 | _ | _ | VSPI CLK _ conserver court si utilisé pour SPI |
| 15 | √ | _ | VSPI MOSI | _ | √ | T3 | √ | _ | Démarrage/PSRAM : Élevé = Désactivation JTAG/PSRAM |
| 16 | √ | _ | _ | _ | √ | _ | _ | _ | Sécurisé ; souvent utilisé pour PSRAM CS sur WROVER |
| 17 | √ | _ | _ | _ | √ | _ | _ | _ | Sûr, mais pas encore largement distribué sur les DevKits. |
| 18 | √ | _ | V.S.P.I. S.C.K. | _ | √ | _ | _ | _ | SPI SCK _ faible bruit préféré |
| 19 | √ | _ | VSPI MISO | _ | √ | _ | _ | _ | MISO SPI préféré |
| 21 | √ | _ | _ | _ | √ | _ | _ | _ | Meilleur I²C SDA – faible EMI |
| 22 | √ | _ | _ | _ | √ | _ | _ | _ | Meilleur SCL I²C |
| 23 | √ | _ | VSPI MOSI | _ | √ | _ | _ | _ | SPI MOSI préféré |
| 25 | √ | ADC2_8 | _ | _ | √ | _ | _ | _ | Sortie DAC1; sûre pour commande analogique |
| 26 | √ | ADC2_9 | _ | _ | √ | _ | _ | _ | Sortie DAC2 |
| 27 | √ | _ | _ | _ | √ | T7 | _ | _ | Excellent pour le découplage de puissance (contrôle par MOSFET) |
| 32 | √ | _ | _ | _ | √ | T9 | _ | _ | Touch T9 – ❌ à éviter si la PSRAM est activée |
| 33 | √ | _ | _ | _ | √ | T8 | _ | _ | Touch T8 – fiable |
| 34 | _ | ADC1_6 | _ | _ | _ | _ | _ | √ | ENTRÉE SEULEMENT - pas de pull-up/down, pas de sortie |
| 35 | _ | ADC1_7 | _ | _ | _ | _ | _ | √ | ENTRÉE UNIQUEMENT |
| 36 (VP) | _ | ADC1_0 | _ | _ | _ | _ | _ | √ | bruit élevé avec Wi-Fi activé |
| 37 | _ | (interne) | _ | _ | _ | _ | _ | √ | Non lié sur WROOM _ ignorer |
| 38 | _ | (interne) | _ | _ | _ | _ | _ | √ | Non lié _ ignorer |
| 39 (VN) | _ | ADC1_3 | _ | _ | _ | _ | _ | √ | associer avec VP pour ADC différentiel |
GPIO 6–11 : FLASH BUS – NE PAS UTILISER POUR E/S
- GPIO 34 à 39 : ENTRÉE UNIQUE ; PAS DE PULL-UP/DOWN, PAS DE SORTIE
- GPIO 0, 2, 4, 12, 15 : amorçage ; vérifier l'état à la mise sous tension
Légende :
- √= Soutenu
- Indisponible / non recommandé
- T0–T9 = Canal tactile capacitif
Liste de contrôle finale avant d'acheminer
Broches de courroie (GPIO0, 2, 4, 12, 15) :
- Vérifier les états des résistances de rappel (pull-up/pull-down) pendant la montée de VDD de 0V à 3,3V.
Broches Flash (GPIO6–11) :
- Assurez-vous qu'aucun signal ne soit routé sur ces broches et recouvrez-les de cuivre de masse.
Broches ADC (GPIO36–39 / ADC1/2) :
- Maintenir au moins 10 mm de distance des régulateurs à découpage.
- Évitez le routage de la couche supérieure directement sous l'ESP32 pour minimiser les interférences.
Broches d'entrée uniquement (GPIO34–39) :
- À utiliser exclusivement pour les capteurs ; ne jamais configurer en sorties.
Section RF (GPIO2, 15) :
- Maintenez une distance d'au moins 15 mm des cristaux et des chemins d'antenne pour réduire les interférences électromagnétiques (EMI).
Pensées finales
L'ESP32 est remarquablement performant, mais sa flexibilité est une arme à double tranchant. Traitez les broches non pas comme des entrées/sorties génériques, mais comme des ressources spécialisées avec des modes de défaillance. Concevez pour les cas limites, et votre produit fonctionnera de manière fiable sur le terrain.
Astuce professionnelle : Pour une conception et un assemblage de circuits imprimés robustes qui exploitent pleinement les capacités de l'ESP32, envisagez de vous associer à PCBCool – experts en fabrication et assemblage de circuits imprimés (CI) de haute qualité, contribuant au succès de vos prototypes et produits, du laboratoire à l'utilisation sur le terrain.
Foire Aux Questions (FAQ)
Non. De nombreuses broches ont des fonctions spéciales ou des contraintes de démarrage. Par exemple, les GPIO0, 2, 4, 12, 15 sont des broches de configuration (strapping pins); les GPIO6–11 sont connectés à la mémoire flash SPI; les GPIO34–39 sont uniquement des entrées.
Les broches telles que GPIO4, 5, 12–15, 18–19, 21–23, 25–27, 32–33 sont généralement sûres. Évitez les broches utilisées pour PSRAM ou flash si votre module possède ces fonctionnalités.
Certaines broches ADC (par exemple, GPIO36/VP) partagent des circuits avec la section RF. Le bruit Wi-Fi peut atteindre plus de 250 mV, entraînant des lectures inexactes.
Privilégier T0–T7 (GPIO4, 0, 2, 15, 13, 12, 14, 27). Éviter T9 (GPIO32) si la PSRAM est activée sur les modules WROVER.
Avant d'entrer en sommeil profond, désactivez les périphériques inutilisés, configurez les GPIO inutilisés en sortie basse et désélectionnez les broches ADC.
Non. Les GPIO34–39 n'ont pas de résistances internes de tirage vers le haut ou vers le bas. L'utilisation de INPUT_PULLUP compilera mais n'aura aucun effet.
George est un ingénieur électricien certifié, expérimenté dans la conception de PCB, les systèmes embarqués et le développement matériel IoT. Il collabore avec PCBCool pour transformer une expérience d'ingénierie réelle en guides pratiques pour développeurs et ingénieurs.