NEWS
GPIO's Steuern 16chRelais12V über RasPi o. Rock64
-
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?
-
Ja leider
-
Aber...
IN
&
OUT
...funktionieren jetzt wieder!
Mit der ...direction Variante natürlich.'In' gibt cat mit 1 an
'Out' mit 0 -
Ist aber leider der falsche Weg. Mit IN wird die Spannung einfach abgeschaltet, da diese vom Sensor kommt (damit geht dein Relais natürlich aus), mit OUT wird sie zugeschaltet, was auch für ein Relais nötig ist. Das funktioniert zwar (derzeit) noch, kann sich aber jederzeit mit einem Update etc. ändern. Kannst du so in etwa vergleichen: Licht an --> ich schraub ne Glühbirne rein / Licht aus --> ich schmeiß nen Stein gegen die Birne... Funktioniert auch
Hast du bei der Konfiguration eigentlich die GPIOs im Config-Manager aktiviert? Ich weiß gerade nicht was die machen, oder überhaupt was machen, wenn sie nicht aktiv geschaltet wurden. -
Ja, unter Raspi-config
-
Hast du Raspian Desktop oder Lite?
-
Raspbian light Stretch
Das ioBroker Image vom 21.02.2019Up to Date, natürlich!
-
So wie ich es nun gelesen habe, geht es bei Lite nicht ohne den passenden Daemon...
Also neuer versuch mit pigpio...:
Adapter muss aus sein + am besten vorher ein 'reboot' damit alles clean ist (=keine gpio-Ports im /sys/class/gpio-Verzeichnis, außer die paar gpiochip)
sudo apt install pigpio
(entweder sagt er nun, ist schon neuste Version, updated ihn oder installiert ihn)
sudo systemctl start pigpiod
(startet den Daemon bis zum nächsten reboot)
pigs modes 23 w
(GPIO23 als Relais setzen)keep your fingers crossed
Relais sollte mittelspigs w 23 1 pigs w 23 0
schaltbar sein?
-
Moinsen,
das hatte ich schon getestet, dass schaltet die GPIO's aber genau wie über sysf zieht es die Relais nicht mit.
Ich habe gerade noch eine Bruchlandung versucht.
Ich habe bei einer Karte alle Optokoppler ausgelötet - easy.
Alle 16 mit einer Brücke zwischen Pin 2 und Pin 4 ersetzt und gebrückt - scheiß gefrickel so ohne Lötpumpe.
https://forum-raspberrypi.de/forum/thread/4794-anschluss-relais-schaltung-invertiert/?postID=39361#post39361Was soll ich sagen, die Chance dass das ganze an meinen Lötqualitäten gescheitert ist ist augenscheinlich größer als das ich mich beim Anschluss der Header Pins verpolt oder verdrahtet habe.
Jedenfalls regt sich da nichts.Wenigstens scheint mein Pi dabei noch nicht abgeraucht zu sein!
Das muss ich mir Heute nochmal genau ansehen.
Auch ob ich wirklich Pin 2 und 4 erwischt habe.Deswegen kann ich gerade die Karten out of the Box nicht testen, weil ich sonst die Verkabelung wieder neu anbringen muss.
-
Shit, ich glaube ich habs.
Müsste da nach meinem Verständnis nicht die Brücke zwischen Pin 2 und 3 gesetzt werden?
Statt, wie geschehen zwischen Pin 2 und 4!
Kann da mal ein zweiter einen Blick drüber werfen?
Schaltplan:
https://forum-raspberrypi.de/attachment/1401-16-kanal-relais-baugruppe-gif/
Thread:
https://forum-raspberrypi.de/forum/thread/4794-anschluss-relais-schaltung-invertiert/?postID=39361#post39361
.
.
.
.
.
(Optokoppler 4 Pins)
Auf Pin 1 liegen 5V an.
Auf Pin 2 sollte gpio die Kathode auf Masse führen. Der Pi legt aber 3,3V an.
Auf Pin 4 liegt ebenfalls 5V
____ Pin 3 schaltet quasi das Relais mit ursprünglich 5V
Der Pi sollte dies nun auf Pin3 mit 3,3V übernehemen, gedrosselt mit je 10KΏ Widerstand.Ich hab jetzt nicht echt 16 Brücken falsch gesetzt.
-
@DiveDancer sagte in GPIO's Steuern 16chRelais12V über RasPi o. Rock64:
Ich hab jetzt nicht echt 16 Brücken falsch gesetzt.
Leider doch und du sieht es völlig richtig. Pin 3+4 brücken schaltet die Relais dauerhaft aus, egal was du nun am Eingang sendest, denn durch entfernen des Optokopplers hast du keinerlei Verbindung mehr zum Rest der Schaltung.
Deine Reals-Karte ist übrigens "Low-active", sprich eine "1", "High", "EIN/ON" schaltet die Relais aus und umgekehrt.
Du musst also 2+3 Brücken. Ich würde das ganze aber erst mal nur für ein Relais/GPIO probieren. Lt. Datenblatt sollte der ULN2803 auch mit 3.3V zurechtkommen, aber bevor du jetzt wieder 16x umsonst lötest...
Dann kannst du auch versuchen das eine Relais mit dem PI zu schalten.