Inhaltsverzeichnis:

Ausschalttaste für Raspberry Pi - Gunook
Ausschalttaste für Raspberry Pi - Gunook
Anonim
Ausschalttaste für Raspberry Pi
Ausschalttaste für Raspberry Pi

Der Raspberry Pi ist eine sehr nützliche Computerplattform, mit der verschiedene IoT-/Robotik-/Smart-Home-/…-Projektanwendungen erstellt werden können. Das einzige, was es jedoch im Vergleich zu einem normalen Computer nicht hat, ist ein Abschaltknopf. Wie können wir also selbst eine erstellen? Gut, lass es uns gemeinsam tun!

Für dieses Tutorial benötigen Sie Folgendes:

  • 1 Raspberry Pi bereits konfiguriert und einsatzbereit
  • 1 Steckbrett oder etwas, mit dem Sie die elektronische Schaltung erstellen können
  • 1 Taster
  • 2 Überbrückungsdrähte

Wenn Sie noch nie einen Raspberry Pi verwendet haben, können Sie sich mein Tutorial ansehen, wie und was zu tun ist, um es zu konfigurieren:

www.instructables.com/How-to-Setup-a-Raspberry-Pi-and-Start-Using-It/

Schritt 1: Elektronische Schaltung

Elektronische Schaltung
Elektronische Schaltung
Elektronische Schaltung
Elektronische Schaltung
Elektronische Schaltung
Elektronische Schaltung

Nichts super kompliziertes hier, es ist eine ziemlich einfache Strecke. Die 2 Bilder oben erklären den Schaltungsaufbau. Sie können einen beliebigen GPIO-Pin für die Tasteneingabe verwenden, Sie müssen nur sicherstellen, dass der Code aktualisiert wird, um dies widerzuspiegeln.

Lassen Sie uns kurz erklären, wie das funktionieren soll:

  • Das ROTE Kabel führt die 3,3 V zu einem Ende des Druckknopfes.
  • Das SCHWARZE Kabel verbindet das andere Ende des Tasters mit einem Pi GPIO, der als Eingang verwendet wird.
  • Standardmäßig ist die Taste geöffnet, sodass keine Spannung durch sie fließt. Das SCHWARZE Kabel hat also 0V, wenn die Taste nicht gedrückt wird. Dies bedeutet, dass der logische Zustand des Pi GPIO-Eingangs 0 ist.
  • Wenn die Taste gedrückt wird, fließt die Spannung durch und das SCHWARZE Kabel wird mit 3,3 V verbunden. Der Raspberry Pi sieht dann an seinem Eingang eine Spannung von 3,3 V, was einem logischen Zustand von 1 entspricht.

Schritt 2: Python-Code

Python-Code
Python-Code

Jetzt, da die Schaltung einsatzbereit ist, müssen wir den Code schreiben, der sie ausführt, und ich verwende hier Python in einer PyCharm-Umgebung. Ich habe den Knopf so konfiguriert, dass er den Raspberry Pi nur dann ausschaltet, wenn er länger als 3 Sekunden gedrückt wird. Der Grund, warum ich dies tue, ist, dass es sehr leicht ist, es versehentlich zu drücken, und Sie möchten Ihren Pi nicht versehentlich herunterfahren.

Der obige Druckbildschirm stammt aus meiner PyCharm-Umgebung und der Code ist der folgende (mit einem kleinen Unterschied in Zeile 26, die mit einem anderen Projekt verknüpft ist, aber hier nicht erforderlich ist):

