Blog

Brochage des broches GPIO ESP32 : quelles broches sont sûres, risquées ou interdites

0
Guide de configuration des broches GPIO ESP32

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 terrainCe 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

GoupillesCas d'utilisation typiquesNotes de risque
4, 5, 16–19, 21–23, 25–27, 32–33DEL, relais, I²C, SPI, MLIStable 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

GoupillesCas d'utilisation typiquesNotes de risque
0, 2, 12, 13, 14, 15Boutons, voyants lumineux, SPI secondaireBroches 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

GoupillesRaison
1, 3Utilisé pour UART0 (programmation / journaux)
6–11Intégré au bus SPI Flash
34–39Entré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é.

Zones de risque codées par couleur pour ESP32 DevKit V1

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

Bruit ADC sur GPIO36, Wi-Fi activé vs. désactivé

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

GPIOEntrées/sorties numériquesCCXI²CSPIPWMToucherSangles ?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é
25ADC2_8_____Sortie DAC1; sûre pour commande analogique
26ADC2_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)

Puis-je utiliser tous les GPIO de l'ESP32 de manière interchangeable ?

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.

2. Quelles broches sont sûres pour les LED, les relais et les entrées/sorties à usage général ?

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.

3. Puis-je utiliser les broches ADC lorsque le Wi-Fi est actif ?

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.

4. Comment choisir des broches tactiles pour la production ?

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.

5. Comment puis-je réduire le courant de fuite en veille profonde ?

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.

6. Puis-je me fier à pinMode(INPUT_PULLUP) sur des broches d'entrée uniquement ?

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.

Georges
Georges | Ingénieur en électricité et spécialiste des systèmes embarqués

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.

Tags apparentés
Partager