Themabewertung:
  • 2 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Wohnmobil Raspicar
#41
(09.07.2018, 23:28)Bergstern schrieb: An ein script mit einer while schleife die einen gpio überwacht und bei low/high den shutdown ausführt meinst du?
Eine Anleitung wäre super!!! Danke. Dass script muss dann ja in den autostart und da müsste ich mich erst noch reinlesen.

Nein, keine while-Schleife. Das Skript wartet nur auf einen Interrupt (wait_for_edge). Das beschäftigt den Pi nicht so sehr. Es wird der interne Pull-up des Pins verwendet, ein externer Pull-up ist also nicht notwendig. Und für den Start des Skripts beim Boot ist auch schon gesorgt.

Bevor du loslegst, sei es empfohlen vorher ein Backup zu machen. Es sollte zwar nichts passieren aber sicher ist sicher!

Und so geht das:

Datei erstellen:
Code:
sudo nano listen-for-shutdown.py

mit folgendem Inhalt (unter der Annahme dass GPIO26 verwendet wird – falls ein anderer GPIO verwendet wird, dann ändern!):
Code:
#!/usr/bin/env python


import RPi.GPIO as GPIO
import subprocess


GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.wait_for_edge(26, GPIO.FALLING)

subprocess.call(['shutdown', '-h', 'now'], shell=False)

Nach /usr/local/bin bewegen und ausführbar machen:
Code:
sudo mv listen-for-shutdown.py /usr/local/bin/
sudo chmod +x /usr/local/bin/listen-for-shutdown.py


Weitere Datei erstellen:
Code:
sudo nano listen-for-shutdown.sh

Diesen Inhalt infügen:
Code:
#! /bin/sh

### BEGIN INIT INFO
# Provides:          listen-for-shutdown.py
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

# If you want a command to always run, put it here

# Carry out specific functions when asked to by the system
case "$1" in
 start)
   echo "Starting listen-for-shutdown.py"
   /usr/local/bin/listen-for-shutdown.py &
   ;;
 stop)
   echo "Stopping listen-for-shutdown.py"
   pkill -f /usr/local/bin/listen-for-shutdown.py
   ;;
 *)
   echo "Usage: /etc/init.d/listen-for-shutdown.sh {start|stop}"
   exit 1
   ;;
esac

exit 0

Nach /etc/init.d bewegen und ausführbar machen:
Code:
sudo mv listen-for-shutdown.sh /etc/init.d/
sudo chmod +x /etc/init.d/listen-for-shutdown.sh

Um das Skript beim Start auszuführen:
Code:
sudo update-rc.d listen-for-shutdown.sh defaults

Du kannst jetzt das Skript starten mit:
Code:
sudo /etc/init.d/listen-for-shutdown.sh start

Das sollte es gewesen sein.
Zitieren
#42
Mal wieder ein dickes Danke an dich Jack. Das Script funktioniert soweit! Jetzt habe ich nur das Problem das wenn ich mein M3ATX dranhänge der Raspi nach dem Booten sofort wieder runterfährt...
Zitieren
#43
Da liegt das problem beim m3atx.
Also das m3atx hat ja dieses On/off kabel.
Rot/schwarz 2 adern.
Das funktioniert genau wie ein taster.
Also es schliest den stromkreis für ca 1 sekunde.

Dein problem ist nun folgendes.
Du machst am auto die zündung an.
Das m3atx wartet ca 3 sekunden und gibt dann die 5 volt zum raspi.
Dann gibt das m3atx den EINSCHALTIMPULS also schliest den stromkreis rot/schwarzes kabel.
Und genau das löst jetzt dein shutdown skript aus.

Das m3atx ist ja eigentlich für ATX mainboards gedacht deswegen macht dieses on/off kabel schon sinn.
Ich verwende das m3atx auch am raspi ABER ich verwende gpio3 zum shutdown.
Da brauchst du kein skript sondern ein dtoverlay in der config.txt.

Dtoverlay=gpio-shutdown
Dtoverlay=gpio+poweroff

Funktioniert bei mir super.
Allerdings mit crankshaft.