# Dies ist ein Code zum Ausschalten des Raspberry Pi beim Drücken und Halten einer definierten Taste# Externes Modul importsimport RPi. GPIO as GPIOimport timeimport os# Raspberry Pi Pin- und Variablendefinitionen &hold_time = 3 # Hold time in sec to poweroffbutton_poweroff = 1 # Push button zum Ausschalten von Raspberry PiGPIO.setwarnings(False)GPIO.setmode(GPIO. BCM) # Broadcom-Pin-NummerierungsschemaGPIO.setup(button_poweroff, GPIO. IN, pull_up_down=GPIO. PUD_DOWN) # Schaltfläche als Eingabe gesetzt, während True: GPIO.wait_for_edge(button_poweroff, GPIO. RISING) start = time.time() time.sleep(0.2) # Entprellung umschalten während GPIO.input(button_poweroff) == 1: time.sleep(0.01) length = time.time() - start if length > hold_time: os.system("sudo poweroff")

Wenn Sie den Taster mit einem anderen GPIO verbunden haben, aktualisieren Sie zunächst die Zeile 11 auf dem obigen Druckbildschirm mit dem entsprechenden GPIO-Eingang:

button_poweroff = GPIO_X # Aktualisieren Sie mit dem richtigen GPIO, das auf Ihrer Schaltung verwendet wird

Außerdem können Sie mit der Variablen hold_time die Wartezeit ändern, die das Herunterfahren des Pi auslöst.

Schritt 3: So starten Sie das Skript automatisch nach dem Bootvorgang

So starten Sie das Skript automatisch nach dem Bootvorgang
So starten Sie das Skript automatisch nach dem Bootvorgang
So starten Sie das Skript automatisch nach dem Bootvorgang
So starten Sie das Skript automatisch nach dem Bootvorgang

Jetzt, da wir den Code fertig haben, müssen wir ihn nur noch ausführen. Es wäre jedoch praktisch, wenn wir dieses Skript jedes Mal automatisch ausführen lassen könnten, wenn der Pi bootet, damit die Schaltfläche funktioniert, ohne dass wir das Skript jedes Mal ausführen. Es gibt viele Möglichkeiten, dies zu tun. Ich habe hier eine Zeile in die Datei rc.local eingefügt, die sich im Ordner /etc/ Ihres Pi befindet. Es wird als Teil der Boot-Sequenz ausgeführt.

Sie müssen eine Befehlszeile öffnen und die folgenden Befehle eingeben (1. Druckbildschirm oben):

CD /

cd etc sudo nano rc.local

Der erste Befehl führt Sie von Ihrem /home/pi-Verzeichnis zum Root-Verzeichnis, das / ist.

Der zweite Befehl führt Sie dann in das Verzeichnis /etc/.

Schließlich öffnet der dritte die Datei rc.local als Superuser mit vollen Bearbeitungsrechten, die Sie zum Ändern der Datei benötigen.

Sobald Sie sich in der Datei befinden, müssen Sie nur eine Zeile am Ende hinzufügen, jedoch vor der Anweisung exit 0 (2. Druckbildschirm oben):

# Fügen Sie diese Zeile zur Datei rc.local hinzu, um das Skript zu starten

sudo python /home/pi/Documents/shutdown_with_hold.py &

Hier sind einige Dinge zu beachten:

  1. der Name Ihrer Datei: In der obigen Zeile gehe ich davon aus, dass die Datei shutdown_with_hold.py ist. Aber es könnte sein, was immer Sie wollen, aktualisieren Sie einfach den Namen mit Ihrem.
  2. wo Sie Ihre Datei gespeichert haben: In der obigen Zeile gehe ich davon aus, dass sie in Ihrem /home/pi/Documents-Verzeichnis gespeichert ist. Aber auch hier kann es überall sein. Sie müssen nur sicherstellen, dass Sie hier den absoluten Pfad zu Ihrer Datei angeben.
  3. das "&"-Zeichen am Ende: Dies ist wichtig und ermöglicht die Ausführung dieses Befehls im Hintergrund

Und das ist es! Jetzt wird das Skript jedes Mal ausgeführt, wenn Ihr Pi eingeschaltet ist, und Sie müssen nur mehr als 3 Sekunden auf den Knopf drücken, um ihn auszuschalten.

Empfohlen: