Willkommen zu diesem umfassenden Tutorial, das dir zeigt, wie du mit Deep Sleep in MicroPython das absolute Maximum an Energie sparen kannst! Egal, ob du ein blutiger Anfänger oder schon etwas erfahrener bist, hier lernst du alles, was du brauchst, um deine Projekte länger am Laufen zu halten.
Batteriebetriebene Projekte sind cool, aber leere Batterien sind es nicht! Insbesondere bei Anwendungen wie Sensoren, die Daten über längere Zeiträume sammeln, ist Energieeffizienz entscheidend. MicroPython bietet verschiedene Möglichkeiten, den Stromverbrauch deines Mikrocontrollers zu senken, wobei Deep Sleep eine der effektivsten ist. In diesem Tutorial schauen wir uns Deep Sleep genauer an, vergleichen es mit Light Sleep und zeigen dir, wie du es optimal nutzt.
Für dieses Tutorial benötigst du:
MicroPython bietet zwei Hauptarten von Schlafmodi:
Light Sleep: In diesem Modus behält der Mikrocontroller den RAM-Inhalt und kann schnell wieder aufwachen. Einige Peripheriegeräte bleiben aktiv, was zu einem höheren Stromverbrauch führt als bei Deep Sleep. Ideal, wenn du den Zustand des Programms erhalten musst und eine schnelle Aufwachzeit benötigst.
Deep Sleep: Hier geht der Mikrocontroller in einen sehr stromsparenden Zustand. Der RAM-Inhalt wird nicht gespeichert, und die meisten Peripheriegeräte werden deaktiviert. Der Stromverbrauch ist deutlich geringer als bei Light Sleep, aber das Aufwachen dauert länger, da der Mikrocontroller von Grund auf neu starten muss. Perfekt für Anwendungen, bei denen du den Stromverbrauch wirklich minimieren musst und keine kritischen Daten im RAM halten musst.
Merke: Deep Sleep ist wie ein "Neustart" nach dem Aufwachen.
Hier ist ein einfacher MicroPython-Code, um den Pico in Deep Sleep zu versetzen:
import machine
import time
def deep_sleep():
"""Versetzt den Mikrocontroller in den Deep Sleep Modus."""
print("Gehe in Deep Sleep...")
time.sleep(1) # Kurze Pause vor dem Schlafengehen
machine.deepsleep()
# Beispielaufruf
deep_sleep()
print("Nach dem Deep Sleep - Das wird erst nach einem Neustart ausgeführt!")
Erläuterung:
import machine
: Importiert das machine
Modul, das Funktionen für Hardwarezugriff bietet, einschließlich Deep Sleep.import time
: Importiert das time
Modul für Zeitfunktionen.machine.deepsleep()
: Diese Funktion versetzt den Mikrocontroller in den Deep Sleep Modus. Der Code nach dieser Zeile wird erst nach dem Aufwachen (also nach einem Neustart) ausgeführt.Wichtig: Nach dem Aufruf von machine.deepsleep()
wird dein Pico sofort in den Schlafmodus gehen. Du musst ihn extern aufwecken, wie wir im nächsten Abschnitt sehen werden.
Es gibt zwei Hauptmethoden, um den Pico aus dem Deep Sleep aufzuwecken:
import machine
import time
# Pin für das Aufwecken
wake_up_pin = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_DOWN) # Pin 0, Pull-Down Widerstand
# Deep Sleep Funktion mit Wake-Up Quelle
def deep_sleep_with_pin_wakeup(pin):
"""Versetzt den Mikrocontroller in Deep Sleep und weckt ihn durch einen Pin auf."""
# Konfiguriere den Wake-Up Pin
machine.pin_wake(pin, machine.WAKE_HIGH) # Wecken bei High-Pegel (Rising Edge)
print("Gehe in Deep Sleep und warte auf Pin {}".format(pin))
time.sleep(1)
machine.deepsleep()
# Beispielaufruf
deep_sleep_with_pin_wakeup(wake_up_pin)
print("Nach dem Deep Sleep (Pin Wake-Up) - Das wird erst nach dem Drücken des Tasters ausgeführt!")
Erläuterung:
wake_up_pin = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_DOWN)
: Definiert Pin 0 als Eingangspin mit einem Pull-Down Widerstand. Das bedeutet, dass der Pin standardmäßig auf Low-Pegel ist.machine.pin_wake(pin, machine.WAKE_HIGH)
: Konfiguriert den angegebenen Pin so, dass er den Pico aufweckt, wenn er auf High-Pegel geht (Rising Edge). Wenn du einen Fallenden Pegel (Falling Edge) erkennen möchtest, benutze machine.WAKE_LOW
.import machine
import time
def deep_sleep_with_timer(sleep_ms):
"""Versetzt den Mikrocontroller in Deep Sleep und weckt ihn nach einer bestimmten Zeit auf."""
print("Gehe in Deep Sleep für {} ms...".format(sleep_ms))
time.sleep(1)
machine.deepsleep(sleep_ms)
# Beispielaufruf: Schlafe für 5 Sekunden (5000 Millisekunden)
deep_sleep_with_timer(5000)
print("Nach dem Deep Sleep (Timer Wake-Up) - Das wird erst nach 5 Sekunden ausgeführt!")
Erläuterung:
machine.deepsleep(sleep_ms)
: Versetzt den Pico in Deep Sleep für die angegebene Anzahl Millisekunden. Nach Ablauf dieser Zeit wacht der Pico automatisch auf.Deep Sleep ist besonders nützlich in folgenden Szenarien:
Nehmen wir an, dein Projekt verbraucht im aktiven Zustand 50mA und im Deep Sleep 10uA. Du möchtest eine Batterie mit 1000mAh Kapazität verwenden.
1000mAh / 50mA = 20 Stunden
halten.Deep Sleep ist ein mächtiges Werkzeug, um die Akkulaufzeit deiner MicroPython-Projekte drastisch zu verlängern. Indem du den Mikrocontroller in einen stromsparenden Zustand versetzt, kannst du deine batteriebetriebenen Anwendungen viel länger betreiben. Experimentiere mit verschiedenen Aufweckmethoden und optimiere deinen Code, um das Maximum an Energie zu sparen!