2004-LCD-Display mit I2C ansteuern

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo und danke für dieses Forum :danke_ATDE:!

    x-Post, dort aber keine Antwort.

    Ich habe mir ein 2004-LCD-Display gekauft (hier). Dieses Display möchte ich mit meinen Raspberry Pi (Model B, 512 MB) betreiben. Ich habe mit den GPIO-Pins am Raspi noch keine Erfahrung (ein bisschen was hab ich aber am Arduino gelernt), hätte aber grundsätzlich an WiringPi gedacht.

    Ich auch einen I2C-Controller bestellt (den) und würde ihn gerne mit dem Display gemeinsam verwenden. Ich könnte damit GPIO-Pins sparen und hätte weniger Kabel, daher auch niedrigere (Hardware)-Fehlerwahrscheinlichkeit.

    Mein Problem: es gibt zwar eine Anleitung für WiringPi und Displays (da), aber für LCD-Display mit WiringPi via I2C finde ich keine Hinweise - jedenfalls keine, die ich wirklich verstehe.

    Ist das LCD-Display mit I2C-Controller (und WiringPi) mit vertretbarem Aufwand machbar, oder eher nicht? Und wenn ja, wie geh ich da vor?

    Danke schon jetzt für Antworten! :thumbs1:

    [edit]
    Du sollst die Forensuche verwenden :wallbash:
    Scheinbar ist mein Problem kein komplett neues.

    Wenn mir wer einen kurzen Hinweis gibt, bin ich trotzdem dankbar - ich durchsuch jetzt mal das Forum nach Antworten!

    [edit2]
    Habe jetzt ein wenig recherchiert - eine Antwort für I2C, LCD und WiringPi hab ich nichts gefunden... geht das nicht?

    Einmal editiert, zuletzt von Speendo (17. September 2014 um 21:35)

  • Hallo.

    Paar Sachen dazu:
    Offensichtlich scheint dieser i²c Controler genau auf die LCD zu passen, von daher also kein Problem... einfach auf die Rückseite der LCD einlöten (richtig rum bitte) :D

    Die erste Hürde ist die Spannungsversorgung.
    Dein Controler läuft mit 2.5-6V, die LCD mit 5V und deine GPIO Pins kommen mit 3.3V.
    Auf deinen Controler 3,3V vom PI wird die LCD wohl kalt lassen, und entweder gar nix, oder nur Mist machen.
    Einfach 5V auf den Vcc von i²c Controler wird deiner LCD gefallen, aber den Pi u.U töten.

    Aber da gibts Levelshiter
    Also Levelshifter verdrahten:
    Der bekommt einmal 3.3V und 5V vom raspi.
    Vcc vom Controler an 5V vom raspi
    SDA und SLC vom Controler an die High Ein/Aus Pins vom Shifter.
    SDA und SLC von den piGPIOs an die Low Ein/Aus Pins vom Shifter.
    Das wars.

    Dieser i²c Controler stellt quasi nen 8-Bit Port und den RW/C RW/D zur Verfügung.
    Den Controler per Lötbrücke ne Adresse zuweisen und Du kannst loslegen.

    Per i²c Protokoll schreibst du also Adressen und Daten an die LCD.
    Mal davon ausgehend das das ne LCD mit nem 44780 Controler ist.
    Datenblatt genau durchlesen, das Teil muss intialisiert werden.(Auf Zeiten achten).
    .....was viele übersehen und verzweifeln: Diese erste 0x33 an Anfang muss dreimal mit unterschiedlichen Zeiten raus
    Ebenso musst du dich um die Adressierung der rauszuschreibenden Daten kümmeren.

    Aber wie gesagt, steht im Datenblatt.
    Dann viel Erfolg, und nicht verzweifeln... aller Anfang...:thumbs1:
    Wenn trotzdem was unklar ist, kein Prob., fragen.

    gruß root
    ------Nachtrag------
    nix gegen wiringpi aber lies dir mal das PIGPIO durch
    die kann einiges mehr ;)

    Einmal editiert, zuletzt von root (18. September 2014 um 04:00)

  • Hallo root und danke für die Antwort!

    Ja, der I2C-Controller passt genau auf das LCD-Board. Welche Richtung weiß ich noch nicht genau, aber daran wirds nicht scheitern ;)

    Ist die Spannungsversorgung wirklich eine Hürde?
    So müsste es doch gehen, oder
    lcdpcf8574.png
    Das runde Ding da unten ist ja glaub ich kein Spannungsshifter (wobei ich auch nicht identifizieren kann, was es ist, ich wär einfach mal davon ausgegangen, dass es ein Poti oder so ist, der auf meinem I2C-Controller ohnehin drauf ist).

    Übrigens wird mir diese Library (https://github.com/karunadheera/lcdpcf8574) wahrscheinlich eh helfen, oder?

    Abgesehen vom Display muss ich in meinem Projekt eigentlich nur noch einen Helligkeits-Sensor abfragen. Das alles würd ich gerne in Python machen. Lohnt sichs, nur für den Helligkeitssensor gleich eine ganze Library wie PIGPIO oder WiringPi zu verwenden?

    Danke nochmal


  • Die erste Hürde ist die Spannungsversorgung.
    Dein Controler läuft mit 2.5-6V, die LCD mit 5V und deine GPIO Pins kommen mit 3.3V.
    Auf deinen Controler 3,3V vom PI wird die LCD wohl kalt lassen, und entweder gar nix, oder nur Mist machen.
    Einfach 5V auf den Vcc von i²c Controler wird deiner LCD gefallen, aber den Pi u.U töten.
    Aber da gibts Levelshiter

    alles richtig, wenn ich ergänzen darf

    der PI mag nur mit 3,3V arbeiten, der PCF/PCH 8574(a) kommt mit 3,3V zurecht, sollte also an 3,3V auch angeschlossen werden.

    Ein stinknormales LCD kann normalerweise nur mit 5V betrieben werden, es gibt wenige die auch bei 3,3V arbeiten. Auch wenn die LCD mit 5V arbeiten und nur Daten entgegen nehmen akzeptieren sie 3,3V Pegel als high, wenn nicht helfen wie schon gesagt Levelshifter

    Ich mag den 74HC4050 der dann an 5V versorgt wird aber mit 3,3V am Eingang zufrieden ist und seinerseits 5V ausgibt zum LCD. Leider hat er nur 6 Treiber eingebaut die aber gerade so reichen könnten wenn die Schaltung am LCD write auf GND legt und im 4-bit Mode arbeitet, sieht man oft -> benötigte Signale E(nable) CS(chip select) D0-D3(oder D4-D7) macht 6 Leitungen die der Levelshifter treibt.


    Ist die Spannungsversorgung wirklich eine Hürde?

    ja kann sein -> siehe oben, nicht alle LCD arbeiten mit 3,3V (als Versorgung oder auf den Datenleitungen)

    in Beispiel vom TO wird 5V benutzt, auch für den PCF8574, OK dieser soll (ist ? habe das nie nachgemessen) OC sein und dann klappt das mit der 5V Versorgung und der PI bekommt davon nix mit braucht unter Umständen aber extra pullup nach 3.3V, es gibt aber Schaltkreise und Platinen die das schon nach 5V ziehen , siehe RTC Uhr vom ps915, die müssen dann ausgelötet werden (wenn möglich) sonst kann der PI beleidigt (oder kaputt) sein.


    ....Schritt 1: Widerstände des RTC Moduls entlöten und anschließen.
    Damit das Modul mit dem Raspberry Pi funktioniert müssen zwei PullUp Widerstände (R2 und R3) entfernt werden.
    Diese entlöten wir mit Hilfe des Lötkolbens. Zusätzlich kann man noch eine Stiftleiste verlöten, damit man das Modul zum Beispiel auf einem Steckbrett/Breadboard nutzten kann.
    Wichtig! Die Widerstände müssen entlötet werden, da die 5V den Raspberry Pi schwer beschädigen könnten.
    ....

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (18. September 2014 um 14:47)

  • Hallo speendo.

    Wozu der ganze Aufwand mit Deiner Schaltung ?...... nicht nötig.

    Mit Deinen Bauteilen müsste das ganze doch so aussehen.

    Das Poti auf dem i²c Controler scheint der Kontrasttrimmer zu sein.
    Ne vernünfige LCD Controlerlib für raspi hab ich noch nicht gefunden.
    Macht man doch selbst...:D ... wenns dann geht, kennst den LCD Controler auswendig..:lol:
    Aber der Lerneffekt ist groß:thumbs1:

    Zu Deinem Helligkeitssensor lies mal Python Foto durch

    gruß root

    Einmal editiert, zuletzt von root (18. September 2014 um 15:27)

  • Danke für die zahlreichen Antworten!

    Verstehe ich das soweit richtig:

    • An VCC gehören jdfs. 5V dran
    • An GND gehört jdfs. die Erdung dran
    • Bei SDA und SCL müssen 2 GPIO-Pins angeschlossen werden

      • Wenn ich das direkt so anschließe, kann zumindest nichts kaputt gehen
      • Aber: I2C und das LCD rechnen (auch bei der Logik) mit 5V und es ist fraglich, ob sie mit den GPIO-Pins vom Raspi (die auf 3,3V arbeiten) was anfangen können
      • Wenn es (auch mit 3,3V) funktioniert, brauch ich keine weiteren Bauteile und es sollte auch nichts kaputt gehen
      • Wenn es nicht funktioniert, brauch ich einen bi-direktionalen Levelkonverter, wie zum Bleistift den da.

    @root:
    Danke für das Bild und für den Photoresistor-Link. Damit sollte es eigentlich gehen.

    Gefällt Dir die LCD-Library, die ich verlinkt habe, nicht?

    dreamshader und jar:
    ein ausdrückliches danke schön auch an euch, ihr habt zu meinem Verständnis(?) davon, wie ich den I2C anschließe, maßgeblich beigetragen!

    Einmal editiert, zuletzt von Speendo (18. September 2014 um 16:37)

  • im Zweifel bei unbekannten I2C Teilen an 5V nachmessen ob mit nix an SCL und SDA keine 5V liegen, dann ist der oc open collector und darf an den PI, wenn wie bei der Uhr 5V liegen müssen wenn möglich die pullups wie gesagt ausgebaut werden, sonst hilft zum PI nur ein level shifter oder eine Schutzschaltung die mehr als 3,3V verhindert.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)


  • im Zweifel bei unbekannten I2C Teilen an 5V nachmessen ob mit nix an SCL und SDA keine 5V liegen, dann ist der oc open collector und darf an den PI, wenn wie bei der Uhr 5V liegen müssen wenn möglich die pullups wie gesagt ausgebaut werden, sonst hilft zum PI nur ein level shifter oder eine Schutzschaltung die mehr als 3,3V verhindert.

    Vielleicht eine dumme Frage, aber kann ich die beiden Pins (SCL und SDA) nachmessen, ohne sie am Raspi anzuschließen?

    Also einfach nur 5V an VCC und Erdung an GND anschließen und dann schauen, ob/wieviel Spannung aus SCL und SDA kommt?

  • genau verstanden, wenn pullups aktiv sind aber keiner datet sollte man 5V oder mehr als 0V messen oder nix wenn keine pullup vorhanden sind

    http://www.ti.com/lit/ds/symlink/pcf8574.pdf

    Seite 3 SDA ist OC open collector kommt keine Spannung raus

    http://cdn.instructables.com/F17/GWKY/HL7WB…BPD9.MEDIUM.jpg
    bei der vorhin erwähnten RTC sieht man die internen R die an VCC gehen welche bei der Uhr dummerweise 5V sein muss

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (18. September 2014 um 17:07)

  • Hab das Display und den I2C-Controller gerade mit dem Arduino getestet.

    Es sieht so aus, als wären auf SLC und SDA tatsächlich 5V. Insofern brauch ich den Level Shifter!

    Danke für den Hinweis, ohne Euch hätt ichs sicher so an den Raspi angeschlossen, und womöglich was kaputt gemacht!

    Ihr habt das Leben eines Raspis gerettet :D

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!