# 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 Schutzschaltung` - `Li-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.