Nabend,
ich nutze schon viele GPIOs des Raspberry in FHEM. Nun habe ich mir eine kleine USV gebastelt und möchte den Stromnetz-Status über GPIO 2 abfragen.
Das Problem ist nur, dass der Pin immer high ist, obwohl er nach Konfiguration low sein müsste. Wenn ich den Pin "gewaltsam" gegen GND ziehe, wird er in FHEM auch low angezeigt. Aber beispielsweise 1k gegen GND reichen nicht, um den Pin runter zu ziehen.
Ich vermute, dass irgendein anderes Modul von FHEM oder ein anderes Programm auf diesen Pin zugreift.
Hier die Initialisierung in FHEM:
defmod PowerOK RPI_GPIO 2
attr PowerOK active_low no
attr PowerOK devStateIcon off:10px-kreis-rot on:10px-kreis-gruen
attr PowerOK direction input
attr PowerOK interrupt both
attr PowerOK pud_resistor down
attr PowerOK room Heizungskeller,Netzteil
Selbst ein gpio readall liefert in der Konsole:
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| | | 3.3v | | | 1 || 2 | | | 5v | | |
| 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | |
| 3 | 9 | SCL.1 | OUT | 0 | 5 || 6 | | | 0v | | |
| 4 | 7 | GPIO. 7 | OUT | 0 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |
| | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 |
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 1 | IN | GPIO. 1 | 1 | 18 |
| 27 | 2 | GPIO. 2 | IN | 1 | 13 || 14 | | | 0v | | |
| 22 | 3 | GPIO. 3 | IN | 1 | 15 || 16 | 1 | IN | GPIO. 4 | 4 | 23 |
| | | 3.3v | | | 17 || 18 | 1 | IN | GPIO. 5 | 5 | 24 |
| 10 | 12 | MOSI | OUT | 0 | 19 || 20 | | | 0v | | |
| 9 | 13 | MISO | IN | 1 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |
| 11 | 14 | SCLK | OUT | 0 | 23 || 24 | 0 | OUT | CE0 | 10 | 8 |
| | | 0v | | | 25 || 26 | 0 | OUT | CE1 | 11 | 7 |
| 0 | 30 | SDA.0 | OUT | 0 | 27 || 28 | 0 | OUT | SCL.0 | 31 | 1 |
| 5 | 21 | GPIO.21 | OUT | 0 | 29 || 30 | | | 0v | | |
| 6 | 22 | GPIO.22 | OUT | 0 | 31 || 32 | 0 | OUT | GPIO.26 | 26 | 12 |
| 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | |
| 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 |
| 26 | 25 | GPIO.25 | IN | 1 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 |
| | | 0v | | | 39 || 40 | 1 | IN | GPIO.29 | 29 | 21 |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
Demnach ist GPIO 2 also ein Eingang und in FHEM ist er ja auf Pull Down gestellt. Warum messe ich dann 3,3V an dem Pin?
Muss I2C vielleicht irgendwo deaktiviert werden?
Ich danke euch!
GPIO2 und GPIO3 sind, wie Du schon bemerkt hast primär für die Verwendung als I2C Bus vorgesehen.
Auf dem Pi sind an diesen Pins Pullups auf die 3V3 angeschlossen.
Diese sind fest verbaut.
Ich würde einen anderen GPIO nutzen, bzw. die Beschaltung so wählen, das der Pullup mit genutzt werden kann.
Theoretisch kannst du die Pullups auch auslöten, das würde ich aber nicht empfehlen.
Moin und danke!
Tatsache, in den Schematics sind dort eindeutig Widerstände zu sehen. Da hätte ich auch selbst drauf kommen können...
Aber als Hardwerker vermutet man den Fehler natürlich immer erst in der Software ;D