ESP32
Allgemeines
Auf Grund der vielen Varianten des ESP32 habe ich mir hier ein paar kleine Entscheidungshilfen zusammengetragen.
Eine sehr hilfreiche Variantenuebersicht findet man hier.
Auch diese Vergleichsseite kann helfen.
PINOUT
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_gpiofü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_gpioAlles, 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...