Hauptmenü

[gelöst] Taster an GPIO

Begonnen von Pi_01, 15 Dezember 2020, 09:54:56

Vorheriges Thema - Nächstes Thema

Pi_01

Guten Morgen,
ich möchte einen GPIO als Eingang benutzen, der über einen Taster angesteuert wird.
Meine Schaltung ist deshalb wie folgt:
Vom 3,3V-PIN gehe ich zum Taster, vom Taster einmal auf den GPIO, und über einen 220K-Widerstand zusätzlich auf Ground.
Betätige ich den Taster, liegen am GPIO über +2V an, was für den Zustand "HIGH" ausreichen müsste.

Mein FHEM-Code sieht wie folgt aus:

defmod Versuch1 RPI_GPIO 16
attr Versuch1 direction input
attr Versuch1 interrupt rising


Was fehlt noch, damit der GPIO in FHEM ordnungsgemäß erkannt wird?
Unter "STATE" werden nämlich nur drei Fragezeichen angezeigt.

Ein "set Versuch1 readValue" ändert am Zustand auch nichts.

Wo liegt der Fehler?

Frank_Huber

Moin,

setze mal Versuchsweise das Interrupt Attribut auf "both"
Und nur um sicher zu gehen, Du hast den Taster schon am Pin 36 (GPIO16) angeschlossen?
GPIO und Pin ist nicht die gleiche Nummer.

Ich würde auch eher gegen 0V schalten. also "active low" auf "yes".
Damit legst Du nur den 0V Pegel zum Taster.

Als Pull Up / Pull down finde ich 220 K etwas arg hoch.
Ich habe 10K als Pull down und keine Probleme.

Pi_01

Zitat von: Frank_Huber am 15 Dezember 2020, 10:35:55
Moin,

setze mal Versuchsweise das Interrupt Attribut auf "both"
Und nur um sicher zu gehen, Du hast den Taster schon am Pin 36 (GPIO16) angeschlossen?
GPIO und Pin ist nicht die gleiche Nummer.

Ich würde auch eher gegen 0V schalten. also "active low" auf "yes".
Damit legst Du nur den 0V Pegel zum Taster.

Als Pull Up / Pull down finde ich 220 K etwas arg hoch.
Ich habe 10K als Pull down und keine Probleme.

Das Interrupt hatte ich versuchsweise auf "both", jedoch ist keine Änderung eingetreten.

Der Taster liegt auf Pin 36 (GPIO16).

Als Widerstand hatte ich zunächst einen 10K, jedoch betrug die Spannung am GPIO bei gedrückter Tasterstellung dann nicht mehr >+2V, sondern nur etwas über +1V.
Wenn der Taster nicht betätigt wird, dann liegt am GPIO eine Spannung im Minusbereich an. Ist das ein Problem?

Was mich gerade noch auffällt:
Bei mir werden überhaupt keine Readings gelistet, nicht einmal der Pinlevel.

Wenn ich die Raw Definition aufrufe, dann steht unterhalb des bereits geposteten Code noch die Zeile:

setstate Versuch1 2020-12-15 10:44:48 Pinlevel 0

Warum ist das so?

Frank_Huber

Der Pinlevel  sollte  eingentlich auf "low" oder "high" stehen.
Deine Spannungen kommen mir auch etwas seltsam vor.
bei gedrücktem Taster gegen 3v3 müssen die 3v3 auch am GPIO anstehen. die 10k bzw 220K sollten da keinen merklichen Unterschied machen.
Wo holst Du die 3v3 her?

Mach doch evtl mal eine Gesamt-Skizze.
Denke da passt was grundlegendes nicht.

Pi_01

Das Spannungsproblem habe ich gelöst (böser Fehler: am Breadboard war Ground nicht durchgängig).

Nichtsdestotrotz wird mir kein Pinlevel angezeigt, egal ob ich GPIO 16, 20, 21 oder z.B. 26 nehme.

Manche GPIO haben anscheinend eine Doppelfunktion (lt. Skizze kann z.B. der GPIO 20 auch als "PCM_DIN" genutzt werden). Ist diese zweite Funktion standardmäßig aus?

Unabhängig davon scheint irgendetwas zu fehlen. Muss ich die GPIOs in FHEM erst einmal generell aktivieren?

Oder wo sonst könnte der Fehler liegen?




Pi_01

Nachtrag: ich habe jetzt nochmal ein "set Versuch1 readValue" abgesetzt.
In den Logs erscheint dann folgende Fehlermeldung:

Zitat2020.12.15 12:07:50 1: Can't open file: Versuch1, value
2020.12.15 12:07:50 1: Versuch1 GetFn: readout of Pinvalue fail
2020.12.15 12:07:56 1: Can't open file: Versuch1, value
2020.12.15 12:07:56 1: Versuch1: readout of Pinvalue fail
2020.12.15 12:07:56 1: Can't open file: Versuch1, value
2020.12.15 12:07:56 1: Versuch1 GetFn: readout of Pinvalue fail

Pi_01

Ich habe etwas gegoogelt und den letzten Fehler gefunden:

Der Benutzer "fhem" war nicht der Benutzergruppe "gpio" zugeordnet!

Frank_Huber

na is doch super. Problem gelöst. :-)
Ein "help RPI_GPIO" hätte dir die Commandref gebracht wo genau das drin steht. ;-)
oder unten im Gerät ein Klick auf "help..."

Laser

#8
Habe ein Problem mit dem Abfragen eines Binäreinganges. Möchte jedoch gegen GND schalten. Habe Interrupt- both gesetzt. Direction- Input. PUD-Resistor- up. Ich messe auch keine Spannung am Eingang gegen Masse bei offenem Kontakt.
Mit Schalten gegen 3,3V funktioniert es. Nur der PullUp will nicht... Habe einen PI4!
>> WiringPi v2.52 added support for the RPi 4B but does not include changes to properly handle the pin PULL UP/DOWNs.
Ein neueres WiringPi soll das beheben, habe die 2.5.
Habe aus Verzweifelung in die boot/config.txt unten ein: gpio=26=up eingetragen. Aktiviert den Pullup auf GPIO26
Wie geht das richtig unter FHEM?

Frank_Huber

Zitat von: Laser am 14 Februar 2021, 14:44:51
Habe ein Problem mit dem Abfragen eines Binäreinganges. Möchte jedoch gegen GND schalten. Habe Interrupt- both gesetzt. Direction- Input. PUD-Resistor- up. Ich messe auch keine Spannung am Eingang gegen Masse bei offenem Kontakt.
Mit Schalten gegen 3,3V funktioniert es. Nur der PullUp will nicht... Habe einen PI4!
>> WiringPi v2.52 added support for the RPi 4B but does not include changes to properly handle the pin PULL UP/DOWNs.
Ein neueres WiringPi soll das beheben, habe die 2.5.
Habe aus Verzweifelung in die boot/config.txt unten ein: gpio=26=up eingetragen. Aktiviert den Pullup auf GPIO26
Wie geht das richtig unter FHEM?

Kennst du die Suchfunktion? 😉
https://forum.fhem.de/index.php?topic=111749.0