3.4 KiB
Emergency Stop Button — Erkenntnisse & Entscheidungen
Hardware-Wahl
ESP32-C3 Super Mini — abgelehnt
Das kompakte Board hat keinen Laderegler (kein TP4056/MCP73831, kein JST-Akku-Anschluss). Zudem zieht eine dauerhaft leuchtende Power-LED 1–2 mA — selbst ohne WLAN-Betrieb würde ein kleiner Akku in wenigen Tagen leer sein.
DFRobot FireBeetle 2 — gewählt
- Integrierter Laderegler + JST-PH-2.0-Anschluss direkt am Board
- Low-Power optimiert (ab Werk ~15 µA im Deep Sleep)
- Kein Zusatz-Hardware nötig für Akkubetrieb
Akku-Spezifikation für den FireBeetle 2
Suchbegriffe:
LiPo Akku 3.7V JST PH2.0 2000mAh SchutzschaltungLi-Po 1S 3.7V protected JST-PH 2.0mm 2000mAh
Pflichtmerkmale:
| Merkmal | Wert |
|---|---|
| Typ | LiPo / Li-Polymer, 1S (1 Zelle) |
| Spannung | 3,7 V nominal |
| Stecker | JST PH, 2,0 mm Raster, 2-polig |
| Schutzschaltung | Ja (BMS/PCM) |
| Kapazität | 2000 mAh |
Achtung: Polarität vor dem Einstecken mit Multimeter prüfen — JST-PH-Stecker sind nicht normiert. Sicherste Option: Akku direkt bei DFRobot kaufen.
Architektur-Entscheidung: WiFi Light Sleep (Priorität: 250 ms Latenz)
Die 250 ms Latenz vom Knopfdruck bis zum API-Call ist das primäre Ziel.
| Option | Latenz | Ø Strom | Laufzeit (2000 mAh) |
|---|---|---|---|
| WiFi Light Sleep (DTIM=10) | 150–250 ms ✅ | ~1 mA | ~80 Tage |
| Deep Sleep + Reconnect | 600–1300 ms ❌ | ~0,02 mA | ~mehrere Jahre |
Deep Sleep scheidet aus: Der WiFi-Reconnect nach dem Aufwachen dauert 600–1300 ms — die 250-ms-Anforderung wird klar verfehlt.
WiFi Light Sleep — Funktionsprinzip
Die CPU schläft, der WiFi-Stack bleibt aktiv. Mit DTIM=10 wacht der ESP32 alle ~1000 ms für 1–2 ms auf, um gepufferte Pakete vom Router abzuholen. Die Verbindungsassoziation bleibt erhalten.
Ein GPIO-Interrupt (Leitung auf GND) weckt den ESP32 in 1–5 ms — der API-Call kann sofort abgesetzt werden, weil WiFi bereits verbunden ist.
Latenzbudget
| Schritt | Zeit |
|---|---|
| Wakeup aus Light Sleep | 1–5 ms |
| WiFi-Verbindung prüfen (bereits aktiv) | 0 ms |
| HTTP-Request aufbauen | 20–50 ms |
| TLS-Handshake (HTTPS) | 50–150 ms |
| Server-Antwort | 20–50 ms |
| Gesamt | ~100–250 ms ✅ |
Akkulaufzeit (WiFi Light Sleep, 2000 mAh)
Durchschnittsstrom (DTIM=10, Taster selten gedrückt): ~1 mA
Nutzbare Kapazität (80 %): 1600 mAh
Selbstentladung LiPo: ~2 mAh/Tag
Laufzeit ≈ 1600 mAh / 1 mA ≈ 1600 h ≈ 67–80 Tage
Zum Vergleich: Mit 1000 mAh (alter Stand) waren es ~40 Tage.
GPIO Wake-Up — technische Details
- Pegel-Trigger (kein Flanken-Trigger): die Leitung muss >ein paar ms auf GND bleiben.
- Pull-Up intern aktivieren: im Ruhezustand HIGH, Ereignis zieht auf GND.
- Wake-fähige Pins sind nur RTC/LP-GPIOs — im FireBeetle-2-Datenblatt prüfen.
- API:
esp_sleep_enable_gpio_wakeup()/esp_light_sleep_start()
Vergleich: Alternative Deep-Sleep-Architektur (nicht für E-Stop geeignet)
Falls in einem anderen Projekt Latenz < 1 s ausreicht und Akkulaufzeit Monate betragen soll:
- Deep Sleep, WLAN nur 8–18 Uhr alle 30 min (20 WLAN-Verbindungen/Tag)
- Zusätzlich GPIO-Wake für Ereignisse (innerhalb ~300 ms nach Aufwachen + Reconnect)
- Laufzeit 2000 mAh: ~8–10 Monate (Selbstentladung dominant)
Für den Emergency Stop Button ist diese Option nicht geeignet, da die WiFi-Reconnect-Zeit die 250-ms-Anforderung überschreitet.