NEWS
RPI2.0 einige GPIOs sind mit Raspberry 3 nicht schaltbar !
-
Hallo,
schön zu hören, dass ich aktuell nicht der Einzige mit diesem GPIO-Problem in Verbindung mit RPI2.0 bin.
Der Fehler besteht bei mir auch nach Update auf die neueste RPI2.0 Version 0.3.2. weiterhin !
Eventuell kann sich ein Spezi unseres Problems annehmen ?
Zu Deiner 2. Frage:
Hast Du Pullup- oder Pulldown-Widerstände an den Eingängen ?
Mit diesen solltest Du immer dividierte Zustände haben.
LG
emblitz
-
Hallo emblitz,
nein ich habe keine Pullup- oder Pulldown-Widerstände an den Eingängen dran.
Ich habe so eine handelsübliche 16Fach Relaiskarte von Ebay.
Jedoch war mir vorher nicht bewusst das diese bei low-Pegel und nicht bei High-Pegel schaltet.
Ich hatte schon einen versuch mit einem Transistor (npn mit Pullup-Wiederstand) vorgenommen
und ja, es hat auch wie erwartet funktioniert und es war invertiert.
Jedoch möchte ich zwischen der Relaiskarte und dem Raspi
nicht noch eine Platine mit 16 Transistoren und zich Widerständen haben
Ich habe gehofft das man das Problem vielleicht Software-technisch lösen kann
LG Marcato
-
Hallo,
bitte beachten: mit den Widerständen werden nur die Eingänge beschaltet um einen definierten Pegel zu bekommen.
Das beschalten mit Widerständen ist nicht für die Ausgänge vorgesehen.
LG
emblitz
-
Hallo Community,
Aber meine Frage ist ob es die Möglichkeit gibt das wenn der rpi2.0 Adapter Startet,
das ich definieren kann ob die gpios true oder false beim Start sind?
bei mir sind sie immer false, jedoch benutze ich eine Relaiskarte die bei Ground(also false am gpio) schaltet.
Und demnach ziehen die Relais alle beim Starten erstmal an.
Bis ich dann gpios auf true setze.
Vielen Dank schon mal `
Über einen kleinen Umweg geht das schon. Du musst ein Script (oder Blockly) auf den Start des RPi2-Adapters triggern und darin dann entsprechend die gewünschten States setzen. Wenn dir das so nicht weiterhilft melde dich nochmal, dann kann ich dir mal ein Beispielscript basteln wenn ich wieder an meinem System bin…
-
Hallo Community,
Aber meine Frage ist ob es die Möglichkeit gibt das wenn der rpi2.0 Adapter Startet,
das ich definieren kann ob die gpios true oder false beim Start sind?
bei mir sind sie immer false, jedoch benutze ich eine Relaiskarte die bei Ground(also false am gpio) schaltet.
Und demnach ziehen die Relais alle beim Starten erstmal an.
Bis ich dann gpios auf true setze.
Vielen Dank schon mal `
Über einen kleinen Umweg geht das schon. Du musst ein Script (oder Blockly) auf den Start des RPi2-Adapters triggern und darin dann entsprechend die gewünschten States setzen. Wenn dir das so nicht weiterhilft melde dich nochmal, dann kann ich dir mal ein Beispielscript basteln wenn ich wieder an meinem System bin… `
Hallo Thisoft,
Ich habe die Tage genau das mal versucht. Bin ein blutiger Anfänger was das Programmieren angeht.
Wenn ich die States setzen möchte mit dem Start der Instanz als Trigger,
sind diese in diesem Moment noch gar nicht Definiert.
somit habe ich über einen Counter die die States verzögert geschaltet.
Als ich die Zeit des Counters so einstellen wollte, das die States sofort wenn sie definiert sind auf True stehen,
musste ich feststellen das ich das nicht hin bekomme. Als wenn das Skript oder die Instanz bei jedem start unterschiedlich lange brauch zum Starten. Entweder kam der Fehler das die States nicht definiert sind oder die States sind trotzdem kurz auf False gestartet und dann kurz danach erst True geworden.
Kann aber auch an meiner programmierfähigkeiten liegen.
code aus Blockly:
var timeout;
on({id: 'system.adapter.rpi2.0.alive', change: "ne"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
timeout = setTimeout(function () {
setState("rpi2.0.gpio.3.state"/GPIO 3/, true);
setState("rpi2.0.gpio.7.state"/GPIO 7/, true);
setState("rpi2.0.gpio.10.state"/GPIO 10/, true);
setState("rpi2.0.gpio.12.state"/GPIO 12/, true);
setState("rpi2.0.gpio.15.state"/GPIO 15/, true);
setState("rpi2.0.gpio.18.state"/GPIO 18/, true);
setState("rpi2.0.gpio.21.state"/GPIO 21/, true);
setState("rpi2.0.gpio.23.state"/GPIO 23/, true);
}, 4000);
});
-
Naja, dass die States kurz auf False starten und dann erst durch das Script auf True gesetzt werden wirst du kaum vermeiden können - zumindest nicht über direkt in ioBroker. Wenn das auch stört kannst du das höchstens direkt im RasPi lösen indem du ein Python-Script beim Starten ausführst was die Ausgänge setzt. Bin ich aber auch nicht sicher, wahrscheinlich gibt es auch da einen Moment lang False…
Ganz umgehen kannst du das vermutlich wirklich nur mit anderer Hardware ...
-
Hallo,
das selbe Problem wie "Marcato88" mit den GPIO-Ausgängen habe ich auch.
Direkt nach dem Start des Raspberrys und bevor die IoBroker-Scripte laufen, schalten die GPIO-Ausgänge auf "false". Dies hat zur Folge, dass die Relais der Ausgangskarte nach dem Start anziehen und erst wieder nach einigen Sekunden abfallen wenn das IO-Brokerscript läuft.
Bei einer Alarmanlage mit Sirene und Blitzleuchte bedeutet das leider einen Fehlalarm !
Ich wäre ebenfalls sehr an einer Lösung interessiert die <u>GPIO-Ausgänge direkt beim Start des Raspberrys auf "true"</u> zu setzten. damit die Relais nicht anziehen.
Gibt es hierfür schon eine Lösung ?
LG emblitz
-
Wenn's wirklich sicher sein soll, dann IMO nur mittels Hardware- und/oder Logikänderung so dass GPIO=false der "Normalzustand" ist.
Aber vielleicht gibt's ja noch eine Möglichkeit von den Raspi-Experten…
-
Solltet ihr vielleicht mal lesen :
https://www.raspberrypi.org/forums/view … 44&t=24491
Laut deren Aussagen sind beim Booten alle GPIO LOW ausser GPIO0/2, GPIO1/3, GPIO4, GPIO7 / GPIO8. Diese 5 sind HIGH beim booten....
Also die passenden Ausgänge für die wichtigen Funktionen anhand der Angaben auswählen....
und ggf. die Logic von den Programmen anpassen
Grüße
Tom
-
Danke!
Wird sofort ausprobiert.
Ich melde mich zurück…
-
Hallo,
für den Test habe ich <u>alle</u> Scripts in IoBroker gestoppt sowie IoBroker über Putty ebenfalls gestoppt und Iobroker ohne Scripts anschließend wieder gestartet.
Leider sind die o.g. GPIOs bei meinem Raspberry mit "RASPBIAN STRETCH LITE" false, d.h. die Relais der Ausgangskarte ziehen an !
Kann das jemand bestätigen ?
LG emblitz
-
Ich kann das jetzt nicht testen aber hier steht:
> Laut deren Aussagen sind beim Booten alle GPIO LOW ausser GPIO0/2, GPIO1/3, GPIO4, GPIO7 / GPIO8\. Diese 5 sind HIGH beim booten….
Booten meint PI restart.
-
Ah,
danke für die Info.
Ich habe nur einen Restart des IoBrokers gemacht.
Ich probiere es nochmals mit Reboot.
-
So, ich habe den Raspi ohne Scripte neu gestartet und über Putty mit "gpio readall" folgendes Ergebnis erhalten.
filename="Bild_2018_03_14 001.jpg" index="0">~~
TomT schreibt (Vielen Dank TomT):
__Solltet ihr vielleicht mal lesen :
https://www.raspberrypi.org/forums/view … 44&t=24491
Laut deren Aussagen sind beim Booten alle GPIO LOW ausser GPIO0/2, GPIO1/3, GPIO4, GPIO7 / GPIO8. Diese 5 sind HIGH beim booten....
Also die passenden Ausgänge für die wichtigen Funktionen anhand der Angaben auswählen....
und ggf. die Logic von den Programmen anpassen
Grüße
Tom__
Hierzu habe ich eine Verständnisfrage:
In der "gpio readall-Liste" sind andere Pins mit GPIO bezeichnet als tatsächlich mit IoBroker geschaltet werden !
IoBroker steuert die GPIOs mit den Nummern in der Spalte "BCM" (siehe gelbe Pfeile).
Ich habe mal alle GPIOs in der Spalte "Name" markiert, welche in der Spalte V eine "1" haben.
Dies sind mehr als im o.g. Link von TomT zitiert genannt (9 Stück statt der o.g. 5 Stück).
Welche GPIOs sind gemeint ? Die in der Spalte "Name oder "BCM" ?
LG emblitz
-
Hilft dir die Erklärung am Ende dieser Seite:
-
Ich habe den Fehler eingekreist.
Der RPI-Adapter ist vermutl. schuld.
Nachdem ich nun das Relais auf den Ausgang des GPIO7 geschaltet und im Script geändert habe, glimmt nun nach dem Reboot des Raspberrys die LED für des entsprechende Relais auf der Ausgangskarte nicht mehr schwach sondern sie ist ganz aus wenn der RPI-Monitor RPI 2.0 nicht gestartet ist.
Sowie ich den RPI-Monitor als Instanz starte, schaltet dieser die GPIOs innerhalb von IoBroker auf "false" und die Relais ziehen nicht gewollt an !!!
Ich benötige somit ein "true" zum Start des IoBrokers/RPI-Monitors 2.0 bevor die Scripte starten um einen Fehlalarm zu vermeiden.
Wie kann ich im die RPI-Monitor GPIO-Ausgänge zum Start auf zwingend "true" schalten ?
Besteht in den RAW-Einstellungen für das Objekt rpi2.0 > rpi2.0.gpio.7.isInput die Möglichkeit den grundsätzlichen Status des Ausgangs auf "true" zu setzen ?
LG
emblitz
-
Hi,
bin keine Script Profi aber macht es dann nicht mehr sinn die GPIO direkt aus dem Script herraus anzusprechen anstatt sich auf die Funktion des Adapters zu verlassen?
Gruß
-
Ja, das hatte ich gemacht.
Das Problem ist, dass das Script erst startet wenn die Relais bereits über den Adapter direkt während des IoBroker-Starts angesprochen werden.
Vermutlich ist die Lösung eine 8-Kanal Relaiskarte zu kaufen bei der die Relais <u>nicht</u> anziehen wenn die GPIOs "false" sind.
Bei meiner vorhandenen Relaiskarte ziehen die Relais an wenn die GPIOs "false" sind.
Leider habe ich so eine Relaiskarte mit der Funktion "GPIO false = Relais aus" noch nicht gefunden.
Kann mir jemand einen Link senden oder einen tipp geben wo ich so eine Karte kaufen kann ?
LG emblitz
-
Passiert das auch wenn die GPIOs im Adapter alle deaktiviert sind?
Wollte demnächst mein Garagentür darüber steuern… ist aber ungünstig wenn das bei Adapter oder Pi reboot dann öffnet.
-
Das habe ich nicht ausprobiert.
Wenn der gesamte Adapter deaktiviert wird, ziehen die Relais nicht an.
Leider habe ich so eine Relaiskarte mit der Funktion "GPIO false = Relais aus" noch nicht gefunden.
Kann mir jemand einen Link senden oder einen tipp geben wo ich so eine Karte kaufen kann ?
LG emblitz