Perfekt für dieses Setup eignet sich der Enable Timer (Abbildung 3) von Adafruit [2]. Über ein etwas fummeliges Drehpoti oder wahlweise einen Festwiderstand stellen Sie dabei das Aufwachintervall ein. Außerdem erlaubt ein Button das manuelle Aufwecken.
Für das Abschalten sorgt der Pico selbst, sobald Sie einen GPIO-Pin mit dem Done-Pin des Timers verbinden und auf High setzen. Der sehr geringe Eigenverbrauch des Buttons liegt bei 20 µA, die Stromkurve nimmt die Idealform an (Abbildung 4). Der einzige Nachteil in dieser Konstellation besteht in der Einschränkung der Intervalle auf den Bereich zwischen einer Sekunde und zwei Stunden. Tagesintervalle funktionieren damit also nicht, aber für viele zyklische Anwendungsfälle eignet sich der Enable-Timer perfekt.

Abbildung 4: Wie das Diagramm zeigt, optimiert der Enable Timer TPL5111 den Stromverbrauch am besten.
Alternative C
Wer auf CircuitPython setzt, gibt die volle Kontrolle über den Prozessor auf. Das betrifft nicht nur taktgenaue Signale, sondern auch den Speicher und die Peripherie. Wer das Letzte aus dem Pico und anderen MCUs herausholen will, kommt deshalb nicht um C/C++ herum.
Da aber letztlich die CircuitPython-Implementation das C/C++-SDK nutzt, lässt sich hinsichtlich der Schlafmodi nicht wesentlich mehr herausholen. Im Pico-SDK-Jargon heißt es zwar nicht Light Sleep und Deep Sleep, sondern Sleep Mode und Dormant Mode, doch dafür bietet das SDK die zwei Beispielprogramme hello_sleep und hello_dormant, die den Einsatz demonstrieren.
Für eigene Projekte lohnt ein Blick in das Github-Repo von SleepyPico [3]. Es enthält eine komplette Anwendung, die eine wiederverwendbare Klasse Sleep mitbringt. Für sie definieren Sie eine Setup-Funktion (einmaliger Aufruf) sowie eine Loop-Funktion, die die Klasse einmal pro Arbeitsintervall aufruft.
Fazit
Mit den hier beschriebenen Maßnahmen drücken Sie den Stromverbrauch des Pico während des Nichtstuns auf 0 bis 1 mA und verlängern damit die Akkulaufzeit deutlich. Letztlich bestimmt dann der Stromverbrauch während des Aufwachens und Arbeitens die Akkulaufzeit, unabhängig von der gewählten Programmiersprache. CircuitPython spielt aber auch hier seine Stärken aus, denn bei einem Wechsel des Chips, etwa weil Sie Bluetooth oder WLAN benötigen, müssen Sie nichts Neues lernen, was das Stromsparen angeht. (tle)
Der Autor
Bernhard Bablok arbeitet bei der Allianz Technology SE als SAP-HR-Entwickler. Wenn er nicht Musik hört oder mit dem Rad respektive zu Fuß unterwegs ist, beschäftigt er sich mit Themen rund um Linux, Programmierung und Kleinrechnern. Sie erreichen ihn unter mailto:[email protected].
Infos
- Beispiele zum Artikel: https://github.com/bablokb/pico-sleepcurrent
- Adafruit Enable Timer: https://www.adafruit.com/product/3435
- C++-Wrapper-Klasse für die Schlafmodi: https://github.com/ms1963/SleepyPico






