Modul zur Nutzung der Raspberry Pi GPIO

ja ist er, hab direkt am Pin gemessen

…der Mechanismus beim MCP23017 funktioniert normalerweise so:

  • Pegeländerung am Eingang
  • Int geht auf 0
  • das nächste Einlesen der Eingänge setzt den Int wieder auf VCC

Hast Du zum Testen möglicherweise einen anderen MCP liegen?

ja hab ich, ich probiere es gleich mal aus

genau das gleiche Problem

Ich hatte ja geschrieben, wenn ich den Taster betätige, dass die Spannung an der Interruptleitung auf 0V geht und auch bei 0V bleibt. Trenne ich die Interrptverbindung auf, so kann ich am MCP 3,3V messen und am Raspi 0V. Also macht ja der MCP schon mal alles richtig. Nur warum bleibt am Raspi der Pegel auf 0V?
Ein Pull Up in der Interruptleitung kann den Pegel auch nicht wieder hochziehen.

Vermutung: weil der GPIO als Eingang konfiguriert ist?

Wie auch immer: bitte teste noch mal andere GPIO als 21…

Joachim

Das habe ich heute alles noch mal gemacht:

  1. SD-Karte Formatiert mit „SD-Formatter“,
  2. aktuelles Image (2018-10-09-raspbian-stretch-lite.img) mit Win32DiskImager auf SD-Karte geschrieben,
  3. in raspi-config Passwort geändert, Lokale Einstellungen angepasst und SSH und I2C eingeschalten,
  4. in dhcpcd.conf statische IP-Adresse vergeben,
  5. sudo apt-get update ausgeführt,
  6. sudo apt-get upgrade ausgeführt,
  7. Installation IPS wie in Doku beschrieben,
  8. IPS-Lizenz aktiviert,
  9. PIGPIO V67 installiert (Methode 1 aus dem Link zur Anleitung des Moduls),
  10. mit sudo pigpiod gestartet,
  11. Modul in IPS hinzugefügt,
  12. Instanz IPSGPIO_MCP23017 hinzugefügt, Benutzername und Passwort angepasst,
    Eingänge und Ausgänge entsprechend konfiguriert und GPIO für Interrupt eingetragen,
  13. Gateway überprüft, 1-Wire Server und PIGPIO-Server waren noch deaktiviert,
  14. in raspi-config noch 1-wire und Remote GPIO eingeschalten,
  15. Reboot
  16. Taster betätigt, GPIO21(PIN 40) ist Interrupt, Pegel geht auf 0V und bleibt auf 0V,
    PIGPIO Restart,
    Taster betätigt, GPIO20(PIN 38) ist Interrupt, Pegel geht auf 0V und bleibt auf 0V,
    PIGPIO Restart
    Taster betätigt, GPIO19(PIN 35) ist Interrupt, Pegel geht auf 0V und bleibt auf 0V,
    PIGPIO Restart
    Taster betätigt, GPIO20(PIN 38) ist Interrupt, Pegel geht auf 0V und bleibt auf 0V,
    PIGPIO Restart
    Taster betätigt, GPIO26(PIN 37) ist Interrupt, Pegel geht auf 0V und bleibt auf 0V,
    PIGPIO Restart
    Taster betätigt, GPIO4(PIN 7) ist Interrupt, Pegel geht auf 0V und bleibt auf 0V,
    PIGPIO Restart
    Taster betätigt, GPIO14(PIN 8) ist Interrupt, Pegel geht auf 0V und bleibt auf 0V,

Bei jeden Interrupt-GPIO das gleiche Problem.
#Joachim, mit welchen fertigen Hardwaremodulen hast du dein Modul getestet? Oder hast du auch wie ich nur einen Testaufbau gehabt?

…nur den Testaufbau bzw. Das GeCoS 16 Eingänge…

hast du für deinen Testaufbau noch einen Schaltplan verfügbar?

ich habe jetzt an jeden Eingang des gesamten Port einen Pullup Widerstand eingebaut. Seitdem funktioniert alles so wie es soll. Habe auch schon mehrfach den Raspi ausgeschalten und wieder hochfahren lassen, bis jetzt läuft alles.
Ich kann mir nur nicht vorstellen, dass es an offenen Eingängen gelegen haben soll.

Hallo Leute,

PIGPIO steht jetzt in der Version 68 bereit, nach meinem kurzen Test sieht es so aus, als wenn einige Fehler behoben werden konnten und die CPU-Nutzung weiter zurückgegangen ist.

Joachim

Moin,

eine Frage zum IPS2GPIO_INPUT mit trigger-Script:

Wie frage ich ab, WELCHE Taste gedrückt wurde ? Ich würde gerne ein gemeinsames Script nutzen - aber im $_IPS[‚SENDER‘] bekomme ich nur „RunScript“. Ein Blick in die module.php verrät, dass der Aufruf auch tatsächlich durch IPS_Runscript erfolgt. Damit dürfte die Info futsch sein.

Wäre es möglich, dies durch RunScriptEx dahingehend zu erweitern, dass die gedrückte Taste ausgewertet werden kann ?

Danke,
Tom

Hallo Tom,

meine spontane Idee für diesen Fall wäre eine direktes Skript für jeden Eingang/GPIO das dann erst das „spezielle“ und - ergänzt um die gewünschten Zusatzinformation - dann das gemeinsame Skript startet.

Ich habe aber so spontan keine Idee, wie ich den mitgegebenen Wert definieren sollte, so dass es für alle passt…:confused:

Joachim

Hi Joachim,

einfach die ID der aufrufenden IPS2GPIO-Input Instanz wäre schick. Dann könnte man das abfragen und bräuchte nicht jeweils ein extrascript.

Grüße,
Tom

Hallo Tom,

ich habe jetzt mal die Zeile so geändert:

IPS_RunScriptEx($this->ReadPropertyInteger("TriggerScript"), Array("InstanceID" => $this->InstanceID));

Somit sollte - für den der es weiß und braucht - die Instanz-ID mit übergeben werden.
Ich gehe dabei davon aus, das es für andere Nutzer keine negativen Auswirkungen hat…

Joachim

Hi Joachim,

funktioniert einwandfrei. Herzlichen Dank !

Tom

Hallo
Ich wollte heute das Modul neu installieren, bekomme aber folgende Meldung:

Fehler: Unexpected HTTP status code: 404 (Code:-32603)

Andere Module wie zB. „SymconMisc“, kann ich ohne Probleme installieren.

Benutzt jemand dieses Modul in Verbindung mit einen MCP23017?

Moin, welches Breakoutboard nutzt ihr denn für den BME680 ? Ich überlege mir, ein paar davon in die KWL zu verbauen. Da bräuchte ich ein möglichst kleines Board und eine einstellbare I2C Adresse.

Hallo Tom,

der BME680 hat von Haus aus nur zwei verschiedene Device-Adressen. Wenn Du also mehr als zwei anschließen möchtest, brauchst Du einen MUX.

Joachim