ESP32 DevKit Einführung – Pins, Peripherie & Funktionen

Wir verwenden in unseren Projekten überwiegend das ESP32-DevKitC-V4 von Espressif und das nahezu identische Board von AZ-Delivery ESP32 NodeMCU Module bzw. Dev Kit C V2. Diese Boards eigenen sich sehr gut zum Start mit dem ESP32 und auch zum Erlernen von FreeRTOS. Die AZ-Delivery Boards sind schon für knapp 10 € erhältlich und sind nach eigener Erfahrung sehr Robust.

20251104 173845
Abb. 1 – Original Espressif ESP32-DevKitC-V4

20251103 194911
Abb. 2 – AZ-Delivery ESP32-DevKitC-V2

Beide Boards basieren auf dem ESP32-WROOM-32-Modul, welches auf das Board aufgelötet ist und aufgrund seiner umfangreichen Funktionalität für Internet-of-Things Projekte geeignet ist.

screenshot 2025 11 04 205825
Abb. 3 (Bildquelle: Espressif Systems)

Das DevKitC kann aufgrund seines Formfaktors auf ein Steckbrett gesteckt werden, da nahezu alle Pins des ESP32-WROOM-32D Moduls leicht abgreifbar über Steckerleisten hinausgeführt sind. Das Board verfügt über einen Micro-USB Anschluss, einen USB-zu-UART Konverter,

  • jeweils eine Reset- und Boot-Taste,
  • eine LED zur Kontrolle der Versorgungsspannung3 und
  • einen Spannungsregler für die interne Spannungsversorgung von 3,3 V
    für das Modul, die aus den 5 V des USB-Anschlusses gewonnen werden.

Externe Bauteile können durch die Herausführung der Versorgungsspannungen zusätzlich mit 3,3 V oder 5 V versorgt werden. Hierbei muss aber die verfügbare Leistungsfähigkeit des integrierten Festspannungsreglers berücksichtigt werden Aufgrund dieser Eigenschaft kann das DevKitC V4 ohne Löten oder das Hinzufügen weiterer Komponenten sofort programmiert und verwendet werden.

 

Das ESP32-WROOM Modul

screenshot 2025 11 04 175627
Abb. 4 – ESP32-WROOM-32 (Bildquelle: Espressif Systems)

Das ESP32-WROOM-32D Modul bildet das Herzstück des Entwicklungsboards ESP32-DevKitC V4. Dieses Modul basiert auf dem SoC ESP32-DOWD und kann in dieser Form ohne externe Bestückung auf eine Trägerplatine aufgelötet und direkt in Betrieb genommen werden.

Dieses Modul beinhaltet bereits die wichtigsten Elemente, die eine schnelle und einfache Inbetriebnahme ermöglichen. Zu diesen Elementen gehören

  • der SoC ESP32-DOWD mit zwei CPU-Kernen,
  • ein SPI-Flash mit 32-Mbits,
  • ein 40-MHz Oszillator und eine
  • integrierte PCB-Antenne für WLAN und Bluetooth.

Lediglich eine Spannungsversorgung von 3,3 V ist bei diesem Modul erforderlich.

 

ESP32 (System-on-a-Chip)

ESP32 ist eine Familie von SoC der chinesischen Firma Espressif , die sich im Wesentlichen in der Anzahl der Prozessorkerne, dem integrierten Flash und dem Formfaktor unterscheiden. Bei allen ESP32 SoC wird der Prozessorkern vom Typ Xtensa LX6 mit einem Takt von 160 MHz bis 240 MHz verwendet. Der in dieser Arbeit eingesetzte SoC auf dem ESP32-DevKitC V4 ist der ESP32-DOWD mit zwei Kernen, ohne integrierten Flash. Das Hauptanwendungsgebiet von Mikrocontrollern der ESP32 Familie ist das In ternet of Things (IoT) sowie die Anwendung in mobilen Geräten.

Besonders interessant ist der große Umfang integrierter Peripherie, wie diverse Schnittstellen (z. B. SPI, I2C, UART, I2S), Analog-Digital- und Digital-Analog-Wandler (AD- und DA-Wandler), Transceiver (WLAN und Bluetooth jeweils mit integrierter PCB-Antenne), 34 universell verwendbare Ein- und Ausgänge (GPIO), ein Hall-Sensor, Pulsweitenmodulation und weitere.

screenshot 2025 11 05 082751
Abb. 5 – Blockdiagramm ESP32 SoC (Bildquelle: Espressif Systems)

Weitere Informationen gibt es im Datenblatt des ESP32 SoC.

 

Hardwarekomponenten und Schnittstellen

Zur Kommunikation mit der Außenwelt befinden sich auf dem ESP32 diverse Hardwarekomponenten und Schnittstellen. Auf die Ein- und Ausgänge dieser Komponenten kann über sogenannte GPIOs zugegriffen werden. Für uns besonders interessant sind folgende Elemente:

  • GPIO (Universelle Ein- und Ausgabeschnittstellen),
  • UART (Serielle Schnittstelle),
  • SPI,
  • I2C,
  • DAC (Digital-Analog-Wandler),
  • ADC (Analog-Digital-Wandler),
  • WLAN,
  • und weitere.

Für weitere Informationen über diese Schnittstellen sind Datenblätter entsprechender Hardware zu empfehlen. Einige der Kompontenten sind im folgenden beschrieben.

4. esp32 devkitc v4 pinout
Abb. 6 – Pinbelegung ESP32-DevKitC-V4 (Bildquelle: Espressif Systems)

Weitere Informationen zu dem DevKit gibt aus der entsprechenden Webseite.

GPIO

Als General Purpose Input/Output (GPIO) werden universelle Ein- und Ausgänge bezeichnet, die der Ein- und Ausgabe digitaler und analoger Signale dienen. Der ESP32 hat 34 GPIO-Pins, die meist mehrfach belegt sind und teilweise mit Pull-up- und Pull-down-Widerständen bestückt sind. Die Belegung der Pins und die Wahl der Widerstände kann per Software konfiguriert werden.

Laut dem Hersteller können alle GPIO-Pins mit beliebiger interner Peripherie verknüpft werden, was in der Realität aber mit Vorsicht zu behandeln ist. Da auf den Modulen bereits Hardware integriert ist, wie z. B. der SPI-Flash oder ein UART-zu-USB Konverter, sind einige GPIO-Pins von Haus aus fest belegt und sollten nicht für andere Zwecke verwendet werden.

Zusätzlich dienen einige GPIO-Pins als Strapping Pins, die zwar für interne Peripherie verwendet werden können, jedoch beim Start des ESP32 einen definierten Zustand haben müssen um den ESP32 in den Bootloader- oder Flash-Modus zu versetzen. Bei anderweitiger Verwendung können hier schwer zu lokalisierend Fehler entstehen.

Ein weiteres Beispiel sind die GPIO-Pins 34, 35, 36 und 39, die zwar als GPIO bezeichnet werden, jedoch ausschließlich als Eingänge verwendet werden können (GPI) und auch keine internen Pull-up- und Pull-down-Widerstände haben. Diese müssen bei Bedarf extern bestückt werden.

Zur Konfiguration eines GPIO-Pins als einfachen Ein- oder Ausgang wird folgender Code verwendet:

// Richtung der GPIO als Eingang konfigurieren 
gpio_set_direction(GPIO_NUM,GPIO_MODE_INPUT); 
 
// Richtung der GPIO als Ausgang konfigurieren 
gpio_set_direction(GPIO_NUM,GPIO_MODE_OUTPUT);

Zur Konfiguration eines Pull-up- oder Pull-down-Widerstandes wird folgender
Code verwendet:

// Pull-up-Widerstand aktivieren 
gpio_set_pull_mode(GPIO_NUM, GPIO_PULLUP_ONLY); 
 
// Pull-down-Widerstand aktivieren 
gpio_set_pull_mode(GPIO_NUM, GPIO_PULDOWN_ONLY);

In allen Fällen ist GPIO_NUM ein Integer und bezeichnet die Nummer des jewei-
ligen GPIO-Pins.

UART

Der ESP32 hat drei UART-Kontroller, die unabhängig voneinander konfiguriert werden können. Sie werden als UART0, UART1, UART2 bezeichnet.

Die UART-Schnittstellen können zur direkten Kommunikation mit anderen UART-Geräten verwendet werden. Zusätzlich verfügt das ESP32-Dev-KitC V4 über eine CP2102 USB-zu-UART-Schnittstelle, mit der die Kommunikation mit anderen Geräten über USB, aber auch die einfache Programmierung des Moduls über USB möglich ist.

SPI

