Raspberry Pi Hardware erweitern



Inhalt:

  1. 1. Hard-Reset
    1. 1.1 Platzierung der Raspberry Pi Hard-Reset-Kontakte
    2. 1.2 Start/Reset-Taster einbauen
  2. 2. Soft-Reset
    1. 2.1 Halt-Taster einbauen
      1. 2.1.1 Die Schaltung
      2. 2.1.2 Die Software


1. Hard-Reset

Hard-Reset eignet sich für das Hochfahren und den absturzbedingten Neustart des Betriebssystems. Dabei wird die Spannungsversorgung des RPis kurz unterbrochen.

Seit der Einführung von Raspberry Pi B mit PCB Revision 2.0 im 3. Quartal 2012 unterstützen alle RPis einen Hard-Reset. Dementsprechend besitzen sie die P6 bzw. RUN Kontakte auf der Platine die nicht bestückt sind. Werden diese Kontakte bei einem heruntergefahrenen RPi überbrückt, wird er hochgefahren. Im laufendem Betrieb dagegen neugestartet.

Die Kontakte liegen bei den verschieden Modellen an unterschiedlichen Stellen. Wo man sie findet ist in der folgenden Tabelle aufgelistet.

Platzierung der Raspberry Pi Hard-Reset-Kontakte

ModellPCB RevisionKontaktnameOrt
ZeroV1.2RUNunter den GPIO-Steckplätzen
V1.3
Raspberry Pi Modell BV2.0P6zwischen dem HDMI-Anschluss und 3,3 V Spannungsregler
Raspberry Pi Modell A+V1.1RUNzwischen dem Display-Anschluss und Status LED's
Raspberry Pi Modell B+V1.2
Raspberry Pi 2 Modell BV1.1
Raspberry Pi 3 Modell BV1.2zwischen USB- und GPIO-Anschlüssen

1.2 Start/Reset-Taster einbauen

An die Hard-Reset-Kontakte kann man einen Taster anschliessen um leichter einen Neustart auslösen zu können. Ob der Taster direkt auf der Platine verlötet, an dem Gehäuse platziert oder über eine externe Schaltsteuerung realisiert wird ist der Kreativität und den Anwendungsansprüchen überlassen.


Drucktaster, Druckschalter bei reichelt elektronik



Anzeige

2. Soft-Reset

Bei Soft-Reset wird das Betriebssystem nicht abrupt durch die Spannungsversorgungsunterbrechung beendet, sondern ordnungsgemäß heruntergefahren. Dabei wird durch das Betriebssystem ein shutdown-Befehl ausgeführt. Hochgefahren wird das Betriebsystem durch das Überbrücken der P6 bzw. RUN Kontakte (Drücken des P6/RUN-Tasters wenn eingebaut wie im Abschnitt 1.2 Start/Reset Taster einbauen beschrieben).

2.1 Halt-Taster einbauen

Der Halt-Taster soll das Herunterfahren des Betriebssystems einleiten. Bei gedrücktem Taster sinkt die Spannung am GPIO4 auf 0 Volt. Die RPi-Software erkennt es als fallende Flanke und führt den shutdown-Befehl aus.

2.1.1 Die Schaltung

Raspberry-Pi-Soft-Reset-Taster-Schaltung
Schaltung Halt-Taster

Erklärung der Schaltung

Im Ausgangszustand (Taster nicht betätigt) liegen 3,3 V (300 μA) am PIN 7 (GPIO4). Wird der Taster S1 betätigt fließt der gesamte Strom (330 μA) über den R1-Widerstand und S1-Taster zur Masse. Duch den R2 Widerstand und somit PIN 7 fließt also kein Strom. Nach dem ohm’schen Gesetz U = R • I heisst es, wo kein Stom auch keine Spannung. Also beträgt sie am PIN 7 jetzt 0 Volt. Die GPIO-Software des RPis erkennt es als Low-Zustand und leitet das Herunterfahren des Betriebssystems ein.

Anzeige



Raspberry Pi 3 B für nur 32,50 €
4x 1,2 GHz, 1 GB RAM, WLAN, BT

2.1.2 Die Software

Für das einfache Programm eignet sich am besten die GPIO Interface Bibliothek für die Kommandozeile WiringPi die auf dem Raspbian Jessie schon installiert ist. Man kann es auch mit dem folgenden Befehl überprüfen:

$ gpio -v

Es sollten die Versionsnummer und einige Raspberry Pi Informationen, sowie die Unterstützung der Bibliothek ausgegeben werden:

Ausgabe der Wiring Pi Version
Ausgabe der Wiring Pi Version

Ist es nicht der Fall, muss Wiring Pi anhand dieser Anleitung nachinstalliert werden.

Das Programm, das im Hintergrund das Herunterfahren des Betriebsystems verwaltet sieht dann mit Benutzung von Wiring Pi folgendermaßen aus:

#!/bin/bash
pin=7
gpio mode $pin in
gpio wfi $pin falling
logger Shutdown button pressed
shutdown -h now

Programmablauf

In Zeile 2 wird der WiringPi Pin 7 (BCM GPIO Pin 4, P1/J8 Stiftsteckleiste Pin 7) in einer Variable festgelegt. Wiring Pi Bibliothek benutzt eine eigene Pin-Nummerierung, die von der Hardware-Nummerierung abweicht. Laut dem Entwickler der WiringPi Bilbiothek soll man diese Nummerierung möglichst beibehalten um die Pin Anpassungen auf unterschiedlichen Raspberry Pi Modellen zu vermeiden. Hier die Erklärung des Entwicklers.

In Zeile 3 wird der festgelegte Pin 7 als Eingang konfiguriert.

In Zeile 4 wird veranlasst dass am Pin 7 im Hintergrund auf eine fallende (High=>Low) Flanke gewartet werden soll. In diesem Fall wird das Herunterfahren erst dann eingeleitet, wenn der Taster gedrückt wird und die Spannung am Pin 7 auf 0 Volt sinkt.

In Zeile 5 wird eine Nachricht über gedrückten Taster zum Herunterfahren in die System Logdatei (/var/log/syslog) geschrieben.

In Zeile 6 wird das Herunterfahren eingeleitet.

Skript erstellen

Mit dem Texteditor nano die Datei /etc/userbuttonhalt erstellen.

$ cd /etc
$ sudo nano userbuttonhalt

Das obrige Bash-Skript kopieren und in das nano-Fenster einfügen. Achten darauf dass die letzte Zeile leer bleibt. shutdown -h now muss also mit ENTER (CR\LF) abgeschlossen worden sein, sonst wird shutdown nicht ausgeführt!

nano - userbuttonhalt bash-Skript
nanouserbuttonhalt bash-Skript

Mit Strg+O die Skriptdatei speichern. Nach einer Bestätigung mit ENTER, nano mit Strg+X schliessen.

 

Mit dem Befehl:

$ sudo chmod a+x userbuttonhalt

das Skript ausführbar machen.

Anzeige




Gebrauchte und geprüfte Artikeln

Funktionstest

Für den Test wird das Skript einmalig als Hintergrundprozess ausgeführt mit

$ sudo /etc/userbuttonhalt &

Wenn jetzt der Halt-Taster gedrückt wird, soll das Betriebsystem herunterfahren.

Skript als Hintergrundprozess immer ausführen

Der userbuttonhalt Skript-Dateipfad muss noch in die /etc/rc.local eingetragen werden damit das Skript nach dem Abschluss aller Bootprozesse im Hintergrund gestartet wird.

$ sudo nano /etc/rc.local

Am Ende vor dem exit 0 – Befehl

/etc/userbuttonhalt &

eintragen.

nano-userbuttonhalt-after-boot
nano – userbuttonhalt nach dem Bootprozess starten

WICHTIG: Das & – Zeichen hinter dem Pfad ist wichtig damit das Skript als Hintergrundprozess ausgeführt wird.

 

Mit Strg+O speichern, mit ENTER bestätigen und mit Strg+X nano schliessen. Raspberry Pi neustarten.

 

Wenn jetzt auf den Taster gedrückt wird, soll das Betriebsystem herunterfahren. Nach einem Neustart mit dem P6 bzw. RUN – Hard-Reset-Taster soll das Skript, wie unten in dem htop Task Manager angezeigt, im Hintergrund als daemon (Prozess) ausgeführt werden.

htop userbuttonhalt Skript deamon
htop – userbuttonhalt Skript deamon