Modul zur Nutzung der Raspberry Pi GPIO

Komme erst im laufe der nächsten Woche zum testen.
Wochenende ist ja schon verplant.:smiley:

PI IO Zero ist schon eingepackt.

Swen

Hallo MCP23017 Freunde!

Bin ja gerade dabei den Interrupt im IPS nutzbar zu machen. Der MCP bietet dazu diverse Möglichkeiten. Default ist ein aktiver Treiber der bei Änderung auf 0 geht, alternativ aktiver Treiber der im Fall der Fälle auf 1 geht - soweit ist das klar und ich kann damit umgehen…
Aber was ist wenn ich die Option „Open-Drain“ nutze? Auf was soll dann regiert werden? Auf eine 0? Auf eine 1?
Bin verunsichert…

Joachim

Nachtrag: Ich könnte mir vorstellen die Option „Open-Drain“ hier in Verbindung mit dem Raspberry Pi ganz „unter den Tisch“ fallen zu lassen. Der direkte Anschluß an einen GPIO des Pi ist dann ja ohne weitere Beschaltung möglich und sinnvoll…

…ihr braucht gar nicht so laut zu Schweigen!:smiley:
Die Möglichkeit den Interrupt als Open Drain zu konfigurieren habe ich jetzt mal eliminiert, erscheint wenig sinnvoll in Verbindung mit den GPIO des Raspberry Pi. Zur Vereinfachung wäre es weiterhin zu überlegen, ob man auch die Option „Aktiv-Low“/„Aktiv-High“ einfach entfernt, sehe in der Möglichkeit hier keinen wirklichen Gewinn.
Bitte dazu um euer Feedback!:wink:

Noch etwas anderes: Es gibt laut Datenblatt zwei Register, deren Unterschied mir nicht ganz verständlich ist. Es geht dabei um das Register „GPIO“ und „OLAT“. Beide liefern teilweise unterschiedliche Ergebnisse.:confused:
Wenn mir das noch mal jemand erläutern könnte…

Noch ein allgemeiner Hinweis: Ich habe den ersten Beitrag in diesem Thread mal etwas „aufgeräumt“ und neu geordnet. Gerne auch da mal rüberschauen und ggf. Feedback geben. Manche Themen erscheinen einem so trivial, das man sie nicht extra erwähnt, von daher bin ich auch da dankbar für weitere Punkte…

Joachim

Hi Joachim,

„open drain“ ist die Beschaltungsart des internen MosFet Ausgangstreibers,
sprich in diesem Falle hat er keinen PullUp Widerstand und schaltet nur gegen Gnd.
Beim Wald- und Wiesentransistor: open collector.
Schön nutzbar für Pegelwandler.

Stell Dir vor es gelingt Dir das Register für den IRQ innerhalb von 1 mS auszulesen,
für beide direkt nacheinander in einem Rutsch benötigst Du 1,5 mS; … nur mal hypothetisch…

Dann könnte man auf die Idee kommen und sich fragen:

wozu 2 IRQ Leitungen??,

ich konfigurier die als open drain,
klatsch beide zusammen und versehe sie mit einem gemeinsamen PullUp R.
Typische ODER Schaltung, der erste gewinnt;
welcher der beiden Ports es dann auslöste, diese Ermittlung liegt dann softwareseitig in Deiner Hand.

mfg

BerndJ

PS: erinnert mich irgend wie an den ersten Microcontroler Grundlagenkursus im Hause Philips; das war 1978 ! :cool:

Hi,

ich nochmal:

Der eine ist das was theoretisch am Ausgang von Seiten des Bausteins anliegen sollte,
der andere schaut auf den Ausgang, ist als Eingang konfiguriert und meldet diesen Status.

Schön wenn der Ausgang als open drain geschaltet ist und kein PullUp vorhanden ist.

In der Hoffnung dass ich keinen Mist erzählt habe (aus der Hand geschossen).

mfg

BerndJ

Genau,
Auszug aus dem µKontrollerforum:
Du kannst die Pins des IC als Eingang und Ausgang benutzen.
GPIO gibt die den aktuellen Pegel der Pins, egal ob Ein- oder Ausgang.

OLAT = Output-LATch ist ein Chip-Interne LATch für den Output.
Das kannst du setzen und lesen.
Wenn aber Pins als Eingang geschaltet sind gibt GPIO eventuell einen
anderen Wert als OLAT, weil halt am Eingang was anderes anliegt.
Gruß Helmut

