Stopp / Wake-Taste erstellen?

10

Ich habe eine Wake-from-Stopp-Taste mit den Pins 5 und 6 aufgerüstet. Wenn diese beiden Pins verbunden sind, wird die Stromversorgung zurückgesetzt und vom Stopp aus neu gestartet. Ich möchte dieselbe Schaltfläche verwenden, wenn ich kann, um einen Befehl auszuführen, der beim Drücken den Computer mit herunterfährt sudo halt. Wäre das möglich? Für die sudo haltTaste müsste ich eine Verbindung von GPIO 1 zur Taste herstellen und dann auf GPIO 6 (Masse) und einen allgemeinen GPIO-Pin aufteilen. Ich weiß auch nicht, ob es möglich / sicher ist, GPIO 5 daran anzuschließen.

Ryan McClure
quelle

Antworten:

8

Es müssen keine weiteren GPIO-Pins hinzugefügt werden. Sie können einfach die gleichen Stifte für Ihre Stopp-Taste verwenden.

Hier ist ein Python-Code, der Pin 5 abfragt. Wenn die Taste gedrückt wird, wird Pin 5 auf Masse gezogen (Pin 6), und der Code liest ein LOW. In diesem Fall wird der haltBefehl ausgeführt

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import subprocess

GPIO.setmode(GPIO.BOARD)
# set pin 5 to input, and enable the internal pull-up resistor
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)

oldButtonState1 = True
while True:
    buttonState1 = GPIO.input(5)

    if buttonState1 != oldButtonState1 and buttonState1 == False :
        # print "Button 1 pressed"
        subprocess.call("halt", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    oldButtonState1 = buttonState1

    time.sleep(.1)

PS. Ich wusste nichts über die Wake from Halt-Funktion. Dank dir weiß ich es jetzt! So danke.

Gerben
quelle
1
Brillant! Ich wusste nicht, dass ich alles mit nur 5 und 6 machen kann. Danke! :)
Ryan McClure
Also haben wir beide heute etwas gelernt (-:
Gerben
Eher eine Notiz für mich. Sie können den Code sogar so ändern, dass eine Presse einen Neustart durchführt und durch Drücken und Halten ein Herunterfahren durchführt (oder umgekehrt).
Gerben
Auf welche Weise läuft Ihr Skript kontinuierlich, dh daemonisiert? Haben Sie beim Ansehen von Filmen einen Leistungsabfall festgestellt?
Athanassis
1
In der Tat ist es sehr lange her, aber nicht, wenn die CPU einige Sekunden lang 100% erreicht, wenn beispielsweise ein Full-HD-Film dekodiert wird. Ich werde es versuchen, Testen tut nie weh. Danke für die Rückmeldung!
Athanassis
2

Am P6-Header kann eine Reset-Taste angebracht werden, mit der der Pi zurückgesetzt werden kann. Ein kurzes Kurzschließen der beiden Pins von P6 führt zu einem Soft-Reset der CPU (wodurch der Pi auch aus dem Stopp- / Abschaltzustand "geweckt" werden kann).

vgl

hiro345
quelle