Files
appRobotDriver/EmergencyStopButton/EmergencyStopButton.md
2026-06-25 18:58:55 +02:00

3.4 KiB
Raw Permalink Blame History

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 12 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) 150250 ms ~1 mA ~80 Tage
Deep Sleep + Reconnect 6001300 ms ~0,02 mA ~mehrere Jahre

Deep Sleep scheidet aus: Der WiFi-Reconnect nach dem Aufwachen dauert 6001300 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 12 ms auf, um gepufferte Pakete vom Router abzuholen. Die Verbindungsassoziation bleibt erhalten.

Ein GPIO-Interrupt (Leitung auf GND) weckt den ESP32 in 15 ms — der API-Call kann sofort abgesetzt werden, weil WiFi bereits verbunden ist.

Latenzbudget

Schritt Zeit
Wakeup aus Light Sleep 15 ms
WiFi-Verbindung prüfen (bereits aktiv) 0 ms
HTTP-Request aufbauen 2050 ms
TLS-Handshake (HTTPS) 50150 ms
Server-Antwort 2050 ms
Gesamt ~100250 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 ≈ 6780 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 818 Uhr alle 30 min (20 WLAN-Verbindungen/Tag)
  • Zusätzlich GPIO-Wake für Ereignisse (innerhalb ~300 ms nach Aufwachen + Reconnect)
  • Laufzeit 2000 mAh: ~810 Monate (Selbstentladung dominant)

Für den Emergency Stop Button ist diese Option nicht geeignet, da die WiFi-Reconnect-Zeit die 250-ms-Anforderung überschreitet.