NEWS
GPIO's Steuern 16chRelais12V über RasPi o. Rock64
-
'Value' scheint so nicht hinterlegt zu sein.
pi@Tijger:/sys/class/gpio $ echo "in" > gpio2/direction pi@Tijger:/sys/class/gpio $ echo "1" > gpio2/value -bash: echo: Schreibfehler: Die Operation ist nicht erlaubt. pi@Tijger:/sys/class/gpio $ echo "0" > gpio2/value -bash: echo: Schreibfehler: Die Operation ist nicht erlaubt. pi@Tijger:/sys/class/gpio $
-
Sieht mehr nach fehlenden Rechten (Schreibfehler) aus. Versuche es mal als root.
-
Stimmt, die Fehlermeldung ist weg
Aber das Relais bleibt tot
pi@Tijger:/sys/class/gpio $ echo "0" > gpio2/value pi@Tijger:/sys/class/gpio $ echo "1" > gpio2/value pi@Tijger:/sys/class/gpio $ sudo echo "0" > gpio2/value pi@Tijger:/sys/class/gpio $ sudo echo "1" > gpio2/value pi@Tijger:/sys/class/gpio $
-
Keine Funktion -
Zumindest weiß ich warum der RPI-Adapter so nicht "richtig" funktioniert, der läuft nur wenn auch der ioB unter root läuft.
Ich nehme mal an, dass sich der Adapter und die Versuche unter der Shell beißen. Deaktiviere mal den Adapter, dann alles als root/sudo (löscht die GPIO2-Einstellungen + legt sie neu und clean wieder an):echo "2" > /sys/class/gpio/unexport echo "2" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio2/direction echo "1" > /sys/class/gpio/gpio2/value echo "0" > /sys/class/gpio/gpio2/value
Schaltet das Relais jetzt?
-
Nein Es schaltet nicht.
Das Problem ist:
All die Befehle unter diesem Pfad funktionieren nur, wenn der Adapter läuft!So sieht das aus wenn der Adapter deaktiviert ist!:
root@Tijger:/sys/class/gpio# echo "2" > /sys/class/gpio/unexport bash: echo: Schreibfehler: Das Argument ist ungültig. root@Tijger:/sys/class/gpio#
Bei aktiviertem Adpter scheint es zu funktionieren...:
root@Tijger:/sys/class/gpio# echo "2" > /sys/class/gpio/unexport root@Tijger:/sys/class/gpio# echo "2" > /sys/class/gpio/export root@Tijger:/sys/class/gpio# echo "out" > /sys/class/gpio/gpio2/direction root@Tijger:/sys/class/gpio# echo "1" > /sys/class/gpio/gpio2/value root@Tijger:/sys/class/gpio# echo "0" > /sys/class/gpio/gpio2/value root@Tijger:/sys/class/gpio#
...aber das Relais schaltet nicht.
-
Bei deaktiviertem rpi2.0 Adapter nach einem reboot:
root@Tijger:/sys/class/gpio# dir export gpiochip0 gpiochip100 gpiochip504 unexport root@Tijger:/sys/class/gpio# ls -al /sys/class/gpio insgesamt 0 drwxrwx--- 2 root gpio 0 Jun 16 10:55 . drwxr-xr-x 54 root root 0 Nov 3 2016 .. -rwxrwx--- 1 root gpio 4096 Jun 16 10:55 export lrwxrwxrwx 1 root gpio 0 Jun 16 10:55 gpiochip0 -> ../../devices/platform/so c/3f200000.gpio/gpio/gpiochip0 lrwxrwxrwx 1 root gpio 0 Jun 16 10:55 gpiochip100 -> ../../devices/gpiochip2 /gpio/gpiochip100 lrwxrwxrwx 1 root gpio 0 Jun 16 10:55 gpiochip504 -> ../../devices/platform/ soc/soc:firmware/soc:firmware:expgpio/gpio/gpiochip504 -rwxrwx--- 1 root gpio 4096 Jun 16 10:57 unexport root@Tijger:/sys/class/gpio#
Wenige Sekunden nach aktivierung des Adapters:
root@Tijger:/sys/class/gpio# dir export gpio11 gpio15 gpio18 gpio22 gpio24 gpio27 gpio4 gpio9 gpiochip100 unexport gpio10 gpio14 gpio17 gpio2 gpio23 gpio25 gpio3 gpio8 gpiochip0 gpiochip504 root@Tijger:/sys/class/gpio# ls -al /sys/class/gpio insgesamt 0 drwxrwx--- 2 root gpio 0 Jun 16 11:07 . drwxr-xr-x 54 root root 0 Jun 16 11:04 .. -rwxrwx--- 1 root gpio 4096 Jun 16 11:07 export lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio10 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio10 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio11 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio11 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio14 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio14 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio15 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio15 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio17 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio17 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio18 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio18 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio2 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio2 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio22 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio22 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio23 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio23 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio24 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio24 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio25 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio25 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio27 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio27 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio3 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio3 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio4 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio4 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio8 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio8 lrwxrwxrwx 1 root gpio 0 Jun 16 11:07 gpio9 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio9 lrwxrwxrwx 1 root gpio 0 Jun 16 10:55 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0 lrwxrwxrwx 1 root gpio 0 Jun 16 10:55 gpiochip100 -> ../../devices/gpiochip2/gpio/gpiochip100 lrwxrwxrwx 1 root gpio 0 Jun 16 10:55 gpiochip504 -> ../../devices/platform/soc/soc:firmware/soc:firmware:expgpio/gpio/gpiochip504 -rwxrwx--- 1 root gpio 4096 Jun 16 10:57 unexport root@Tijger:/sys/class/gpio#
-
Manche Threads sind einfach zum kotzen.
Da findet man mal was mit genau seiner Problemstellung,
und wenn es spannend wird endet er und wird mal einfach so ein halben Jahrzent nicht fort geführt. -
pigpio soll Stand der Technik sein:
https://www.elektronik-kompendium.de/sites/raspberry-pi/2006041.htmVielleicht lohnt da ein Ansatz
Läuft aber anscheinend auch nicht out of the Box.
Beißt sich aber vielleicht auch mit dem rpi Adapter. -
Sieht genau aus wie es soll, nur hast du dann einen kleinen Fehler begangen
Wenn du den Adapter anhältst und rebootest, dann darf im GPIO-Verzeichnis kein gpioxx mehr vorhanden sein, außer den gpiochipxyzWieder alles als root (ohne den Adapter gestartet zu haben!):
echo "2" > /sys/class/gpio/export
(die "2" steht hier für GPIO2)
Jetzt sollte im Verzeichnis der gpio2 (und nur der, also keine weiteren gpioxx) aufgetaucht sein.
Wir definieren diesen GPIO als Ausgang:echo "out" > /sys/class/gpio/gpio2/direction
Nun sollte sich mittels
echo "1" > /sys/class/gpio/gpio2/value echo "0" > /sys/class/gpio/gpio2/value
das Relais an GPIO2 ein- und ausschalten lassen?
-
Ich werd jetzt nicht zugeben das ich nur noch Bahnhof verstehe,...
...aber Umsetzung folgt!
...
...
...
Bitte warten, ......Ich verarbeite!!!
-
Pfad Zustand nach Deaktivierung des Adapters:
root@Tijger:/sys/class/gpio# ls -al /sys/class/gpio insgesamt 0 drwxrwx--- 2 root gpio 0 Jun 16 14:08 . drwxr-xr-x 54 root root 0 Jun 16 11:04 .. -rwxrwx--- 1 root gpio 4096 Jun 16 11:07 export lrwxrwxrwx 1 root gpio 0 Jun 16 10:55 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0 lrwxrwxrwx 1 root gpio 0 Jun 16 10:55 gpiochip100 -> ../../devices/gpiochip2/gpio/gpiochip100 lrwxrwxrwx 1 root gpio 0 Jun 16 10:55 gpiochip504 -> ../../devices/platform/soc/soc:firmware/soc:firmware:expgpio/gpio/gpiochip504 -rwxrwx--- 1 root gpio 4096 Jun 16 14:08 unexport root@Tijger:/sys/class/gpio#
...nach reboot:
root@Tijger:/home/pi# ls -al /sys/class/gpio insgesamt 0 drwxrwx--- 2 root gpio 0 Jun 16 14:13 . drwxr-xr-x 54 root root 0 Nov 3 2016 .. -rwxrwx--- 1 root gpio 4096 Jun 16 14:13 export lrwxrwxrwx 1 root gpio 0 Jun 16 14:13 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0 lrwxrwxrwx 1 root gpio 0 Jun 16 14:13 gpiochip100 -> ../../devices/gpiochip2/gpio/gpiochip100 lrwxrwxrwx 1 root gpio 0 Jun 16 14:13 gpiochip504 -> ../../devices/platform/soc/soc:firmware/soc:firmware:expgpio/gpio/gpiochip504 -rwxrwx--- 1 root gpio 4096 Jun 16 14:13 unexport root@Tijger:/home/pi#
gpiochip0 ist hoffentlich nicht als störend gemeint.
Nach dem Reboot werden alle Befehle, bis auf den 'unexport' angenommen:
root@Tijger:/home/pi# echo "2" > /sys/class/gpio/unexport bash: echo: Schreibfehler: Das Argument ist ungültig. root@Tijger:/home/pi# echo "2" > /sys/class/gpio/export root@Tijger:/home/pi# echo "out" > /sys/class/gpio/gpio2/direction root@Tijger:/home/pi# echo "1" > /sys/class/gpio/gpio2/value root@Tijger:/home/pi# echo "0" > /sys/class/gpio/gpio2/value root@Tijger:/home/pi# echo "1" > /sys/class/gpio/gpio2/value root@Tijger:/home/pi# echo "0" > /sys/class/gpio/gpio2/value root@Tijger:/home/pi#
Jetzt ist gpio2 hinzu gekommen.
root@Tijger:/home/pi# ls -al /sys/class/gpio insgesamt 0 drwxrwx--- 2 root gpio 0 Jun 16 14:19 . drwxr-xr-x 54 root root 0 Jun 16 14:16 .. -rwxrwx--- 1 root gpio 4096 Jun 16 14:19 export lrwxrwxrwx 1 root gpio 0 Jun 16 14:19 gpio2 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio2 lrwxrwxrwx 1 root gpio 0 Jun 16 14:13 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0 lrwxrwxrwx 1 root gpio 0 Jun 16 14:13 gpiochip100 -> ../../devices/gpiochip2/gpio/gpiochip100 lrwxrwxrwx 1 root gpio 0 Jun 16 14:13 gpiochip504 -> ../../devices/platform/soc/soc:firmware/soc:firmware:expgpio/gpio/gpiochip504 -rwxrwx--- 1 root gpio 4096 Jun 16 14:19 unexport root@Tijger:/home/pi#
Nein, nein und nochmals N...
Das Relais schaltet nicht.
Und der Adapter ist aus.
...oder muss man den Deinstallieren?Vielleicht mal mit einem anderen Port probieren der vielleicht nicht noch vom I2C Bus genutzt werden kann?
Hab ja schließlich noch 15 weitere angeklemmt ohne was umverdrahten zu müssen.Ich meine so hätte ich es beim letzten mal auch gemacht!?
Oder habe ich meinen kleinen Fehler wiederholt? -
Wie kann ich denn nun den Zustand der Ports einsehen?
readall funktioniert hier gerade nicht mehr:
root@Tijger:/sys/class/gpio# readall bash: readall: Kommando nicht gefunden. root@Tijger:/sys/class/gpio# exit exit pi@Tijger:/sys/class/gpio $ sudo readall sudo: readall: Befehl nicht gefunden pi@Tijger:/sys/class/gpio $
-
Wobei ich vielleicht auch noch erwähnen sollte, das 3 Relais in diesem Zustand angezogen sind.
JD1 liegt hier auf GPIO 2
-
Also folgendes...
Mit weiterem Port getestet.
In der ersten Runde kann unexport nicht gesetzt werden.
& am Relais passiert nix.root@Tijger:/home/pi# echo "23" > /sys/class/gpio/unexport bash: echo: Schreibfehler: Das Argument ist ungültig.
Der export Befehl wird geschluckt
& am Relais passiert nix.root@Tijger:/home/pi# echo "23" > /sys/class/gpio/export
Der 'echo "out" > /sys/class/gpio/gpio23/direction' wird angenommen.
& das Relais zieht AN.root@Tijger:/home/pi# echo "out" > /sys/class/gpio/gpio23/direction
0 & 1 bewirkt keine Veränderung
& Das Relais bleibt unverändert ANgezogenroot@Tijger:/home/pi# echo "0" > /sys/class/gpio/gpio23/value root@Tijger:/home/pi# echo "1" > /sys/class/gpio/gpio23/value
Im zweiten Durchlauf wird der unexport Befehl angenommen.
& Der Anker des Relais wird los gelassen.root@Tijger:/home/pi# echo "23" > /sys/class/gpio/export
Der'echo "out" > /sys/class/gpio/gpio23/direction' Befehl wird angenommen.
& Das Relais zieht den Anker wieder AN
echo "out" > /sys/class/gpio/gpio23/direction
0 & 1 bewirkt keine Veränderung
& Das Relais bleibt unverändert ANgezogenSo reagieren auch die anderen Ports.
-
@DiveDancer sagte in GPIO's Steuern 16chRelais12V über RasPi o. Rock64:
Wobei ich vielleicht auch noch erwähnen sollte, das 3 Relais in diesem Zustand angezogen sind.
JD1 liegt hier auf GPIO 2Das dünkt mich jetzt mehr als nachdenklich. Ohne den Adapter (deaktivieren genügt, deswegen sind alle GPIO-Unterverzeichnisse weg) sollten alle GPIOs "Low" sein. Je nach Relaiskarte wären dann alle Relais an oder aus. Die Betonung liegt hier auf alle... Deswegen sollten wir zum testen wirklich mal ein anderes nehmen...
Zudem habe ich gerade noch gesehen, dass bei den PIs je nach Revision die GPIOs 0-3 unterschiedlich belegt sind.
"4" hast du lt. Quellcode ebenfalls belegt. Das müsste der 4. Pin (gezählt) vom Header sein (bzw. PIN #7 beschriftet)...und wieder root:
echo "4" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio4/direction echo "1" > /sys/class/gpio/gpio4/value echo "0" > /sys/class/gpio/gpio4/value
Im Verzeichnis sollte nach dem Vefehl mit export (unexport brauchst du nicht, der Adapter läuft nicht und hat keine Verzeichnisse angelegt) dann der gpio4 auftauchen.
Den Schaltzustand bekommst du bspw. mitcat /sys/class/gpio/gpio4/value
, d.h. allerdings nicht, dass das Relais auch tatsächlich geschaltet hat. Das ist quasi nur die Aufforderung dazu.Schaltet jetzt was korrekt?
-
Test ist bereits durchgeführt.
Ich hab dann mal noch gpio22 auf Pin 15 & gpio23 auf 16 getestet.
https://forum.iobroker.net/post/271939
Das relay ist angezogen wegen dem Befehl:
echo "out" > /sys/class/gpio/gpio23/direction
Siehe Beitrag des Links -
Ok, hat sich gerade überschnitten...
export = legt den GPIO-Pin an
unexport = löscht den GPIO-Pin (deswegen auch der Fehler, kannst nix löschen was du nicht vorher angelegt hast)unexport benötigst du aber nicht. Dass war nur wg. dem Adapter nötig.
Auch das "out" benötigst du nur einmalig, zumindest bis zum reboot bleibt das erhalten.
Jetzt bleibt nur zu klären warum er auf das 0/1 bei "value" nicht reagiert.
Mach nach dem echo "1"... mal direkt danach eincat /sys/class/gpio/gpio23/value
, um mal bei GPIO23 zu bleiben. Steht da 0 oder 1 drin? -
Da steht ne ' 1 ' drin
Das passt, der Anker ist angezogen!
-
Ok, und mit echo "0" steht jetzt ne 0 drin aber das Relais bleibt angezogen?