…noch mal zum Interrrupt:
In diesem Fall soll die Ausgangsseite des MCP23017 ja mit einem bestimmten Gerät - dem Raspberry Pi - verbunden werden. Die einfachste Methode dieses zu machen ist eine direkte Verbindung zwischen beiden herzustellen - ohne irgendeine notwendige weitere Beschaltung. Zum anderen ist es so, dass ich sowieso alle acht Register einlesen wenn der Interrupt eintritt - egal ob von Port A oder Port B. Ist softwaretechnisch ein Vorgang und einfacher als zu separieren.

Von daher sehe ich mich in dem bekräftigt was ich oben schon ausgeführt habe:

  • den Interrupt fest auf „Aktiven Treiber“ einstellen (Default-Wert)
  • den Interrupt fest auf „Aktiv Low“ einstellen (Default-Wert)
  • die Interrupt zusammenzuschalten (ist zwar nicht Default, aber hier führt es in der Konsequenz zu keinem anderen Ergebnis) Daraus folgernd könnte man dann die derzeit benötigen GPIO Eingänge für den Interrupt auch auf einen reduzieren…:slight_smile:

…zu OLAT/GPIO:
Meine Beobachtung war bisher auch, dass GPIO die „richtigen“ Zustände abbildet, werde das noch mal beobachten.
Wenn ich keinen Erkenntnisgewinn aus OLAT habe, dann könnte man auf diese vielleicht auch beim Einlesen verzichten…

Joachim

Für PIC Kontroller gilt:

für Ausgänge LAT benutzen für
Eingänge PORT

Aus Erfahrung weiß ich, dass es da richtig wichtig ist :wink:
Gruß Helmut

Okay, das wären ja nur ein paar Bitoperation - das bekomme ich hin![emoji6]

…habe das wie oben besprochen das jetzt mal so umgesetzt…

Wollte jetzt auch noch mal mit Euch einen kritischen Blick auf die anderen Optionen werfen:
Interrupttrigger: Diesen würde ich fest auf „Änderung“ einstellen
Referenzwert: Dieser Option könnte in der Folge entfallen

Warum? Weil es m.E. in unserem Fall wenig sinnvoll ist einen festen Referenzwert einzustellen. Dieser würde ja bewirken, das eine Aktualisierung im IPS nur bei diesem Referenzwert erfolgen würde. Ich glaube bei „normaler“ Anwendung hält sich der Traffic auch im Rahmen, wenn jede Änderung zur Aktualisierung führt…:wink:

Joachim

Ich stimme Dir da zu, wenn dann Änderung und das genügt.
Gruß Helmut

So liebe Fraunde des MCP23017 - es ist (vorerst) vollbracht!:slight_smile:

Alles es das was ich bis jetzt in das Modul einbringen wollte (siehe letzte Postings) habe ich jetzt drin…

Bevor ich den MCP23017 nun in die Liste auf der ersten Seite aufnehme, bitte ich Euch noch mal um einen „Testbericht“.

Joachim

P.S.: Wenn jemand noch einen PCF8583 über hat - ich habe schon vor bereits Monaten welche in Fernost bestellt - leider sind sie bis dato nicht eingetroffen…

Hi,

alternativ könnte ich einen DS1307 Baustein anbieten, Interesse?

mfg

BerndJ

Danke für das Angebot, hilft mir hier aber ich weiter. Sehen uns kurz nach 13:00 Uhr - bin sehr gespannt auf die Veranstaltung im IPS-HQ![emoji6]

Joachim

Hallo Joachim,

habe Gestern nochmal dein Modul neu installiert und gesehen, dass es jetzt eine Instanz für das 1" OLED Display gibt. Finde ich cool. Bin gerade im ICE von Nürnberg nach Lübeck und habe einen kleinen Testaufbau mit einem ESP8266, BME180 und dem 1" OLED dabei. Das spricht übringens MQTT :wink:

Eventuell können wir auch nochmal über BME680 sprechen. Da scheint bisher keiner (auch nicht bei FHEM) ohne die Bosch Lib weiter gekommen zu sein. Habe ich aber schon am Anfang befürchtet.

Gruss
Bernd

Hallo Bernd,

konnte Dich auf dem IPS-Event gar nicht erblicken?:confused:

Wie auch immer: Bei dem BME680 muss man wohl noch eine Weile warten bis da die korrekte Berechnung der Luftqualität nachvollziehbar publiziert wird. Schade das Bosch sich da so verhält…
Gleichwohl meine ich, das die jetzige Umsetzung schon sehr nah am „Original“ sein wird, jedenfalls sind die Ergebnisse nachvollziehbar.

