Skip to content

Hardware Taster als Ein Aus Schalter

Josef Spitzlberger edited this page Sep 28, 2020 · 16 revisions

Um die SD Karte eines Raspberry Pi zu schützen, sollte der Raspberry nicht einfach durch Ausstecken gestoppt werden. Daher bauen wir einen Ein-/Aus-Schalter ein.

Das github CaravanPi-Paket enthält hierzu die Dateien pishutdown.py und pishutdown.service im Verzeichnis pishutdown (Quelle heise.de). Da wir den I2C-Bus nutzen wollen, müssen wir einen Trick anwenden, um den Taster anzuschließen. Wir nutzen dazu eine Diode wie unten beschrieben. (Quelle: https://raspberrypi.stackexchange.com/)

Um einen Taster als Ein/Aus-Schalter einzurichten, führen wir folgende Schritte und Befehle aus

  • Anschließen eines Tasters an GPIO Pin #11 (BCM 17) und an Ground (GND)

  • Einfügen einer Diode zwischen Pin #11 (BCM 17) und Pin #5 (BCM3). Flussrichtung #5 nach #11

    Breadboard - Ein-Aus-Schalter

  • Einfügen eines Pull-Up Widerstands von 100kOhm von BCM17 zu +3.3V

  • Installieren von pishutdown.py als Dienst mit den folgenden Befehlen

    sudo cp /home/pi/CaravanPi/pishutdown/pishutdown.py /usr/local/bin
    sudo cp /home/pi/CaravanPi/pishutdown/pishutdown.service /etc/systemd/system
    sudo systemctl enable pishutdown
    sudo systemctl start pishutdown
    

Funktionstest

Nach einem Reboot sollten Sie über den neu eingefügten Taster den Raspberry Pi rebooten, beenden und neu starten können.

reboot

Drücken Sie kurz (< drei Sekunden) auf den Taster. Der Raspberry sollte einen Reboot ausführen

Herunterfahren

Drücken Sie lange (> drei Sekunden) auf den Taster. Der Raspberry sollte einen shutdown durchführen

neu starten

Ohne die Stromzufuhr zu unterbrechen, drücken Sie nach einem Shutdown über den Taster wieder kurz auf den Taster. Der Raspberry sollte dadurch starten.

Quellen

Skripte zum Starten/Stoppen: https://www.heise.de/select/ct/2017/25/1512425684709349#titel_1512425684709349_3 Nutzung GPIO3 trotz I2C Nutzung: https://raspberrypi.stackexchange.com/a/85316 (Empfehlung Diode)

Weitere ggf. Links: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=24682 https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=140994

Hilfreich ist auch diese Belegungsübersicht der GPIO-Pins: http://raspberrypi.ws/pin3

Zitat zur Verwendung der Diode

Unfortunately, wake from halt works only on GPIO3/SCL [1]. Some of the described alternatives involve complicated circuits [2].

I found a simple way: Connect the switch to GPIO4, connect a diode from GPIO3 to GPIO4, so that current can flow from GPIO3 to GPIO4.

Pressing the switch will now pull GPIO3/SCL and GPIO4 low, but GPIO3/SCL activity will not influence the state of GPIO4. This is electrically safe with I2C, but a transaction may be interrupted while you press the switch. This could be solved with an NFET and another GPIO pin that drives the gate and isolates I2C from the switch when the Raspi is on.

On the software side, simply put this line in /boot/config.txt: dtoverlay=gpio-shutdown,gpio_pin=4

That's it for current Raspbian! For older Raspbian or some other distributions (e.g. Volumio), put this line in the new file /etc/udev/rules.d/30-shutdown.rules: ACTION!="REMOVE", SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="platform", DRIVERS=="gpio-keys", ATTRS{keys}=="116", TAG+="power-switch"

CaravanPi Wiki

1 Installationsanleitung

2 Bauanleitung

Grundaufbau

Sensoren, etc. installieren

Anzeigen installieren

Raspberry stabilisieren

Platine entwerfen

3 ursprüngliche Entwicklung

4 Dokumentation

5 Updates

ab hier altes WIKI, muss noch umgezogen werden

XX = in Bearbeitung NEU = neue Funktion in letzter Version

Einbau im Caravan

Inbetriebnehmen und Kalibrieren

CaravanPi Updates

Erweiterungen

Grafische Auswertungen

Statuswebsite

weitere Sensoren

Clone this wiki locally