Ein- / Ausschalter

V 1.01

Mit dieser einfachen Schaltung und ein paar Zeilen Python-Code ist es möglich, den Raspberry Pi mit einer Taste ein- bzw. wieder auszuschalten. Diese Schaltung ist nur bis zum Raspberry Pi 2 und eventuell Pi 3+ verwendbar. Für den Raspberry Pi 3B und den Pi 4B ist eine andere Lösung verfügbar.

Das Relais hat eine Versorgungsspannung von 5V und besitzt zwei Umschaltkontakte. Die Stromversorgung bekommt das Relais über den USB Port, da dieser im Ruhezustand des Raspberry stromlos ist.

Im stromlosen Zustand ist der Taster direkt mit den beiden Anschlüssen RST verbunden. Durch Drücken des Tasters werden diese kurzgeschlossen, wodurch der Raspberry startet. Dies gilt für alle Raspberry's bis zur Version 3. Ab 3+ muss der mit RUN bezeichnete Pin auf einen der RST Anschlüsse gelegt werden, der andere RST-Anschluss muss auf Masse gelegt werden.

Nachdem der Raspberry gestartet ist, wird das Relais über den USB-Anschluss mit Strom versorgt, wodurch dieses die Kontakte umschaltet.

Jetzt liegt der Taster einerseits auf Masse (GND), andererseits am GPIO26, der über einen Pull-Up Widerstand auf einen eindeutigen HIGH-Pegel gezogen wird. Wird nun der Taster betätigt, wird der GPIO-Port 26 auf LOW gelegt. Das wird durch die Software erkannt und der Raspberry wird geordnet heruntergefahren.

#!/usr/bin/python3
# Datei /home/pi/halt.py
import os, sys, time, RPi.GPIO as gpio
gpio.setmode(gpio.BCM) # Pin-Nummern des P1/J8-Headers
gpio.setup(21, gpio.IN) # Pin 21 ist mit Reset-Button verbunden
while True:
if gpio.input(21) == 0:
os.system("init 0")
sys.exit()
time.sleep(0.3)

Das Script muss mit chmod 655 halt.py ausführbar gemacht werden. In der /etc/rc.local vor exit eine Zeile mit dem Inhalt /home/pi/halt.py & einfügen, um das Script zum Ende des Bootprozesses zu starten. Durch das & am Schluss wird das Script im Hintergrund ausgeführt.

# Datei /etc/rc.local
...
/home/pi/halt.py &
...
exit 0