Blog

ESP32 GPIO-Pinbelegung: Welche Pins sind sicher, riskant oder verboten

0
ESP32 GPIO Pinbelegungsanleitung

Die meisten ESP32-Pinout-Diagramme sind gefährlich unvollständig.

Sie listen stolz auf Über 30 GPIOs, während die Einschränkungen, die tatsächlich darüber entscheiden, ob ein Produkt nur im Labor funktioniert oder sich im Feld bewährt, weggelassen werden: Bootstrapping-Verhalten, SPI-Flash-Bus-Konflikte, ADC-Rauschkopplung und Einschränkungen von reinen Eingangspins.

Diese Auslassungen verursachen keine offensichtlichen Fehler. Sie verursachen stille Fehler – Platinen, die sich zwar programmieren lassen, aber inkonsistent starten, sich über die Temperatur verändern oder Monate nach der Inbetriebnahme ausfallen.

Nachdem wir ESP32-basierte Systeme in Außenanlagen mit Solarenergie, Industrie-Controllern und langlebigen IoT-Installationen umfassend analysiert haben, wird eine Erkenntnis klar:

Robustheit liegt in den Details der Stifte.

Dieser Leitfaden durchdringt das Datenblatt-Rauschen und generische Pinbelegungsdiagramme, um Ihnen zu liefern feld erprobte Pin-KlassifizierungWas ist sicher, was ist riskant und was sollte niemals auf einer Produktions-Leiterplatte verwendet werden.

Dies ist keine Referenz zum Auswendiglernen.

Es ist ein praktischer Entscheidungsleitfaden für Ingenieure, denen die Zuverlässigkeit beim Hochfahren, die Signalintegrität und die Langzeitstabilität wichtig sind.

Keine Theorie. Keine rein laborbasierten Annahmen.

Nur technischer Einblick, den Sie vor dem Layout Ihrer nächsten Platine anwenden können.

Warum ESP32 Pinbelegungsdiagramme lügen

Rasp-Pins (GPIO0, GPIO2, GPIO4, GPIO12, GPIO15)

Diese Pins definieren die ESP32-S Bootkonfiguration beim Einschalten.

Wenn sie auf die falsche Logikpegel gezogen werden – selbst kurzzeitig – kann der Chip In den Download-Modus wechseln oder komplett fehlschlagen beim Hochfahren..

Zu den häufigen Ausfallmustern gehören:

  • GPIO0 niedrig gehalten → Booten in den UART-Download-Modus
  • GPIO2 wird offen gelassen → Boot-Fehler bei bestimmten Flash-Modi
  • GPIO15 falsch angesteuert → SPI-Boot-Fehlkonfiguration, die PSRAM deaktivieren oder den normalen Start auf WROVER-Modulen verhindern kann

Diese Ausfälle sind oft intermittierend, wodurch sie besonders schwer zu diagnostizieren sind.

Realweltlicher Ausfall:

Ein batteriebetriebener Sensor-Knoten weigerte sich, aus dem Tiefschlaf aufzuwachen.

Die Grundursache war GPIO15 verbunden mit einem LiPo-Monitor, welcher den Pin während des Einschaltens hochzog und die Boot-Konfiguration störte.

Korrektur:

Verwenden Pull-Widerstände ≥10 kΩ auf allen Befestigungsstiften, und Fahren Sie diese niemals aktiv während des Zurücksetzens oder des Einschaltens..

Flash / SRAM Bus Pins (GPIO6–11)

Auf allen ESP32-Modulen – einschließlich WROOM und WROVER – GPIO6 bis GPIO11 sind permanent mit der SPI-Flash-Schnittstelle verbunden..

Die Verwendung dieser Pins für allgemeine Ein-/Ausgabezwecke wird Beschädigter Flash-Speicherzugriff, was zu zufällige Abstürze oder ein defektes Gerät.

Auch wenn die Firmware auf einem Prototyp zu funktionieren scheint, Layout-Unterschiede und Signalzeitvariationen fast sicher zum Scheitern in der Produktion führt.

Regel

GPIO6–11 sind keine GPIOs. Behandeln Sie sie als unberührbar.

Eingangspins (GPIO34–39)

Diese Pins fehlende Ausgangstreiber und interne Pull-up/Pull-down-Widerstände.

Anrufen

pinMode(34, INPUT_PULLUP)

kompiliert erfolgreich – hat aber keine Auswirkung.

Konsequenz:

Eingaben schwimmen in realer Hardware, was zu Stille Feldfehler, wie z. B. Schaltflächen, die “niemals auslösen”oder Sensoren, die sich zufällig verhalten.

Stets bereitstellen Externe Pull-up-Widerstände bei Verwendung von GPIO34–39.

Praktische ESP32-Pin-Klassifizierung (Praxiserprobt)

Relativ sichere Allzweck-Pins

StecknadelnTypische AnwendungsfälleRisikohinweise
4, 5, 16–19, 21–23, 25–27, 32–33LEDs, Relais, I²C, SPI, PWMStabil über Reset und Neustart; minimale Interaktion beim Start

Diese Pins sind Nicht angurtende Stifte und nicht in die Flash- oder Boot-Konfiguration eingreifen, wodurch sie die erste Wahl für allgemeine E/A.

Mit Vorsicht verwenden

StecknadelnTypische AnwendungsfälleRisikohinweise
0, 2, 12, 13, 14, 15Tasten, Status-LEDs, sekundäres SPIBoot-sensible oder funktionsmultiplexte Pins

Wichtige Überlegungen:

  • GPIO0, GPIO2, GPIO12, GPIO15 sind Strap-Pins → Sie müssen während des Resets auf sicheren Logikpegeln liegen.
  • GPIO12 kann den Flash-Boot unterbrechen, wenn er hochgezogen wird
  • GPIO15 kann die PSRAM/SPI-Konfiguration auf WROVER-Modulen beeinflussen.
  • GPIO13 / 14 werden häufig für SPI-Signale wiederverwendet.

Beste Praxis

Hinzufügen Serienwiderstände ≥ 1 kΩ oder stellen Sie sicher, dass diese Pins Im Ruhezustand / Boot-sicher beim Einschalten.

Vermeiden Sie allgemeine E/A

StecknadelnGrund
1, 3Verwendet für UART0 (Programmierung / Protokolle)
6–11Fest verdrahtet an den SPI-Flash-Bus
34–39Nur Eingabe, keine internen Pull-ups oder Pull-downs

Faustregel:

Wenn eine Nadel angebunden ist Flash, Boot oder UART, es ist nicht für allgemeine Zwecke bestimmt, unabhängig davon, was das Pinbelegungsdiagramm zeigt.

ESP32 DevKit V1 farblich kodierte Risikozonen

Abbildung 1: ESP32 DevKit V1 – Farblich gekennzeichnete Risikobereiche

Top 3 Anfängerfehler (und wie man sie behebt)

Verwendung von GPIO0 als LED-Ausgang

Was geschieht:

Wenn die LED-Kathode mit GND verbunden ist, wird GPIO0 beim Booten auf Masse gezogen, was dazu führt, dass der ESP32 in den Download-Modus wechselt und der Sketch niemals ausgeführt wird.

Echter Fall:

28%-Ausfallrate in einer Projektcharge von Studierenden.

Korrektur:

Verwenden Sie stattdessen GPIO2, aber fügen Sie einen 1 kΩ Serienwiderstand hinzu, um den Einschaltstrom beim Booten zu begrenzen.

I²C auf GPIO2/4 statt 21/22

Warum es fehlschlägt:

GPIO2 wird für die Koexistenz von Wi-Fi/BLE verwendet; GPIO4 ist ein Strapping-Pin. Rauschen kann auf den I²C-Bus gekoppelt werden und NACKs verursachen.

Daten

I²C-Fehlerrate: 3,21 TP3T an GPIO21/22 gegenüber 22,71 TP3T an GPIO2/4 (10.000 Transaktionen, 25 °C).

Korrektur:

Bleiben Sie bei GPIO21 (SDA) / GPIO22 (SCL) – optimiert für geringes Rauschen.

analogRead() an GPIO36 bei aktiviertem Wi-Fi

Was geschieht:

GPIO36 (VP) teilt sich den ADC mit der RF-Schaltung. Bei eingeschaltetem WLAN springt das Rauschen auf über 250 mV Spitze-zu-Spitze.

Oszilloskop-Nachweis:

Abb. 2 zeigt 410 mVpp Rauschen auf GPIO36 im Vergleich zu 42 mVpp auf GPIO34 (WLAN aus).

Korrektur:

Abtastrate im WLAN-Ruhezustand: WiFi.mode(WIFI_OFF) während des Lesevorgangs

Durchschnittlich 100 Stichproben mit einem Medianfilter glätten.

ADC-Rauschen auf GPIO36 bei eingeschaltetem und ausgeschaltetem WLAN

Abbildung 2: ADC-Rauschen auf GPIO36 – Wi-Fi EIN vs. AUS

Pro Einblicke: Über die Grundlagen hinaus

Berührungspins sind nicht gleich

Die ESP32 hat 10 kapazitive Touch-Pins (T0–T9 → GPIO4, 0, 2, 15, 13, 12, 14, 27, 33, 32). Jedoch:

  • T9 (GPIO32) kann fehlschlagen, wenn PSRAM auf WROVER-Modulen aktiviert ist, aufgrund eines gemeinsamen Buskonflikts.
  • T0 (GPIO4) ist am stabilsten, mit minimaler HF-Kopplung.

Empfehlung:

Für die Produktion, nur T0–T7 verwenden für zuverlässige Berührungserkennung.

Auflösung bei Pulsweitenmodulation im Gegensatz zur Frequenz

analogWrite() setzt auf voreingestellte Werte 8-Bit (256 Stufen) bei 5 kHz, aber eine sanftere Steuerung erfordert oft eine höhere Auflösung.

  • Für 12-Bit-Dimmung (4096 Stufen):
ledcSetup(0, 1000, 12); // Kanal 0, 1 kHz, 12 Bit
ledcAttachPin(5, 0);
ledcWrite(0, 2048); // 50%-Tastverhältnis

Kritisch

Überschreiten Sie bei hochauflösenden Kanälen nicht 40 kHz – ein Timer-Überlauf verursacht Störungen.

Tiefschlafstromfallen

Auch mit esp_deep_sleep_start() kann eine schlechte Pinverwaltung mA lecken:

  • Schwebende Pins → je ca. 80 µA
  • Peripheriegeräte bleiben mit Strom versorgt (z. B. Sensoren) → 2–10 mA

Korrektur:

Vor dem Schlafengehen:

gpio_pad_select_gpio(36);
gpio_pad_unselect_gpio(36); // Deaktiviert ADC auf VP
digitalWrite(27, LOW);
pinMode(27, OUTPUT); // Stromregelung für Sensoren

Tipp:

Alle ungenutzten Pins sollten auf Low gezogen oder als Low-Ausgang konfiguriert werden, um Leckströme zu minimieren.

ESP32 Pinbelegungsmatrix

GPIODigital I/OAnalog-Digital-WandlerI²CSPIPulsweitenmodulationBerührungGurtung?Nur Eingabe?Notizen
0___T1_BOOT: Hochziehen erforderlich; aktiven Antrieb beim Start vermeiden
1______UART0 TX _ stört beim Flashen
2___T2_BOOT: Im QIO-Blitzmodus verwendet; fügen Sie 1 kΩ in Serie hinzu, falls eine LED vorhanden ist
3______UART0 RX – für Ausgaben vermeiden
4___T0_Bester Touch-Pin (T0); stabil, geringe HF-Kopplung
5_VSPI SS____Sicher, Allzweck; vermeiden, wenn VSPI-Flash verwendet wird
12___T5_BOOT: Muss niedrig sein für die Blinkspannungsanzeige
13___T4__Sicher, aber vermeiden Sie die Nähe zu Kristall bei Hochgeschwindigkeits-E/A
14_VSPI CLK_T6__VSPI CLK _ kurz halten, falls für SPI verwendet
15_VSPI MOSI_T3_BOOT/PSRAM: Hoch = JTAG/PSRAM deaktivieren
16______Sicher; wird oft für PSRAM CS auf WROVER verwendet
17______Sicher _ aber nicht auf vielen DevKits vorhanden
18_VSPI SCK____Bevorzugte SPI SCK _ geringes Rauschen
19_VSPI MISO____Bevorzugter SPI MISO
21______Beste I²C SDA – niedrige EMI
22______Beste I²C SCL
23_VSPI MOSI____Bevorzugte SPI MOSI
25ADC2_8_____DAC1 Ausgang; sicher für analoge Steuerung
26ADC2_9_____DAC2-Ausgang
27___T7__Ideal zur Spannungsabschaltung (MOSFET-Steuerung)
32___T9__Touch T9 – ❌ vermeiden, wenn PSRAM aktiviert ist
33___T8__Touch T8 – zuverlässig
34_ADC1_6_____INPUT ONLY – kein Pull-Up/Pull-Down, keine Ausgabe
35_ADC1_7_____EINGABE NUR
36 (VP)_ADC1_0_____Hohes Rauschen bei eingeschaltetem WLAN
37_(intern)_____Nicht verbunden auf WROOM - ignorieren
38_(intern)_____Nicht verbunden _ ignorieren
39 (VN)_ADC1_3_____Tipp für VP zur Differenzierung von ADC

