Startseite>Raspberry Pi per RTC-Timer an- und ausschalten
Aus Raspberry Pi Geek 10/2017

Raspberry Pi per RTC-Timer an- und ausschalten

© Anastasia Alforova, 123RF

Aufgewacht!

Bernhard Bablok

Der Raspberry Pi fährt auf Kommando herunter, doch zum Aufwachen fehlt ihm eine Echtzeituhr. Mit einer RTC und ein paar Schaltungen steuern Sie den Schlaf- und Wachrhythmus des Mini-Rechners.

Eine der Ausstattungslücken des Raspberry Pi betrifft das Fehlen einer Echtzeituhr. Eine solche Real-Time-Clock (RTC) lässt sich aber problemlos nachrüsten, etwa in Form des weit verbreiteten RTC-Moduls DS3231 [1]. Es kostet nur wenige Euro und funktioniert bestens mit dem RasPi; zahlreiche Tutorials im Internet beschreiben den Einsatz des Uhrenchips.

Einen wichtigen Aspekt der RTC verschweigen die Tutorials aber: Der Chip vermag zwei unabhängige Alarme auszulösen. Da liegt die Idee nahe, dass die Uhr den RasPi wieder anschalten kann, vorausgesetzt, er programmiert den Aufwachzeitpunkt in der RTC vor dem Shutdown selbst. Von der Idee bis zur Umsetzung mussten wir dann allerdings noch ein paar Hürden überwinden.

Ein typischer Anwendungsfall der Schaltung wäre etwa ein Server, der sich spät am Abend selbst herunterfährt und morgens wieder automatisch bootet. Während sich dieses Beispiel noch mit einer zeitgesteuerten Steckdose realisieren ließe, kommt ein Videorecorder auf RasPi-Basis [2] damit nicht hin, da Abschalten und Neustart nicht zu festen Zeiten stattfinden.

Der Ablauf

Abbildung 1 zeigt von links nach rechts den generellen Ablauf. Ein Taster (S1) schaltet den Strom für den RasPi ein, der Rechner bootet. Am Ende des Shutdowns setzt der RasPi den Pegel eines Pins auf High (A1 im Schaubild). Das führt zum Abschalten des Stroms, der Pegel des Pins fällt dadurch sofort wieder auf null (A2).

Abbildung 1: Das Ablaufschema der Stromschaltung.

Abbildung 1: Das Ablaufschema der Stromschaltung.

Zum Zeitpunkt B1 löst der in der RTC hinterlegte Alarm aus. Der DS3231-Chip zieht dazu den per Pullup auf High gelegten Pin INT auf Low. Dieser Pegel bleibt vorerst so, bis der Alarm gelöscht wird. Ein Low auf der Interrupt-Leitung schaltet den Strom für den RasPi wieder ein; der fährt hoch und löscht im Rahmen des Boot-Prozesses den Alarm (B2). Daneben lässt sich der Raspberry Pi auch ohne aktivierten RTC-Alarm herunterfahren. Danach muss man ihn allerdings über den Taster S1 starten.

Die Hardware

Im Internet gibt es verschiedene Ausführungen des DS3231-Chips auf kleinen Platinen für wenig Geld. Hier gilt es, genau hinzusehen: Minimalistische Varianten führen nur VCC, GND, SDA und SCL heraus. Das genügt zwar für den Betrieb als RTC, doch lassen sich aus den internen Alarmregistern solcher Platinen ausgelöste Alarme nicht abgreifen.

Dafür bedarf es mindestens noch eines weiteren Pins, üblicherweise INT/SQW genannt. INT steht dabei für Interrupt und SQW für Square Wave. Bei Bedarf lässt sich beim Eintreten eines Alarms über diesen Ausgang statt eines Interrupts (Pegelwechsel von High auf Low) auch ein Rechtecksignal ausgeben. Im aktuellen Projekt kommt der Chronodot [3] zum Einsatz, dessen Design vollständig offenliegt.

Die Herausforderungen seitens der Elektronik liegen darin, dass die Schaltung auf drei Signale reagieren muss, teilweise auf Pegel (Taster S1) und teilweise ausschließlich auf steigende Flanken (RTC/INT). Diese Anforderungen erfüllt ein diskretes Flipflop (D-FF oder kurz FF) vom Typ 74HCT74 (5V-Typ). Die logischen Verknüpfungen der beiden Eingangspegel von RTC/INT und dem RasPi-GPX erfolgen über ein logisches Oder.

Der Einschaltvorgang initiiert das FF und schaltet den RasPi über S2 ein. Die Invertierungen erledigt ein 74HCT04 (sechs Inverter). Optimal ist diese Konfiguration noch nicht, die Verfügbarkeit aus der Bastelkiste war ausschlaggebend. Wer also das diskrete Oder nicht mag, nimmt einen IC 74HCT02 mit vier NOR-Gattern, einem Gatter für das NOR und zwei Gattern für die Inverter; dabei bleibt ein Gatter ungenutzt. Damit würde man sogar mit nur einem IC für die erste Baugruppe auskommen.

Der Aufbau

Den vollständigen Testaufbau zeigt Abbildung 2; links sehen Sie die Platine mit der Schaltung. Darauf sitzen oben links der Stromeingang (per Hohlbuchse) und oben rechts der Stromausgang zum RasPi. Der Taster S1 hat seinen Platz rechts unten, darüber verlaufen die Anschlüsse für die Verkabelung Richtung RTC und Raspberry Pi. Die RTC-Platine schleift dabei GND sowie die Meldeleitung für den Shutdown zum RasPi durch.

Abbildung 2: Die Ansicht der Schaltung (links) mit Real-Time-Clock (Mitte) und Raspberry Pi (rechts).

Abbildung 2: Die Ansicht der Schaltung (links) mit Real-Time-Clock (Mitte) und Raspberry Pi (rechts).

Abstrakt ist das System in drei Baugruppen aufgeteilt (siehe Schaltpläne in Abbildung 3 und Abbildung 4). Diskrete N-Ch-Mosfets und ein gemeinsamer Drain-Widerstand verschalten die zwei Eingänge E und X2 der ersten Baugruppe (Wired OR) zu einem Zweifach-NOR. Da diese Stufen das Eingangssignal negieren, folgt ein Gatter mit Inverter2; fertig ist das logische Oder. Außerdem steht zum Zeitpunkt des Einschaltens der Pegel bei RTC/INT auf High (kein Alarm). Das NOR erfordert jedoch Low, siehe erste Zeile der Wahrheitstabelle in Abbildung 3. Deshalb muss man vor dem Eingang X1 das RTC/INT-Signal invertieren (Inverter1).

Abbildung 3: Der erste Teil des Schaltplans.

Abbildung 3: Der erste Teil des Schaltplans.

Abbildung 4: Der zweite Teil des Schaltplans.

Abbildung 4: Der zweite Teil des Schaltplans.

Die zweite Baugruppe bildet das D-FF (ganz rechts in Abbildung 3). Es reagiert in der Belegung /CLR=/PR=High am Pin CK (Takt) nur auf steigende Flanken mit einem Pegelwechsel am Ausgang Q und /Q (siehe Datenblatt). Das realisiert die wechselnde Ein/Aus-Funktion, vergleichbar zu jener eines Schrittschaltwerks. Beim Umschalten von /PR auf Low durch Taster S1 wechselt der Ausgang auf Q=High und /Q=Low. Diese Zwangsumschaltung dient hier dem Einschaltvorgang für den RasPi über den elektronischen Schalter S2.

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.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland