Hallo zusammen!
In diesem Beitrag zeige ich euch, wie ihr den Raspberry Pi sehr einfach um einen Ausschalter (shutdown button) erweitern könnt.

 

Motivation

Bei einem meiner Raspberry Pis ist vor ein paar Tagen der SSH-Server ausgefallen, vermutlich ist der entsprechende Daemon einfach „abgestürzt“. Da ich diesen Pi als Server betreibe und keinen Bildschirm und Tastatur angeschlossen habe war es mir somit nicht mehr möglich, diesen ordnungsgemäß herunterzufahren. Dabei dachte ich, dass es sehr praktisch wäre, wenn man einen Ausschalter am Raspberry Pi hätte, um diesen in einem solchen Fall richtig runterzufahren.

 

Benötigte Hardware

Die benötigte Hardware hält sich für dieses Projekt natürlich sehr in Grenzen. Mein Aufbau besteht aus folgenden Teilen:

  1. Einen Push-Button
    Ich verwende hierzu diese Billig-Knöpfe, die man beim Chinesen oder im deutschen Fachhandel sehr günstig (oft in größerer Stückzahl) bekommt. Zwar nicht schön, aber funktional.
  2. Zwei Jumper-Kabel
    Diese entweder in der Ausführung „female-female“ (wenn man ohne Breadboard arbeitet) oder „female-male“, wenn man wie ich ein Breadboard einsetzt (ist bei mir wegen anderer Dinge sowieso am Raspberry, daher diese Lösung)
  3. Optional: Ein Breadboard
    Kann wie oben erwähnt auch weggelassen werden, wenn gerade nicht zur Hand
  4. Einen Raspberry Pi
    Alternativ natürlich auch einen anderen Einplatinencomputer, dann kann die Ansteuerung und Nummerierung der GPIOs natürlich abweichen.

 

Die Verkabelung

Dieses mal sehr simpel, da ihr nur 2 Kabel und einen Schalter richtig stecken müsst. Eine Seite des Buttons wird mit GPIO3 verbunden, die andere mit GND. GPIO3 besitzt einen Pull-Up-Widerstand, sodass ihr euch hier einen externen Widerstand sparen könnt.

Hier noch ein Schaltplan dazu:

Verkabelung Ausschalter[Update 27.11.2014] Peter hat in den Kommentaren angemerkt, dass man statt des Buttons auch einfach einen Jumper verwenden kann. Da ich diese Lösung auf Grund der Einfachheit sehr interessant finde, hier der dazugehörige Aufbau mit Jumper:

Jumper statt SchalterDie gelbe Verbindung stellt hier den Jumper dar. Ein Jumper (zu Deutsch eine „Steckbrücke“) ist einfach eine leitende Verbindung. Ist auch häufig auf PC-Mainboards, um einen BIOS-Reset durchzuführen etc. Das Bauteil sieht so aus:

JumperZur Verwendung: Ihr könnt den Jumper auf dem Pi lassen, allerdings nur mit einem Pin verbunden, z.B. nur mit GPIO3. Im Bedarfsfall steckt ihr ihn einfach um, dass GPIO3 und GND verbunden werden und der Pi damit herunterfährt. Dazu braucht ihr natürlich nach wie vor das unten aufgeführte Script. Ist der Pi aus, solltet ihr den Jumper wieder umstecken (also nur mit GPIO3 verbinden) und den Pi vom Strom trennen und wieder anschließen, damit er wieder hochfährt.

 

Die Software

Hierzu habe ich ein kleines Python-Script erstellt, welches für das Auslösen des Ausschaltbefehls beim Drücken des Tasters verantwortlich ist. Erstellt also mit einem Editor eurer Wahl ein neues Dokument namens „shutdown_button.py“ mit folgendem Inhalt:

Ihr könnt die Funktion jetzt mal testen, indem ihr alles verkabelt und das Script via sudo python shutdown_button.py aufruft. Sobald der Button gedrückt wird, sollte der Pi herunterfahren.

Hat das geklappt, legen wir uns noch einen crontab-Eintrag an, damit das Script automatisch beim Start des Raspberry Pi gestartet wird und somit immer einsatzbereit ist.. Hierzu editieren wir folgende Datei: sudo nano /etc/crontab

Ganz unten fügen wir folgende Zeile hinzu:

Wobei ihr natürlich den letzten Pfad anpassen müsst. Achtet dabei darauf, dass ihr den vollständigen Pfad benutzt, da cron hier mit dem Benutzer „root“ arbeitet, der ein anderes Home-Verzeichnis hat, als der Standardnutzer pi.


Das war es auch schon wieder. Damit solltet ihr einen funktionstüchtigen Ausschalter für euren Raspberry Pi haben.

Bei Fragen, Anregungen, Fehlern etc. könnt ihr wie immer die Kommentarfunktion nutzen.