Deep Sleep with FiPy / ESP32 on MicroPython

Damit die Nodes auch mit einer Batterie gut laufen brauchen wir eine deep sleep-Phase zwischen den Messungen, erster Versuch:

Ist es nur beim Setzen auf “0”, sprich ist der Vairablenwert “0” das Problem – was macht z.B. “5”? – oder ist es der deep sleep an sich?

Bezüglich der Sorge von @Andreas, ob dann alles auch wieder anständig hochkommt, gäbe es auch noch die brachiale Methode deep_sleep.hw_reset().

Wenn es irgend geht bitte nicht, wir versperren uns damit den Weg Dinge dynamisch über ein reset hinweg lokal zu speichern, z.B. das letzte Gewicht, um bei einer sehr hohen Differenz bei der nächsten Messung einen Schwarm- oder Diebstahlsalarm auch lokal auszulösen.

Für die Micro-Python-Firmware von BOB wollen wir zwischen den Messungen eine deep sleep-Phase, siehe https://github.com/Hiverize/FiPy/issues/2 haben, um den Stromverbrauch zu reduzieren.

@einsiedlerkrebs, du hattest doch schon mal erste Versuche gestartet, sagte mir @Andreas. Hast du Tipps für @vinz wie das am besten zu realisieren ist?

Ich hatte es so probiert:

Aber keinen Erfolg gehabt. I commented in Github:

Nachdem @clemens bei BOB-Platine im LiPo-Betrieb (ohne deep sleep) nochmal zu Recht gedrängt hatte - danke! - sind wir hier nun einen Schritt weitergekommen.

Einleitung

@clemens meint, wir wären hier noch nicht fertig.

Gut, lass uns weitermachen.

Sammlung

Hier nochmals eine wertvolle Sammelei von @clemens, die schon '17 begann.

A post was merged into an existing topic: Low power ESP32: Hardware and Software

lte.deinit() hatte ich schon mal irgendwo aufgeschnappt, aber hier stehts nun schwarz auf weiß von @adrianbro, was das mit der Stromaufnahme machen kann, wenn man es vergisst. Danke!

FiPy current consumption analysis | Pycom user forum

1 Like

Hier auch noch mehr dazu:

See also.

This is the code used to sleep:

import machine
machine.pin_deepsleep_wakeup(pins=['P8'], mode=machine.WAKEUP_ALL_LOW, enable_pull=True)
machine.deepsleep(60000)

Question

Answer

1 Like

Ok, für LoRa, LTE sind wir dann erst mal auf der sicheren Seite, da es in unserer Firmware nicht enabled wird, oder?

Wird WLAN / Bluetooth bei uns schon ausgeschaltet vor den schlafen?

Hallo in die Runde,

ein kleiner Zwischenbericht zum Thema. Ich muss sagen: Zu fast jedem Aspekt im Bereich des Deep Sleep gibt es widersprüchliche Meinungen (im Pycom Forum) – wie überall anders auch auf der Welt. Der Irrsinn!

Gerade das LTE-Modem soll angeblich ein Biest sein, was die korrekte und deterministische Abschaltung betrifft. Es gibt aber noch eine ganze Reihe anderer Dinge, die unter bestimmten Umständen bei manchen Leuten noch nicht ordentlich zu funktionieren scheinen – und dann wieder doch ;].

Ich vermute eine eindeutige Korrelation mit Mondphasen. Wer andere Begründungen finden will, wird unter Umständen auch bei [1] fündig. Im Zweifelsfall immer geeignet: cosmic rays – not actually kidding at all [2] ;].

Viele Grüße,
Andreas.

[1] Spurious Correlations
[2] Re: Memory errors / ECC memory vs. cosmic rays

Moar News

Während jenes ganz frische bei

vielleicht wirklich nur PySense-spezifisch sein mag, erzeugt der ebenso recht aktuelle Beitrag (gegründet vor zwei Wochen) bei

definitiv wieder weitere Perspektiven auf. Gut, dass wir Hardware-Leute an Bord haben. Tobt Euch aus. ;]

Viele Grüße,
Andreas.

Recap lte.deinit()

Einleitung

Dank @pinguin kam drüben bei WIP: Merge Hiverize/FiPy and hiveeyes/hiveeyes-micropython-firmware by pinguin999 · Pull Request #11 · hiveeyes/hiveeyes-micropython-firmware · GitHub das Thema “To lte.deinit() or not to lte.deinit()?” nochmal auf den Tisch. Das ist fein, weil ich es gedanklich auch noch nicht abgeschlossen hatte, siehe auch LTE-Modem ordentlich deaktiviert?.

Retrospektive

Status quo

Die Routine def power_off_lte_modem() wird aktuell bei jedem Systemstart aufgerufen.

Fragestellung

However, we are wondering whether this single line actually does something reasonable.

These

Wenn das LTE-Modem gar nicht erst hochfährt, gilt dann o.g. Faustregel bzgl. lte.deinit() überhaupt?

Ausblick

Erstmal bleibt alles so wie es ist. Sehr schade ist allerdings, dass die o.g. Routine ungefähr 6 Sekunden bei jedem Systemstart in Anspruch nimmt.

Wenn also nochmal jemand Fleißarbeit in Richtung Stromverbrauchsmessungen mit/ohne unternehmen will… Top!