Blog
ESP32 GPIO-Pinbelegung: Welche Pins sind sicher, riskant oder verboten
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-Klassifizierung — Was 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
| Stecknadeln | Typische Anwendungsfälle | Risikohinweise |
|---|---|---|
| 4, 5, 16–19, 21–23, 25–27, 32–33 | LEDs, Relais, I²C, SPI, PWM | Stabil ü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
| Stecknadeln | Typische Anwendungsfälle | Risikohinweise |
|---|---|---|
| 0, 2, 12, 13, 14, 15 | Tasten, Status-LEDs, sekundäres SPI | Boot-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
| Stecknadeln | Grund |
|---|---|
| 1, 3 | Verwendet für UART0 (Programmierung / Protokolle) |
| 6–11 | Fest verdrahtet an den SPI-Flash-Bus |
| 34–39 | Nur 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.

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.

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ältnisKritisch
Ü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
| GPIO | Digital I/O | Analog-Digital-Wandler | I²C | SPI | Pulsweitenmodulation | Berührung | Gurtung? | 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 |
| 25 | √ | ADC2_8 | _ | _ | √ | _ | _ | _ | DAC1 Ausgang; sicher für analoge Steuerung |
| 26 | √ | ADC2_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)
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.
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.
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.
Bevorzugen Sie T0–T7 (GPIO4, 0, 2, 15, 13, 12, 14, 27). Vermeiden Sie T9 (GPIO32), wenn PSRAM auf WROVER-Modulen aktiviert ist.
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.
Nein. GPIO34–39 haben keinen internen Pull-Up/Down-Widerstand. Die Verwendung von INPUT_PULLUP wird zwar kompiliert, hat jedoch keine Auswirkung.
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.