ESP32

Aus TippvomTibb
Version vom 29. Januar 2026, 17:26 Uhr von Chris T. Ludwig (Diskussion | Beiträge) (PINOUT)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Allgemeines

Auf Grund der vielen Varianten des ESP32 habe ich mir hier ein paar kleine Entscheidungshilfen zusammengetragen.


PINOUT

PINout ESP32 Board
ENABLE/CHIP_PU
High:on; Low:off
EN D23 GPIO23 HS1_STROBE VSPID
RTC_GPIO0 ADC1_CH0 GPIO36 SENSOR_VP D22 GPIO22 SCL
RTC_GPIO3 ADC1_CH3 GPIO39 SENSOR_VN TX0 GPIO1 TX0
RTC_GPIO4 ADC1_CH6 GPIO34 D34 RX0 GPIO3 RX0
RTC_GPIO5 ADC1_CH7 GPIO35 D35 D21 GPIO21 SDADC1_CH
RTC_GPIO9 T9 ADC1_CH4 GPIO32 D32 D19 GPIO19 CIPO
RTC_GPIO8 T8 ADC1_CH5 GPIO33 D33 D18 GPIO18 SCK
RTC_GPIO6 DADC1_CHC1 ADC1_CH18 GPIO25 D25 D5 GPIO5 CS
RTC_GPIO7 DADC1_CHC2 ADC1_CH19 GPIO26 D26 TX2 GPIO17 TX2
RTC_GPIO17 T7 ADC1_CH17 GPIO27 D26 RX2 GPIO16 RX2
RTC_GPIO16 T6 ADC1_CH16 GPIO14 D14 D4 GPIO4 ADC1_CH10 T0
RTC_GPIO15 T5 ADC1_CH15 GPIO12 D12 D2 GPIO2 ADC1_CH12 T2
RTC_GPIO14 T4 ADC1_CH14 GPIO13 D13 D15 GPIO15 ADC1_CH13 T3
GND GND GND GND
VIN VIN 3.3V 3.3V

GPIO vs RTCGPIO

Kurz gesagt: gpio = normaler Alltags-GPIO, rtc_gpio = Spezial-GPIO für Sleep, Low-Power & Wakeup. Aber der Teufel steckt im Detail 👇



🧱 gpio (Standard-GPIO)

Das ist die normale GPIO-Schnittstelle des ESP32.

Eigenschaften

  • Funktioniert im normalen Betrieb
  • Volle Features:
    • Input / Output
    • Pull-Up / Pull-Down
    • Interrupts
    • GPIO-Matrix (fast jeder Pin kann fast alles)
  • Nicht aktiv im Deep Sleep

Typische Verwendung

  • LEDs
  • Taster
  • SPI, I²C, UART
  • PWM, etc.

API

gpio_set_direction(GPIO_NUM_2, GPIO_MODE_OUTPUT);
gpio_set_level(GPIO_NUM_2, 1);

🌙 rtc_gpio (RTC / Low-Power GPIO)

Diese GPIOs hängen an der RTC-Domain (Real-Time-Controller).

Eigenschaften

  • Bleiben aktiv im Deep Sleep
  • Können den ESP aufwecken
  • Sehr geringer Stromverbrauch
  • Nicht alle GPIOs sind RTC-fähig
  • Weniger Features als normale GPIOs

Typische Verwendung

  • Wake-Up-Pins
  • Taster zum Aufwecken
  • Sensoren mit extrem niedrigem Strombedarf

API

rtc_gpio_init(GPIO_NUM_0);
rtc_gpio_set_direction(GPIO_NUM_0, RTC_GPIO_MODE_INPUT_ONLY);

🧭 Welche Pins sind RTC-fähig?

Beim klassischen ESP32 z. B.:

GPIO RTC-fähig
GPIO 0
GPIO 2
GPIO 4
GPIO 12–15
GPIO 25–27
GPIO 32–39

❌ Andere GPIOs → kein rtc_gpio möglich

⚠️ Wichtige Unterschiede auf einen Blick

Merkmal gpio rtc_gpio
Aktiv im Normalbetrieb
Aktiv im Deep Sleep
Kann ESP aufwecken
Interrupts
GPIO-Matrix
Stromverbrauch höher sehr niedrig
Anzahl Pins viele wenige



😬 Typische Stolperfallen

  • rtc_gpio für normale IO verwenden → unnötig kompliziert
  • ❌ GPIO nicht RTC-fähig → Code kompiliert, funktioniert aber nicht
  • ❌ Pull-Ups im Deep Sleep vergessen → Wakeup klappt nicht



🧪 Praxisbeispiel: Taster weckt ESP aus Deep Sleep

esp_sleep_enable_ext0_wakeup(GPIO_NUM_0, 0); // LOW = Wakeup
rtc_gpio_pullup_en(GPIO_NUM_0);

esp_deep_sleep_start();

🧠 Merksatz (für die Praxis)

Alles, was im Sleep noch leben muss → rtc_gpio Alles, was schnell, flexibel und normal ist → gpio


ESPTool

worker:/home/chris/.platformio/packages/tool-esptoolpy # python3.12 esptool.py chip_id
esptool.py v4.9.0
Found 3 serial ports
Serial port /dev/ttyUSB0
Connecting.....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting.....
Detecting chip type... ESP32
Chip is ESP32-D0WD-V3 (revision v3.1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: f4:2d:c9:XX:XX:XX
Uploading stub...
Running stub...
Stub running...
Warning: ESP32 has no Chip ID. Reading MAC instead.
MAC: f4:2d:c9:XX:XX:XX
Hard resetting via RTS pin...

Request for Comments

Loading comments...