Shutdown-Taster für Raspberry Pi: Unterschied zwischen den Versionen
Geli (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Geli (Diskussion | Beiträge) |
||
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 68: | Zeile 68: | ||
* 1 Vorwiderstand für die LED | * 1 Vorwiderstand für die LED | ||
Zum Thema Vorwiderstand für die LED kann man sich z.B. [https://leds-and-more.de/Widerstandsrechner hier] informieren. Es muss mit einer Betriebsspannung von 3,3V gerechnet werden, der Strom sollte so um 10-20mA (je nach LED) sein. Bei einer roten Standard-LED liegt man mit um die 100 Ohm nie verkehrt.<br /> | Zum Thema Vorwiderstand für die LED kann man sich z.B. [https://leds-and-more.de/Widerstandsrechner hier] informieren. Es muss mit einer Betriebsspannung von 3,3V gerechnet werden, der Strom sollte so um 10-20mA (je nach LED) sein. Bei einer roten Standard-LED liegt man mit um die 100 Ohm nie verkehrt.<br /> | ||
Version 23.3.2014: ... der Strom sollte so um 10 mA sein. Bei einer roten Standard-LED liegt man mit 150 Ohm nie verkehrt. Der 10 kOhm Widerstand dient als Pullup, um dem Eingang bei nicht betätigten Taster ein sauberes high-Signal zu liefern. | ''Version 23.3.2014: ... der Strom sollte so um 10 mA sein. Bei einer roten Standard-LED liegt man mit 150 Ohm nie verkehrt. Der 10 kOhm Widerstand dient als Pullup, um dem Eingang bei nicht betätigten Taster ein sauberes high-Signal zu liefern.'' | ||
<br /> | <br /> | ||
Die Teile müssen folgendermaßen verschaltet werden. | Die Teile müssen folgendermaßen verschaltet werden.<br /> | ||
<br /> | |||
[[Datei:Shutdowntaster.png]]<br /> | |||
<br /> | |||
Kurze Erklärung der Schaltung:<br /> | |||
Schalter nicht betätigt:<br /> | Schalter nicht betätigt:<br /> | ||
Da der Eingangswiderstand vom GPIO sehr viel höher als der Pull-up ist fällt dort fast die gesamte Spannung ab -> HIGH<br /> | Da der Eingangswiderstand vom GPIO sehr viel höher als der Pull-up ist fällt dort fast die gesamte Spannung ab -> HIGH<br /> | ||
Zeile 87: | Zeile 89: | ||
Sollte Pin 7 bei euch schon anderweitig verwendet werden, könnt ihr auch auf einen anderen GPIO Port ausweichen. Ihr müsst dann nur das Script und die Verschaltung entsprechend anpassen. GPIO-3 auf Pin 5 ist aber nicht austauschbar, da sonst das Hochfahren nicht funktioniert.<br /> | Sollte Pin 7 bei euch schon anderweitig verwendet werden, könnt ihr auch auf einen anderen GPIO Port ausweichen. Ihr müsst dann nur das Script und die Verschaltung entsprechend anpassen. GPIO-3 auf Pin 5 ist aber nicht austauschbar, da sonst das Hochfahren nicht funktioniert.<br /> | ||
<br /> | <br /> | ||
===IV. Hochfahren des Rechners=== | ===IV. Hochfahren des Rechners=== | ||
Das Starten aus dem Standby beherrscht der Pi von Hause aus. Dazu muss der GPIO Pin 5 einfach gegen Masse gezogen werden. Darum spricht das Script auch diesen Pin mit LOW Level an, so können beide Funktionen mit nur einem Taster ausgeführt werden. Wichtig dabei ist, dass zum starten der Taster nur kurz betätigt wird (wie ein Mausklick). Bei längerem drücken hängt sich der Pi beim hochfahren auf, und es hilft nur noch Stecker ziehen. Im alltäglichen Gebrauch stört das aber nicht, den Fehler muss man schon absichtlich provozieren. | Das Starten aus dem Standby beherrscht der Pi von Hause aus. Dazu muss der GPIO Pin 5 einfach gegen Masse gezogen werden. Darum spricht das Script auch diesen Pin mit LOW Level an, so können beide Funktionen mit nur einem Taster ausgeführt werden. Wichtig dabei ist, dass zum starten der Taster nur kurz betätigt wird (wie ein Mausklick). Bei längerem drücken hängt sich der Pi beim hochfahren auf, und es hilft nur noch Stecker ziehen. Im alltäglichen Gebrauch stört das aber nicht, den Fehler muss man schon absichtlich provozieren. |
Aktuelle Version vom 17. April 2022, 18:15 Uhr
https://forum-raspberrypi.de/forum/thread/5633-hoch-und-runterfahren-mittels-taster-incl-status-led/?pageNo=1
Für einen sicheren Betrieb von Rechnern ist es erforderlich, diese vor dem Ausschalten herunterzufahren. Insbesondere im Headless-Betrieb (wenn also weder Bildschirm noch Tastatur angeschlossen sind) ist es extrem lästig jedesmal ein Remote Login durchzuführen nur um z. B. den Musikserver herunterzufahren.
Die Beschreibung wurde von obigem Link übernommen und hier ein wenig komprimiert.
Hier wird also beschrieben, wie man mit wenig Bauteilen und einem kleinen Python-Script das Starten und saubere Herunterfahren des Raspberry Pi über die GPIO Schnittstelle durch einen externen Taster realisieren kann. Zusätzlich dient optional eine LED als Statusanzeige für Betrieb und Tastenbetätigung.
I. Vorbereitung
Zu allererst müssen wie immer die Paketquellen aktualisiert werden:
sudo apt-get update
Danach kann dann alles installiert werden, was man zum ansteuern der GPIO Ports via Python braucht:
sudo apt-get install python-dev sudo apt-get install python-rpi.gpio
Wer dabei eine Fehlermeldung (Unable to locate package python-rpi.gpio) erhält kann das Paket auf alternativem Wege installieren:
sudo apt-get install python-pip sudo pip install rpi.gpio
II. Software
Zuerst erstellen wir das Python-Script shutdown.py:
sudo nano /home/pi/shutdown.py
Die Datei enthält folgende Befehlszeilen.
# shutdown script for Raspberry Pi # watch LOW level on pin 5 to enter sleep mode # status led on pin 7: ON = ready, BLINK = confirm button import RPi.GPIO as GPIO import os import time # use the pin number as on the raspi board GPIO.setmode(GPIO.BOARD) # set pin 7 as output and HIGH, pin 5 is input GPIO.setup(7, GPIO.OUT) GPIO.output(7, True) GPIO.setup(5, GPIO.IN) # start the loop for every .5 seconds, waiting for LOW on pin 5 # then 2 short flashes with led to confirm and shutdown to sleep mode while True: if not (GPIO.input(5)): GPIO.output(7, False) time.sleep(.1) GPIO.output(7, True) time.sleep(.1) GPIO.output(7, False) time.sleep(.1) GPIO.output(7, True) os.system("sudo shutdown -h now") time.sleep(.5)
Speichern mit Strg+o, beenden mit Strg+x. Danach muss das Script noch mit ausführbaren Rechten versehen werden:
sudo chmod +x /home/pi/shutdown.py
Damit das Script auch automatisch im Hintergrund startet, wird es in die rc.local eingetragen:
sudo nano /etc/rc.local
Der Aufruf muss vor der Zeile exit 0 stehen. Am Ende sollte es dann so aussehen:
sudo python /home/pi/shutdown.py & exit 0
Wieder speichern mit Strg+o und beenden mit Strg+x.
III. Hardware
Folgende Bauteile werden benötigt:
- 1 Taster (Schließer)
- 1 LED
- 1 Widerstand 10k Ohm
- 1 Vorwiderstand für die LED
Zum Thema Vorwiderstand für die LED kann man sich z.B. hier informieren. Es muss mit einer Betriebsspannung von 3,3V gerechnet werden, der Strom sollte so um 10-20mA (je nach LED) sein. Bei einer roten Standard-LED liegt man mit um die 100 Ohm nie verkehrt.
Version 23.3.2014: ... der Strom sollte so um 10 mA sein. Bei einer roten Standard-LED liegt man mit 150 Ohm nie verkehrt. Der 10 kOhm Widerstand dient als Pullup, um dem Eingang bei nicht betätigten Taster ein sauberes high-Signal zu liefern.
Die Teile müssen folgendermaßen verschaltet werden.
Kurze Erklärung der Schaltung:
Schalter nicht betätigt:
Da der Eingangswiderstand vom GPIO sehr viel höher als der Pull-up ist fällt dort fast die gesamte Spannung ab -> HIGH
Schalter betätigt:
Es wird eine direkte Verbindung zwischen dem GPIO Eingang und GND geschaffen -> LOW
Der Pull-up verhindert einen Kurzschluss zwischen VCC und GND.
Die 10k Ohm für den Pull-up sind nur ein Standardwert, ein paar Kiloohm mehr oder weniger funktionieren genau so gut.
Die LED erfüllt zwei Zwecke. Zum einen als Bereitschaftsanzeige, wenn man den Raspi ohne Bildschirm betreibt (beim Webradio hören, z.B.), und zweitens als Bestätigung zum runterfahren. Das Script fragt den Eingang alle 0,5 Sekunden ab, darum kann es vorkommen, dass ein kurzer Tastendruck nicht reicht. Wird die Betätigung erkannt, dann blinkt die LED zweimal kurz. Wer das nicht braucht, kann die LED auch einfach weg lassen.
Sollte Pin 7 bei euch schon anderweitig verwendet werden, könnt ihr auch auf einen anderen GPIO Port ausweichen. Ihr müsst dann nur das Script und die Verschaltung entsprechend anpassen. GPIO-3 auf Pin 5 ist aber nicht austauschbar, da sonst das Hochfahren nicht funktioniert.
IV. Hochfahren des Rechners
Das Starten aus dem Standby beherrscht der Pi von Hause aus. Dazu muss der GPIO Pin 5 einfach gegen Masse gezogen werden. Darum spricht das Script auch diesen Pin mit LOW Level an, so können beide Funktionen mit nur einem Taster ausgeführt werden. Wichtig dabei ist, dass zum starten der Taster nur kurz betätigt wird (wie ein Mausklick). Bei längerem drücken hängt sich der Pi beim hochfahren auf, und es hilft nur noch Stecker ziehen. Im alltäglichen Gebrauch stört das aber nicht, den Fehler muss man schon absichtlich provozieren.