Was läuft sonst so:

  • Den MCP23017 habe ich jetzt erst einmal innerlich als „fertig“ notiert. Auf dem IPS-Event wurden mir aber noch zwei Varianten der IO-Platine „zugesteckt“, die ich noch fertigstellen muss um sie in Verbindung mit meinem Modul zu testen.

  • Die PCF8583 sind am Samstag dann auch endlich eingetroffen. Ein erster Funktionstest mit meinem Modul war erfolgreich, es fehlen jedoch noch die wichtigen „Feinheiten“ der Möglichkeiten im Modul. Der PCF8583 soll hier aber nicht als RTC sondern die tollen Funktionen als Impuls-Zähler zeigen.

  • Auf dem Treffen wurde ich angesprochen, ob man nicht einmal etwas „Komplettes“ mit den jetzt schon vorhandenen Modulen erstellen könnte, konkret ging es dabei um eine Wetterstation. Gerne bin ich bereit hier zu unterstützen. Wenn da Interesse besteht schlage ich vor einen neues Thread diesbezüglich zu eröffnen. Temperatur, Luftdruck und -Feuchtigkeit, Helligkeit wären ja schon mal abbildbar, Blitzsensor ist auch vorhanden, für Windrichtung und -Geschwindigkeit sowie Regensensor würde sich der oben bereits erwähnte PCF8583 mit seiner Zählfunktion sehr gut eignen. Freue mich dann auf ein „echtes“ Community-Projekt!:wink: Auswahl der Sensoren, der wetterfeste Aufbau (mit möglichst geringer Sensorenbeeinflußung) mit einem Raspberry Pi oder einem Pi Zero wären sicherlich spannend…

Joachim

Hallo Joachim,

ich habe ab und zu auch versucht, dich ausfindig zu machen. Waren aber zu viele Gesichter und Themen mit denen man sich ausgetauscht hat und viel zu wenig Zeit. Ich hatte mich da in das Thema Alarmierung und Scharfschaltung von Alarmanlagen vertieft, wohl auch wegen den Fingerprintsensoren :slight_smile:

Mit Ralf hatte ich kurz über den für mich nicht zufriedenstellenden Status des BME680 gesprochen. Aber wir sind uns da wohl alle einer Meinung, wenn Bosch nicht mag, ist es halt so. Einfacher wird wohl sein, den BME280 zu nehmen und die Luftqualität über MH-Z14, MH-Z19 oder noch einfacher den CCS811 (AMS-Nachfolger für iAQ, bei ebay schon ab ~8€) zu erfassen.

Wetterstationen finde ich nicht so spektakulär, gibt es schon zu viele davon. Wenn dann muessten da schon Alleinstellungsmerkmale rein. Machbar wäre da schon was, z.B. neben dem normalen Zeug Temperatur, Feuchte, Druck und Lichstärke zusätzlich:

[ul]
[li]
[/li][li]Feinstaub (SDS011 oder GP2Y10 ?)
[/li][li]Radioaktivität über Zählrohr wie bei GMC-320
[/li][li]Spektrale Lichtstärke evtl. auch Infrarot/UV mit TCS34725 oder TSL2561
[/li][li]Niederschlag und Type (Regen, Nebel oder Schnee) mit Radar
[/li][li]Blitze (hattest du ja mit AS3935 schon angesprochen) mit zusätzlicher Einbindung in lightningmaps.org
[/li][/ul]
Zum PI zero bin ich mir unklar. Dem fehlt LAN und auch WLAN, hat nur USB. Diese eher passive Rolle kann ich auch mit ESP32/8266 abdecken (die haben zumindest WLAN). Aber wenn es eine autarke Station sein soll (evtl. mit 1" OLED SSD1306), warum nicht. Eventuell sogar eine eigene stabile Zeitbasis mit DS3231

Ach ja, fast alle genannten Sensoren sind in ESPEasy bereits realisiert oder in Entwicklung. Da könnte man kreativ übernehmen :wink:

Gruss
Bernd

Nee, dafür gibt es doch den PIzeroW ;).

Ralf,

hast recht. Den Zero W hatte ich nicht auf dem Schirm. Wohl auch, weil der eher gegen ESP32 antreten muss und da aus meiner Sicht eher nachteilig ist. Ein echter „Mainframe light“ wie der PI3 mit viel mehr Power, Memory, IO ist mir da schon lieber.

Gruss
Bernd

oder du nimmst einen ENC28J60

Raspberry Pi Zero - Ethernet Verbindung herstellen (ENC28J60)

habe davon schon 2 Stück in Betrieb und sie sind zuverlässig. Nachteil mehr als 5Mbit ist damit nicht drin. Reicht aber in den meisten Fällen aus. Ich bin halt kein Fan von WLAN

Swen