Aus Raspberry Pi Geek 10/2017

Raspberry Pi per RTC-Timer an- und ausschalten (Seite 2)

Die Abbildung 4 zeigt die dritte Baugruppe mit zwei möglichen Implementierungen für die Verwendung von SMD-Bauelementen (Mosfets links). Hier kommt zum einem ein LogL N-Ch T4 (beispielsweise ein IRLML2502) zum Einsatz, zum anderen ein LogL P-Ch T5 (etwa ein Si4463) ohne Kurzschlussschutz bis etwa 2 Ampere. Alternativ greifen Sie zu einem BTS462, wie Sie ihn rechts in der Abbildung sehen (in Abbildung 2 im Einsatz), mit Kurzschlussschutz bis etwa 3,5 Ampere – sofern das verwendete 5V-Schaltnetzteil so viel hergibt. In beiden Varianten sollte also das SNT den Kurzschlussschutz gewährleisten. u

Der Strombedarf der Schaltung hält sich in engen Grenzen und liegt unter 1 Milliampere im Aus-Zustand. Letztlich kommt es daher mehr auf die Effizienz des Schaltnetzteils an, wenn es um das Thema Stromverbrauch im abgeschalteten Zustand geht.

Die Software

Die Software auf dem RasPi muss sich im Prinzip um zwei Dinge kümmern: Fährt der RasPi herunter, soll ein Pegelwechsel auf einem Pin stattfinden; außerdem muss der Mini-Rechner die RTC steuern. Die erste Aufgabe lässt sich mit Bordmitteln schnell erledigen, denn Raspbian stellt dafür ein Standardverfahren bereit. Sie müssen lediglich die Zeile aus Listing 1 in der Konfigurationsdatei /boot/config.txt des Raspberry Pi ergänzen.

Listing 1

 

dtoverlay=gpio-poweroff,gpiopin=4

Der Treiber ändert den Pegel erst kurz vor dem Ende des Shutdowns. Zu diesem Zeitpunkt sind alle Dateisysteme entweder ausgehängt oder arbeiten nur noch im Nur-Lesemodus. Deshalb darf die Schaltung sofort reagieren und den Strom abschalten, ohne dem RasPi zu schaden. Ein weiterer Vorteil des Treibers besteht darin, dass er wirklich nur auf ein Poweroff reagiert (das ist die Standardeinstellung für das Shutdown-Kommando). Bei einem Reboot hingegen löst der Treiber nicht aus, sodass das System ohne Probleme durchstartet.

Beim Systemstart konfiguriert der Treiber den eingestellten Pin als Ausgang. Während einer kurzen Zeitspanne davor arbeitet der Pin aber als Eingang und im Modus floating, also ohne definierten Pegel. Ein Pulldown-Widerstand sorgt deshalb dafür, dass die Schaltung dem RasPi nicht gleich wenige Sekunden nach dem Start wieder den Strom abdreht.

Die RTC programmieren

Als größere Herausforderung stellt sich das Programmieren der RTC heraus. Der gewählte Baustein DS3231 ist weit verbreitet, das Standard-Raspbian unterstützt die reine Uhrfunktion gut. Üblicherweise aktivieren Sie die RTC mit zwei Zeilen in der /boot/config.txt (Listing 2), zudem laden Sie durch Eintragen der Zeile i2c-dev in der Datei /etc/modules das entsprechende Kernel-Modul.

Listing 2

 

[...]
dtparam=i2c_arm=on
#dtoverlay=i2c-rtc,ds3231

Allerdings erlaubt der Standard-DS3231-Treiber keinen Zugriff auf die Alarmregister der Uhr. Deshalb laden wir ihn für dieses Projekt gar nicht erst – deswegen haben wir die letzte Zeile in Listing 2 auch auskommentiert. Die komplette Kontrolle der Uhr liegt auf diese Weise im Userspace.

Die Kommunikation mit der RTC erfolgt über den I2C-Bus. Die Implementation gestaltet sich dank guter Python-Unterstützung unaufwendig – es geht hier im Wesentlichen darum, die Bits der entsprechenden Register richtig zu setzen. Das Wake-On-RTC-Projekt des Autors [4] stellt dafür eine Low-Level-Python-Bibliothek sowie das Anwendungsprogramm Rtcctl bereit.

Der Befehl rtcctl unterstützt eine ganze Reihe von Kommandos; die der Aufruf sudo rtcctl help komplett auflistet. Die beiden Kommandos aus Listing 3 setzen als Beispiel zum einen das Systemdatum gemäß der RTC-Uhrzeit sowie den ersten Alarm der RTC. Weitere Details liefert die Projektdokumentation.

Listing 3

 

$ sudo rtcctl set sys
$ sudo rtcctl set alarm1 "23.07.17 08:30"

Die RTC speichert für den Alarm kein volles Datum, sondern nur den Tag des Monats sowie die Stunde, Minute und Sekunde (Letzteres auch nur für den ersten Alarm). Das beschränkt den Zeithorizont für den nächsten Alarm auf maximal 30 Tage. Aus diesem Grund differieren unter Umständen der angeforderte und der tatsächlich gesetzte Alarmzeitpunkt: Setzen Sie am 01.09.17 den Alarm auf den 15.10.17, stellen Sie den Alarm tatsächlich auf den 15. September.

Für den Alltag stellt diese Einschränkung meist kein Problem dar, denn in der Regel fällt – von längeren Urlauben einmal abgesehen – mindestens ein Bootvorgang pro Monat an. Außerdem weiß die Wake-On-RTC-Software mit dieser Einschränkung umzugehen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben