LCD-Display an I2C

sensebox-mcu

#1

Hat schon jemand versucht, ein LCD-Display anzuschließen. Das vorhandene hat ein I2C-Interface.
Die Hex-Adressen sind auf 40 - 4e einstellbar.

Gruß Raimund / rmksense


#2

Hallo @rmksense,

an die senseBox MCU lassen sich nahezu alle I2C Bauteile anschließen. Wichtig ist, dass das Modul 5V Spannung verträgt. Um welches LCD-Display handelt es sich genau?

Viele Grüße
Mario


#3

Hallo Mario,

Dank für Deine Reaktion.

LCD-Display (Pollin): TC1602A-09

aufgesteckt auf ein Adaptermodul (Pollin) zum Anschluss an I2C-Bus
mit PCF8574P als I-O-Expander mit 5V Anschluss.

Die auf dem Adapter einstellbaren Adressen (Jumper) sind
x04 - x4E.

Das Modul wird bei einem Test der I2C-Schnittstellen auf dem Sense-Board
erkannt, die ausgegebene Adresse entspricht aber nicht einer der
einstellbaren Adressen.

Muss die Adresse identisch sein ?

Die Frage bleibt allerdings, wie kann ich Daten dahin zur Anzeige
bringen. Die Befehle für das OLED-Display werden sicher nicht klappen.

Schöne Grüße, Raimund


#4

Hallo Mario,

die ertse Adresse ist natürlich x40 und NICHT x04.

Raimund


#5

Hallo Raimund,

genau mit dem Code für das OLED Display wird es nicht gehen. Das Display scheint eines der üblichen 16x2 für den Arduino zu sein. Du kannst folgende Anleitung mal ausprobieren: https://create.arduino.cc/projecthub/Oniichan_is_ded/lcd-i2c-tutorial-664e5a

Wäre schön, wenn du berichten könntest, falls es direkt funktioniert

Beste Grüße
Mario


#6

Hallo Mario,

habe nach Deinem Vorschlag Versuche gemacht, die aber nicht
von endgültigem Erfolg gekrönt waren.
Einzig die Hintergrund-Beleuchtung konnte ich ein- und ausschalten.
Die Versuche auch Daten zu übertragen, gelang nicht.
Es gibt 'ne Menge Foren-Einträge im Netz, wollte aber dem nicht
ausschließlich nachgehen.
Die von mir noch auszubauende Wetterstation liegt mir ein klein
wenig näher.
Trotzdem wird das nicht vergessen.
Vielen Dank für die Hinweise.

Gruß, Raimund


#7

Hallo rmksense,

Das erstes was ich meiner SenseBox spendiert habe war eine RTC und ein LCD Display. Läuft beides Super. Ich benütze das Adafruit i2c/spi LCD Backpack ADA292 und ein gewöhnliches 20x4 LCD Display (hat dann die i2c Adr 0x20) zusammen mit der entsprechenden Adafruit LCD Lib. Ach ja natürlich nicht mit Blocky sondern in der normalen Arduino C bzw. C++ Umgebung. Also lcd.print(ln)
Viele Grüsse
Siegfried


#8

Hallo Siegfried,

vielen Dank für Deine Antwort.
Ich nutze als LCD-Display eines von Pollin mit aufgesteckter
Platine für den I2C-Anschluss.
In einer Info zu dieser speziellen Anordnung gabs im Internet
einen Hinweis auf fehlerhafte Anschlüsse (Enable, RW, RegSelect),
die in der zugehörigen LiquidCrystal_I2C.h in den zugehörigen
#define-Anweisungen verändert werden sollten.
Dennoch gabs nach den Änderungen keine Datenanzeigen.
Wie gesagt, ich kann nur die Hintergrungbeleuchtung beeinflussen.
Es ist etwas frustrierend, kein Ergebnis zu erzielen, lege es also das
mal etwas beiseite und hoffe auf weitere Infos.

Dennoch interessiert mich Deine RTC.
Da ich einen Regenmengenmesser dabei bin anzuschließen - noch im Ex-
perimentier- und Aufbaustadium -, muss ich folglich eine Uhr mitlaufen
lassen, da diese Messungen auch einen zeitlichen Bezug haben
( mm Wasser pro qm pro Zeiteinheit -z.B. Tag)
Zu diesem Zweck hatte ich mir das GPS-Modul der SBox besorgt, um damit
die Zeit zu bestimmen.
Welches RTC-Modul setzt Du ein ?

Schöne Grüße,

Raimund


#9

Guten Tag Raimund,

ja, ich habe es auch versucht, das GPS-Modul für die Erzeugung des Timestamp zu benützen. Leider musste ich feststellen, das ich auch in unserem Wintergarten keinen Empfang habe. Also habe ich das Projekt GPS auf Eis gelegt bis ich im Freien wieder werkeln kann.
Ich habe am Raspi gute Erfahrungen mit dem DS3231 Chip gemacht, so daß ich mir von Adafruit das DS3231 i2c Modul für meine SenseBox besorgt habe. Als Lib verwende ich ebenfalls die dazugehörigen RTCLib von Adafruit. Die baut auf eine Entwicklung von JeeLabs auf und ist wirklich super. Das Modul wurde auf UTC Zeit gesetzt und zeigt diese auch an. (Zeit zum Setzen per WiFi vom NTP Server aus dem Internet). Die lokale Zeit bekomme ich dann mit Hilfe der Lib Timezone mit automatischen Wechsel von MEZ/MESZ ( hoffe ich wenigste, das es funktioniert!).
Bis jetzt kann ich nur sagen sehr, sehr genau (Batterie gebuffert).

Ich hoffe ich konnte dir ein bisschen helfen

Viele Grüsse

Siegfried


#10

Hallo Siegfried,

Dank für Deine Info.

Das SenseGPS läuft gut bei mir, aber es bekommt
nur dann Empfang, wenn ich es draussen (= 10cm vor
meiner Terrassentür (Glas)) platziere.
Lege ich es direkt innen vor die Türe = an die Scheibe
auf den inneren Holzrahmen (Abstand vom obigen Standort = 30cm),
habe ich keinen Empfang, auch nach Stunden nicht.

Der Vorteil dieser GPS-Modul-Lösung ist, dass
a) ich keine Batterie zum Betrieb brauche und
b) die Uhrzeit auch nach Ausfall der Betriebsversorgung
wieder geholt werden kann.

Bei einer GPS-gesteuerten Uhr, die ich mit einem Bau-
satz von Elektor gebaut habe, gibt es diese Empfangsprobleme
nicht. Sie hat ein sehr empfindliches GPS-Modul, dass es schafft,
sich mitten im Haus die GPS-Daten zu holen.
Es gibt offensichtlich unterschiedliche Bauelemente für diesen
Zweck.
Da aber die Sensebox hauptsächlich für Aussen gedacht ist, macht
das unempfindliche GPS-Modul wohl nicht soviel Kummer.

Gruß, Raimund


#11

Hallo Mario,

es hat mit einem anderen LCD-Display direkt geklappt.

Das neue LCD ist 20x4 und wurde von JoyIt vertrieben, habe
es kürzlich von Pollin bekommen.
Das I2C-Modul ist auf der Rückseite fest verbunden/verlötet
und ist nicht ein aufsteckbares Modul.

Bibliothek-Einbindung: #include <LiquidCrystal_I2C.h>

Da die Hintergrund-Beleuchtung > 30mA benötigt, werde
ich die Versorgung über die MCU-Schnittstelle nicht
belassen, wenn in der Wetterstation alle Sensoren usw.
versorgt werden müssen.

Da ist auf dem I2C-Modul ein Jumper, über den die
Beleuchtung von der I2C-Schnittstelle abgeschaltet
werden kann, über einen dann freien Steck-Pin kann extern
versorgt werden.

Es gibt also Hoffnung…

Gruß, Raimund


#12

Hallo Raimund,

super, dass es mit einem anderen Display funktioniert. Gibt es einen speziellen Grund wieso du ein LCD Display und nicht das OLED Display verwenden willst?

Viele Grüße
Mario


#13

Hallo Mario,

das OLED-Display sollte eigentlich dazu herhalten, ohne den PC
die Wetterdaten abzulesen.

Der Grund für das LCD ist folgender Fehler, den ich schon Anfang
Mai Jan Wirwahn geschildert hatte:

Das OLED-Display fällt aus, wenn mein Staubsensor seine
Arbeit aufnimmt. Dieser Effekt ist nicht genau zuzuordnen,
will heißen, es kann der 1. oder irgend ein anderer Start
des Staubsensors sein. Dennoch laufen alle weiteren Messungen
weiter.
Der Verdacht eines größeren Spannungseinbruchs (Lüftereinsatz),
der dies verursacht haben könnte, habe ich dadurch versucht zu
vermeiden, dass ich den Lüfter testweise abklemmte.
Nur ein Neustart der Station wiederbelebte das OLED, aber der
Effekt kommt wieder.
Also dachte ich mir, versuche es mal mit 'nem LCD, vielleicht
gibt es den Effekt dabei nicht, obwohl es ja auch über den I2C-
Anschluss gesteuert wird.
Da das LCD nicht einfach noch zusätzlich in das Gehäuse meiner
Wetterstation passt, muss ich noch etwas “Hardware” umbauen, um
über das Ergebnis berichten zu können.

Bis jetzt hat Jan noch nicht geantwortet, vielleicht ist das
nicht so dringend oder er hat keine Zeit.

Übrigens konnte ich es doch nicht lassen, den Fehler auf dem
Zusatzboard für den LCD-I2C-Anschluss zu orten:
Die Anschlüsse sind falsch verdrahtet - es landen die I2C-
Adress-Anschlüsse auf der Steckleiste (16pol) für das LCD, dort
wo eigentlich die Datenanschlüsse sind.
Das Bord in einer solchen Verfassung zu verkaufen (wer hat das
end-getestet ?), hat schon Ärger hinterlassen.

Mit einem anderen I2C-LCD-Board laufen jetzt alle vorhandenen
LCDs, nicht nur das neue 4-zeilige.

Sollte noch Interesse bestehen, den OLED-Fehler zu erforschen,
ich schicke nochmal meinen Sketch, der sich im Laufe meiner
Arbeiten verändert hat (Unterprozeduren).
Ich werde mit diesem neuen Sketch aber das erstmal selbst ver-
suchen und mich melden.

Schöne Grüße, Raimund


#14

Hallo Raimund,

ich habe das gleiche LCD-Display TC1602A-09 von Pollin und wie der Zufall so will, habe ich auch gerade veruscht dieses mit einem zugekauften I2C auf LCD-Adapter (basierend auf dem IC PCF8574) in Betrieb zu nehmen. Leider auch ohne Erfolg. Nur Display an/aus geht, da diese Funktion nicht über den IC des Displays gesteuert wird, sondern direkt vom Port-Expander IC PCF8574.

Ich hab mir mal mit dem Oszilloskop die Datenausgänge P0 bis P7 des PCF8574 angeschaut und gemerkt, dass diese auf unter 2V einbrechen (bei High) und es somit kein Wunder ist, dass das LCD nicht funktioniert.
Der PCF8574 kann nur 100µA speisen, aber dafür mehrere mA nach GND schalten. Also kann ich mir vorstellen, dass man noch für jeden der 7 Pins (D7-D4, RS, EN, R/W) am Display Pullup-Widerstände nach 5V bräuchte, die bei den meisten anderen LCDs dann eventuell schon integriert sind. Eventuell würde es so funktionieren.


#15

Hallo tnn85 (habe leider keinen Namen gefunden),

das Zusatz-I2C-Modul von Pollin ist wohl nach meinen Messungen falsch ver-
drahtet. Ich habe es zum Altkram gelegt und mich geärgert wegen des
fehlerhaften Produktes und der unsinnigen Arbeit, den Fehler zu finden.
Komischerweise gab es im Internet auch keinen nutzbaren Eintrag zu diesem
Zusatzmodul.
In Aachen gibt es den Laden AG-Elektronik (agelektronik.de), der vertreibt für
3,90 EUR I2C-Module, die man nutzen kann. Getestet habe ich eines, welches
ich von einem Pollin 4-Zeilen LCD abgelöst habe. Dieses 4 Zeilen-LCD hat nämlich direkt ohne Probleme funktioniert.
Das Ablösen war etwas heikel, die vielen Stifte abzulöten geht ohne gute
Entlötvorrichtung wohl kaum, deshalb habe ich die Stifte mit meiner feinen
Laubsäge direkt an der Platine abgesägt und dann einzeln ausgelötet.
Ich denke, diese Module aus Aachen könnten für Dich auch eine Lösung sein.
Schöne Grüße und Dank für Deine Rückmeldung,
Raimund


#16

Hallo Raimund,
hab das nochmal mit den Pullups getestet und es war nichts zu machen. Ich glaub ich habe das LCD schon durch mein Entlöten mit der Rework-Station getötet. Ich hatte das LCD nämlich vorher schon ein paar mal in Benutztung (ohne Probleme), aber da hab ich es nur mit dem Standard 4-Bit-Interface angesteuert.
Deine Methode mit dem Sägen und einzeln auslöten ist wahrscheinlich die Richtige, da ich den Adapter dann auch in ein 20x4 LCD einlöten wollte und dieses dabei auch an einer Stelle zerstört. Lange rede kurzer Sinn. Ich hab mir in China für 12€ 10 Stück von den kleinen 16x2 Displays bestellt. Ich hab auch mit dem Pollin-Teil zu viel Zeit verschwendet.