ESP32
Zur Navigation springen
Zur Suche springen
Allgemeines
Auf Grund der vielen Varianten des ESP32 habe ich mir hier ein paar kleine Entscheidungshilfen zusammengetragen.
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...