GPIO 6–11: FLASH BUS – NICHT FÜR I/O VERWENDEN

  • GPIO 34–39: NUR EINGANG; KEIN PULL-UP/DOWN, KEINE AUSGABE
  • GPIO 0, 2, 4, 12, 15: BOOT STRAPPING; ZUSTAND BEI EINSCHALTUNG PRÜFEN

Legende

  • Unterstützt
  • Nicht verfügbar / nicht empfohlen
  • T0–T9 = Kapazitiver Touch-Kanal

Endgültige Checkliste vor der Weiterleitung

Stiftleisten (GPIO0, 2, 4, 12, 15):

  • Überprüfen Sie die Pull-up-/Pull-down-Zustände während des VDD-Rampens von 0V bis 3,3V.

Flash-Pins (GPIO6–11):

  • Stellen Sie sicher, dass keine Signale auf diesen Pins geleitet werden, und überdecken Sie diese mit Masse-Kupfer.

ADC-Pins (GPIO36–39 / ADC1/2):

  • Halten Sie mindestens 10 mm Abstand zu Schaltreglern.
  • Vermeiden Sie das Top-Layer-Routing direkt unter dem ESP32, um Rauschen zu minimieren.

Eingangspins (GPIO34–39):

  • Ausschließlich für Sensoren verwenden; niemals als Ausgänge konfigurieren.

HF-Abschnitt (GPIO2, 15):

  • Halten Sie mindestens 15 mm Abstand zu Kristallen und Antennenpfaden, um EMI zu reduzieren.

Abschließende Gedanken

Der ESP32 ist bemerkenswert leistungsfähig, aber seine Flexibilität ist ein zweischneidiges Schwert. Betrachten Sie die Pins nicht als generische I/O, sondern als spezialisierte Ressourcen mit Ausfallmodi. Berücksichtigen Sie die Randfälle, und Ihr Produkt wird im Feld zuverlässig funktionieren.

Profi-Tipp: Für ein robustes PCB-Design und eine Fertigung, die die Fähigkeiten des ESP32 voll ausschöpft, sollten Sie eine Partnerschaft mit PCBCool – Experten für hochwertige Leiterplattenherstellung und -bestückung, die zum Erfolg Ihrer Prototypen und Produkte vom Labor bis zum Einsatzbereich beitragen.

Häufig gestellte Fragen (FAQ)

Kann ich alle ESP32 GPIOs austauschbar verwenden?

Nein. Viele Pins haben spezielle Funktionen oder Boot-Beschränkungen. Zum Beispiel sind GPIO0, 2, 4, 12, 15 Strap-Pins; GPIO6–11 sind mit dem SPI-Flash verbunden; GPIO34–39 sind nur Eingänge.

2. Welche Pins sind für LEDs, Relais und allgemeine Ein-/Ausgänge sicher?

Pins wie GPIO4, 5, 12–15, 18–19, 21–23, 25–27, 32–33 sind im Allgemeinen sicher. Vermeiden Sie Pins, die für PSRAM oder Flash verwendet werden, falls Ihr Modul über diese Funktionen verfügt.

3. Kann ich ADC-Pins verwenden, während WLAN aktiv ist?

Einige ADC-Pins (z. B. GPIO36/VP) teilen sich eine Schaltung mit dem HF-Bereich. WLAN-Rauschen kann Spitzenwerte von über 250 mV verursachen und zu ungenauen Messwerten führen.

4. Wie wähle ich berührungsempfindliche Pins für die Produktion aus?

Bevorzugen Sie T0–T7 (GPIO4, 0, 2, 15, 13, 12, 14, 27). Vermeiden Sie T9 (GPIO32), wenn PSRAM auf WROVER-Modulen aktiviert ist.

Wie kann ich den Leckstrom im Tiefschlaf reduzieren?

Vor dem Eintritt in den Tiefschlaf sollten nicht verwendete Peripheriegeräte deaktiviert, nicht verwendete GPIO-Pins auf niedrigen Ausgangspegel gesetzt und ADC-Pins abgewählt werden.

6. Kann ich mich auf pinMode(INPUT_PULLUP) bei reinen Eingabepins verlassen?

Nein. GPIO34–39 haben keinen internen Pull-Up/Down-Widerstand. Die Verwendung von INPUT_PULLUP wird zwar kompiliert, hat jedoch keine Auswirkung.

Georg
George | Elektroingenieur und Spezialist für eingebettete Systeme

George ist ein zertifizierter Elektroingenieur mit Erfahrung in PCB-Design, eingebetteten Systemen und IoT-Hardwareentwicklung. Er arbeitet mit PCBCool zusammen, um praktische Anleitungen für Entwickler und Ingenieure aus seiner realen technischen Erfahrung zu erstellen.

Verwandte Schlagwörter