@jack
Dein shutdown wartet auf einen interupt(wait for edge).
Das klappt nicht mit dem m3atx das dieses netzteil einen start/shutdown IMPULS gibt.
Sprich das netzteil gibt 5 volt an den raspi.
Raspi beginnt zu booten.
1 sekunde später gibt das netzteil den start impuls.
Also gpio wird auf low und gleich wieder auf high gesetzt.
Da hast du den interupt und das shutdown skript legt los.
Also für verwendung vom m3atx wäre es besser wenn das shutdown skript nur ausgeführt wird wenn gpio active LOW ist.
Zitieren
#44
Ich versuche das script mal so umzumodeln von jack das es mit dem atx funktioniert. Gpio3 mit dem dtoverlay=gpio-shutdown fällt flach weil ich gpio3 jetzt schon an das radiomodul angebunden habe.
Zitieren
#45
@maju
Das mit dem dtoverlay hat Bergstern ja ohne Erfolg versucht (lässt sich hier weiter vorne nachlesen), deshalb ja mein Alternativvorschlag. Dass das ATX-Teil jetzt dazwischenhaut ist halt eine dieser Wechselwirkungen, die auftauchen (können) wenn man Teile verwendet, die vorher noch niemand mit diesem Projekt getestet hat. Im Grunde genommen kann man hier eigentlich gar keine Tipps mehr geben weil man unmöglich alles berücksichtigen kann, was sich möglicherweise gegenseitig beeinflusst …
Zitieren
#46
Ja war wahrscheinlich nicht gerade die beste Idee das ATX zu nehmen. Aber egal jz hab ichs hier und irgendwie bring ich es schon zum laufen.
Wahrscheinlich reicht es schon einer timer ins script einzufügen welcher due1sec vom atx “überspringt“
Zitieren
#47
Probier doch mal folgendes.

Genau nach dieser Zeile im Skript

case \"$1\" in
 start)

Setzt du...

Sleep 20

Damit sollte das Skript kurz pausieren bevor es dein Python Programm startet. In dieser Zeit sollte auch der Impuls vorbei sein und er wird ignoriert.

Gesendet von meinem D6603 mit Tapatalk
Zitieren
#48
Hab ich probiert aber der impuls vom atx killt mir den raspi dann einfach nach den 20 sec. Ich hab mal zwischen der roten und schwarzen Leitung vom Atx den Widerstand gemessen. Sobald der ATX mit 12V versorgt wird schaltet der mir Gpio 26 auf Masse, egal ob Zündplus vorhanden ist oder nicht.
Ich habe jetzt ein mal einen Widerstand zwischen der roten Leitung und GPIO26 gesetzt, bei einem 1M Widerstand bleibt der Raspi am laufen aber das Shutdownsignal wird auch nicht erkannt. Bei 50K schaltet er wieder nach 20sek aus. Ich probier morgen mal weiter (hab heute keinen bock mehr ehrlich gesagt ;-)
Zitieren
#49
Ich stehe gerade auf dem Schlauch, aber: wozu braucht man im Auto/Wohnmobil ein ATX-Netzteil, wenn man 12V Batteriestrom statt 230V Haushaltsstrom hat? Wo ist der Vorteil?
Zitieren
#50
Er benutzt kein normales ATX Netzteil sondern das Car-TFT.
Das ist ein spezielles Netzteil im ATX damit man einen PC im Auto betreiben kann.
Dieses Netzteil wertet die Zündung aus und sendet ein Signal um den PC zu starten, herunterzufahren, vom Strom zu trennen, Audioverstärker ect....
Funktioniert mit einem PC Mainboard echt super..... Beim Pi gibt es anscheinend ein paar Probleme.

Gesendet von meinem D6603 mit Tapatalk

@ Bergstern
Der Gpio wird sofort nach dem du das Netzteil mit Spannung versorgst gegen Masse gezogen. Was passiert wenn du das Zündngssignal vom Netzteil weg nimmst geht das Signal zum Pi kurz auf High?

Sind deine Jumper auf dem ATX richtig gesteckt?

Gesendet von meinem D6603 mit Tapatalk
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
RasPiCarProjekt