GPIO-Pins eines ESP32 DevKitC

ESP32 Pin-Belegung

Die Tabelle unten zeigt, welche GPIO-Pins auf welchen ESP32-Boards vorhanden sind, und welche Funktionen sie wahrnehmen können. Einige Pins können nur als Eingabe (lesend) genutzt werden, manche stehen bei Nutzung der WiFi-Funktionalität nicht für Ein- oder Ausgaben zur Verfügung. In den Diagrammen sind die jeweiligen Pin-Gruppen entsprechend markiert.

PDF-Download: Pinbelegung des ESP32 (38 Pins, 30 Pins und ESP32 Pico-Kit)

Die entsprechenden Informationen zum ESP8266 (NodeMCU und D1 mini) gibt es hier: ESP8266 Pin-Belegung.

Pin-Namen: je nach Hersteller der Boards sind die GPIO-Pins unterschiedlich benannt: nur mit einer Zahl beim Pico Kit; auf den DevKitC-Boards mit Pxx (P für Pin xx), Gxx (GPIO) oder auch Dxx (Digital[1]Bei den Arduinos wird zwischen Analog-Input-Pins – A0-A5 oder A0-A7 – und Digital-Pins – D2-D13 – unterschieden.) – siehe unten die Bilder der verschiedenen Boards.

<FLASH>: Damit sind in der Tabelle die GPIO-Pins gekennzeichnet, die zur Ansteuerung des internen SPI-Flash-Speichers verwendet werden und nicht für eigene Projekte zur Verfügung stehen. Beim DevKitC: Pins 6-11 (CLK, SD0, SD1, SD2, SD3, CMD; beim Pico Kit Pins 6-8, 11, 16 und 17 (CLK, D3, D1, D2, CS und D0). Beim Pico Kit sind für diese Anschlüsse zwar Lötaugen (Pads) vorhanden, aber nicht mit Pins bestückt; bei den DevKitC-Boards mit 30 Pins sind sie gar nicht nach außen geführt.

GPIO 12: darf während des Bootens nicht durch ein verbundenes Gerät auf „HIGH” gesetzt sein.

ENABLE- (links) und BOOT-Taster am ESP32
Taster am ESP32
EN: Eine kurze Verbindung mit Masse, z.B. über einen Taster, löst einen Neustart (Reset) des ESP32 aus. [2]Siehe „ESP32 Pinout Reference” (Absatz „Enable (EN)”) bei Random Nerd Tutorials und den Make-Artikel „Großer Bruder: Espressif ESP32” (ziemlich weit unten im Absatz „’Hello … Continue reading Das enstpricht der Funktion des Enable-Tasters (meist mit „EN” beschriftet, auch mit „RST”) links vom USB-Anschluss der DevKitC-Boards. (Die Funktion des anderen Tasters – „BOOT” – wird im Beitrag zu den ersten Schrítten mit dem ESP32 beschrieben.)

V5, 5V, VIN: Kann zur Spannungsversorgung des ESP32 als 5 Volt-Eingang verwendet werden, wenn das Board nicht per USB-Anschluss versorgt wird. Wird es per USB versorgt, darf an diesem Pin keine Eingangsspannung anliegen – d.h. entweder wird der ESP32 per USB versorgt oder über den 5-Volt-Pin, aber nicht über beide!
Bei Versorgung per USB stehen an diesem Pin die 5 Volt des USB-Anschlusses als Ausgang bereit, um angeschlossene Module, die das benötigen, entsprechend zu versorgen (ein Beipiel ist der CO2-Sensor MH-Z19B). Meist können Sensoren etc. aber mit der Standardspannung des ESP32 von 3,3 Volt betrieben werden. Aufschluss gibt das jeweilige Datenblatt.
Semsoren, die mit 3,3 und 5 Volt laufen, sollte man am ESP32 mit 3,3 Volt betreiben – dann kann man sicher sein, dass auch die Ausgabesignale der Sensoren zu den 3,3 Volt passen, die der ESP32 maximal an den GPIO-Pins verträgt.

Die wichtigsten Bezeichnungen sind:

  • ADC: Analog-Digital-Konverter mit 12 Bit Auflösung (0…4095); ADC1: 8 Kanäle (channels; ADC1_CH0 – ADC1_CH7), ADC2: 10 Kanäle (ADC2_CH0 – ADC2_CH9)
    → die Kanäle am ADC2 stehen im WiFi-Betrieb nicht zur Verfügung
  • DAC: Digital-Analog-Konverter
  • I2C: Kommunikation per I2C-Bus über die Leitungen SCL (Takt; serial clock) und SDA (Daten; serial data); da sich die angeschlossenen Geräte (wie Sensoren) je nach Typ über eine eigene Adresse identifizieren, kann man über einen Bus mehrere Geräte ansprechen; die ESP32-DevKits haben (anders als das ESP32 Pico Kit, ESP8266 und Arduino) zwei getrennte Busse, sodass man zwei Sensoren mit gleicher Adresse an einem Controller nutzen kann (Namen: I2C_SDA und I2C_SCL, ggf. I2C_SDA_2 und I2C_SCL_2)
  • RTC: mit diesen Pins kann der ESP32 aus dem Tiefschlaf aufgeweckt werden – der Präfix RTC_ bezeichnet alles, was mit der Echtzeituhr (engl. real time clock) und den Stromsparmodi des ESP32 zu tun hat
  • SPI (HSPI, VSPI): zur Verbindung mit Modulen, die das SPI (engl.: Serial Peripheral Interface) zur Kommunikation nutzen, z.B. Displays oder SD-Kartenleser
  • TOUCH: Touch-Sensoren
  • UART: serielle Schnittstellen (UART = Universal Asynchronous Receiver Transmitter); zur seriellen Kommunikation mit anderen Geräten; von den drei Schnittstellen des ESP32 ist nur UART2 ohne weiteres nutzbar (GPIO 16 und 17, in der Tabelle mit U2RXD und U2TXD bezeichnet). [3]UART0 wird für die USB-Datenübertragung zwischen der IDE auf dem PC und dem Mikrocontroller verwendet, d.h. das Hochladen des übersetzten Programms und die Übertragung von Ausgaben des Programm … Continue reading

Eine ausführlichere Erläuterung der Funktionen gibt der Artikel »ESP32 Pinout Reference: Which GPIO pins should you use?« bei Random Nerd Tutorials.

NameGPIODevKitC
(30 Pins)
DevKitC
(38 Pins)
Pico KitFunktion
(P)00xxADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1, EMAC_TX_CLK
TX0, TX1xxxGPIO1, U0TXD, CLK_OUT3, EMAC_RXD2 (mit der USB-Bridge verbunden)
(P)22xxxADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP, HS2_DATA0, SD_DATA0
RX0, RX3xxxGPIO3, U0RXD, CLK_OUT2 (mit der USB-Bridge verbunden)
(P)44xxxADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER
(P)55xxxGPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK
CLK6x(x)<FLASH> Flash-Takt; GPIO6, SD_CLK, SPICLK, HS1_CLK, U1CTS
SD0,
D3 (Pico)
7x(x)<FLASH> GPIO7, SD_DATA0, SPIQ, HS1_DATA0, U2RTS
D1, SD18x(x)<FLASH> GPIO8, SD_DATA1, SPID, HS1_DATA1, U2CTS
SD29x<FLASH>
99xGPIO9, SD_DATA2, SPIHD, HS1_DATA2, U1RXD
SD310x<FLASH>
1010xGPIO10, SD_DATA3, SPIWP, HS1_DATA3, U1TXD
CMD,
D2 (Pico)
11x(x)<FLASH> GPIO11, SD_CMD, SPICS0, HS1_CMD, U1RTS
(P)1212xxxADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3
(P)1313xxxADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER
(P)1414xxxADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2
(P)1515xxxADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0, HS2_CMD, SD_CMD, EMAC_RXD3
(P)16, RX216xxGPIO16, U2RXD, I2C_SCL_2
CS16(x)<FLASH> GPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT
(P)17, TX217xxGPIO17, U2TXD, I2C_SDA_2
D017(x)<FLASH> GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180
(P)1818xxxGPIO18, VSPICLK, HS1_DATA7
(P)1919xxxGPIO19, VSPIQ, U0CTS, EMAC_TXD
(P)2121xxxGPIO21, VSPIHD, EMAC_TX_EN, I2C_SDA
(P)2222xxxGPIO22, VSPIWP, U0RTS, EMAC_TXD1, I2C_SCL
(P)2323xxxGPIO23, VSPID, HS1_STROBE
(P)2525xxxGPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0
(P)2626xxxGPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1
(P)2727xxxGPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV
(P)3232xxx32K_XP, ADC1_CH4, TOUCH9, RTC_GPIO9
(P)3333xxx32K_XP, ADC1_CH4, TOUCH9, RTC_GPIO9
(P)3434xxxADC1_CH6, RTC_GPIO4
(P)3535xxxADC1_CH7, RTC_GPIO5
SVP, VP36xxxSENSOR_VP, GPIO36, ADC1_CH0, RTC_GPIO0
3737xGPIO37, ADC1_CH1, RTC_GPIO1
3838xGPIO38, ADC1_CH2, RTC_GPIO2
SVN, VN39xxxSENSOR_VN, GPIO39, ADC1_CH3, RTC_GPIO3
ENxxxwie ENABLE-Taster: Neustart (Reset) des ESP32
GND2 x3 x2 xMasse
3V31 x1 x2 x3,3 V zur Spannungsversorgung angeschlossener Komponenten
V5, 5V, VIN1 x1 x1 xals Eingang: 5 V Versorgungsspannung; 5V-Ausgang bei Versorgung per USB
NameGPIODevKitC
(30 Pins)
DevKitC
(38 Pins)
Pico KitFunktion

Letzte Änderung: 23.08.2021

Fußnoten

Fußnoten
1 Bei den Arduinos wird zwischen Analog-Input-Pins – A0-A5 oder A0-A7 – und Digital-Pins – D2-D13 – unterschieden.
2 Siehe „ESP32 Pinout Reference” (Absatz „Enable (EN)”) bei Random Nerd Tutorials und den Make-Artikel „Großer Bruder: Espressif ESP32” (ziemlich weit unten im Absatz „’Hello World’ und System-Info”)
3 UART0 wird für die USB-Datenübertragung zwischen der IDE auf dem PC und dem Mikrocontroller verwendet, d.h. das Hochladen des übersetzten Programms und die Übertragung von Ausgaben des Programm zum seriellen Monitor (z.B. mit dem Befehl Serial.print()). Nutzt man also den seriellen Monitor für Ausgaben des ESP32 am PC, kann man diese Schnittstelle nicht anderweitig verwenden.
UART1 ist nur nutzbar, wenn man die Standard-Pins (Rx1: GPIO 9, Tx1: GPIO 10) „umbiegt” (also auf andere Pins verlegt), denn GPIO 9 und 10 sind vom ESP32 zur Ansteuerung des Flash-Speichers reserviert und können nicht in Programmen verwendet werden.

2 Kommentare

  1. Pinbelegung ESP32 38 PIN
    Hallo,
    ich habe mir einen ESP21 mit 38 Pin gekauft, und wollte mit den internen LED’S experimentieren. Bin aber auf ein Problem gestoßen! Laut Pin-Layout ist die interne LED auf PIN 2 gelegt, das funktioniert aber leider nicht. Erst wenn ich in meinem Test-Programm die LED auf PIN 1 lege klappt es mit dem Blinken der internen LED, ist es so gewollt, oder ist es ein Fehler im PIN-Layout

    #define LED 1
    void setup() {
    pinMode(LED,OUTPUT);
    }
    void loop() {
    delay(100);
    digitalWrite(LED,HIGH);
    delay(100);
    digitalWrite(LED,LOW);
    }

    Da ich nun Anfänger mit dem EPS32 bin, ist es natürlich schwierig herauszufinden was da Sache ist.
    Über eine Antwort freue ich mich sehr.

    Mit freundlichen Grüßen,
    Reinhold Kwauka

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.