Der ESP32 verfügt über vier SPI-Kontroller (SPI0 – SPI3), von denen SPI0 und SPI1 intern für den Flash reserviert sind. SPI2 und SPI3 sind General Purpose (GP) SPI-Kontroller, die beliebig eingesetzt werden können.

Aufgrund der hohen Übertragungsragte von bis zu 40 MHz (typisch 20 MHz), kann sie z.B. für die Kommunikation mit externen AD- und DA-Wandlern verwendet werden.

I2C

Der ESP32 hat zwei I2C Schnittstellen, die jeweils als Master oder Slave konfiguriert werden können. Weitere Eigenschaften sind:

  • Mulit-Master und Multi-Slave
  • Standard Mode mit 100 kbit/s
  • Fast Mode mit 400 kbit/s
  • 7- und 10-Bit Adressierung
  • Kontinuierliche Datenübertragung
  • Digital Noise Filter

DAC – Digital Analog Wandler

Der ESP32 verfügt über zwei echte Digital-Analog-Wandler, was bei Microcontroller schon eher selten ist und vor allem in dieser Preisklasse. Auf diese kann man über zwei festgelegte GPIO-Pins zugreifen. Im Gegensatz zu anderer Peripherie können bei den DAC die GPIO-Pins nicht geändert werden.

  • DAC1 (GPIO25)
  • DAC2 (GPIO26)

Die DACs haben zwar nur 8-Bit, sind aber schön linear im Verlauf.

screenshot 2025 11 05 190538
Abb. 7 – Ausgangsspannungsverlauf interner DAC

ADC – Analog Digital Wandler

Es gibt zwei AD-Wandler, die über 18 Kanäle erreichbar sind und die mit einer maximalen Auflösung von 12-Bit arbeiten können. Die Auflösung lässt sich per Software von 9-Bits – 12-Bits einstellen.

Zu berücksichtigen ist, dass 8 Kanäle über ADC1 und 10 Kanäle über ADC2 zur Verfügung stehen. Bei Verwendung von WLAN, können die ADC2 Kanäle nicht verwendet werden und es stehen nur 8 Kanäle über ADC1 zur Verfügung.

Die AD-Wandler sind nicht vollständig linear. Ansätze zur Verbesserung der Linearität werden auf der Homepage von Espressif aufgezeigt, wie auch auf diversen Plattformen, die sich mit diesem Problem auseinandergesetzt haben.

Im Folgenden sind zwei Aufzeichnungen einer Wechselspannung, die an den ADC angelegt wurden. Abb. 8 zeigt den internen ADC des ESP32 und Abb. 9 den Eingangsspannungsverlauf über einen SPI-ADC MCP3204.

screenshot 2025 11 05 183538
Abb. 8 – Kurvenverlauf interner ADC des ESP32. Gleichspannung (blau) und Sinus (rot)

screenshot 2025 11 05 183600
Abb. 9 – Kurvenverlauf externer ADC über SPI (MCP3204). Gleichspannung (blau) und Sinus (rot)

in Abb. 8 lässt sich deutlich der ungleichmäßige Sinus, wie auch der ungleichmäßige Verlauf der Gleichspannung erkennen, die an den internen ADC angelegt wurden. In Abb. 9 ist der Verlauf mit dem externen ADC wesentlich gleichmäßiger.

Hier muss man also abwägen, für welche Zwecke die internen ADC benötigt werden. Wenn es um Genauigkeit geht, sollten externe ADC verwendet werden. Im Aufbau haben die internen 12-Bit AD-Wandler um bis zu 60 von 4095 Stufen geschwankt, was einer Ungenauigkeit von über einem Prozent entspricht.

WLAN

Zur kabellosen Kommunikation mit der Außenwelt verfügt der ESP32 über WLAN (Wireless Local Area Network) mit integrierter PCB-Antenne. Es gibt verschiedene Möglichkeiten zur Anbindung an das WLAN.

  • AP-Mode (Access-Point-Mode): Verbindung des ESP32 mit einem AP
  • STA-Mode (Station-Mode): Andere Geräte verbinden sich mit dem ESP32
  • Kombination aus AP und STA

Des Weiteren hat Espressif ein eigens definiertes WLAN-Protokoll ESP-Now und Mesh. Mesh ist ein ineinandergreifendes WLAN-Netzwerk, welches aus Repeatern, Access-Points oder Routern besteht.

 

Weiterführende Links