FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Hakter51 am 02 Dezember 2015, 18:52:38

Titel: Erfahrungsbericht LCD Display an I2C Bus mit Verbesserungsvorschlägen
Beitrag von: Hakter51 am 02 Dezember 2015, 18:52:38
Hallo top FHEM Forum,

Habe mir vor längererzeit ein LED Dispaly mit dem Bausatz LCD/I²C-Modul von Pollin gekauft und endlich die Zeit gefunden dieses auch in betrieb zu nehmen. Nun mein Bericht damit die LCDdisplays auch bei anderen schnell funktionieren
Ein großes Dank an den Programmierer vom Modul I2C_LCD.

Da das Display nicht direkt funktionierte mein kleiner Erfahrungsbericht:
- Zur Sicherheit des Raspberry Pi habe ich ein Pegelwandler 3,3V zu 5,0V verwendet.

- Die I2C-Bus Adresse wird in manchen FHEM Modulen in Hex verwendet in diesem Modul Dezimal (leider nicht Dokumentiert). Um die Adresse herauszufinden kann die Adressen in HEX über "sudo i2cdetect -y 1" ausgelesen werden. Die Umrechnung geht im Kopf oder mit dem Windows Rechner in der Programmieransicht und dies recht fix ;)  "HEX => Dezimal".

- Das Modul "I2C_LCD" hat nach der Modul-Inizalisierung ein andere Pin Aufteilung als meine Hardware. Daher änderte ich das "pinMapping" wie im Codeschnipsel unten beschrieben. Und ich konnte endlich nach justage des Kontrastes "Hallo Welt!" schreiben.

- Leider ist mir beim einschalten der Hintergrundbeleuchtung aufgefallen, dass diese nicht angeht sondern beim ausschalten. Dies liegt an meiner Hardware, es wurde ein PNP-Transistor verbaut. Dieser schaltet bei Logisch 0 = 0V "LED ein" und bei Logisch 1 = 5V "LED aus".

- zudem werden bei meinem 16x4 LCD Display Zeile 3&4 5 Spalten eingerückt. Leider habe ich noch nicht rausgefunden warum dies so ist.

- Texte schreiben/senden.  Mit "set I2C_LCD1 text Hallo Welt!" wird die Nachricht an das LCD gesendet.  Hierbei werden die Zeichen von oben überschrieben, erst 1. Zeile (0.te Zeile im Programm) dann 2. Zeile (1.te Zeile). Wenn das Display vorher gelöscht werden soll, kann vorher das attribut "attr I2C_LCD1 autoClear on" gesetzt werden. Oder der Befehl "set I2C_LCD1 clear" wird vorm Text schreiben gesendet.

- Texte an einer bestimmten Stelle schreiben. Mit "set I2C_LCD1 writeXY 0,1,8,0 1234567890" wird in zweiter Zeile die Zeilen "12345678" geschrieben die Zeichen 90 werden nicht geschrieben da diese über die 8 Länge hinausgehen. Wie in der Hilfe Dokumentiert: "set <name> writeXY x-pos,y-pos,len[,l] <text to be displayed> "

- Das Atrebut "attr I2C_LCD1 blink on" schaltet den Blinkenden Curser ein. ...wo steht der Curser... ach da ;)

- mit "set I2C_LCD curser 0,1" wird der Curser an die Position 2.te Zeile 1.te Spalte gestellt.  "set <name> curser x-pos,y-pos"



nun meine Fragen an die Profis.
* Könnte man die Möglichkeit schaffen die LED logik in der Software zu drehen "LED ON = LOW 0V"  z.B. mit attr <name> BackLightStateNegation.
* Zudem ist es möglich die Hintrgrundbeleuchtung automatisch aus zu schalten sobald eine z.B. Stunde seit der letzten Nachricht vergangen ist??
* Ist es möglich mit dem Modul I2C_LCD eine Lauftext zu erzeugen?





# I2C Bus Definiren 0 oder 1
#define <name> RPII2C <I2C Bus Number>
define RPii2c_1 RPII2C 1

# I2C Bus Teilnehmer Definiren - Zeile und Spalten des Displays angeben  - I2C-Bus Adresse muss umgerechnet werden von HEX in Dezimal
#define <name> I2C_LCD <size-x> <size-y> <i2c-address>
define I2C_LCD1 I2C_LCD 16 4 32

# attr <name> pinMapping P0=RS,P1=RW,P2=E,P3=LED,P4=D4,P5=D5,P6=D6,P7=D7 - Pinbelegung ändern
attr I2C_LCD1 pinMapping P0=D4,P1=D5,P2=D6,P3=D7,P4=RS,P5=RW,P6=E,P7=LED

# set <name> text <text>
set I2C_LCD1 text Hallo Welt



Verwendete Hardware:
Raspberry PI 2 Schnittstelle RPii2c1  Pin1=3,3v, Pin2=5,0V, Pin3=SDA1, Pin5=SCL1, Pin9=GND
Bidirektionaler Pegelwandler von 3,3v zu 5V  - eBay
LED Dispaly 16x4 mit dem Bausatz LCDzuI²C,  LCD Display im 4 DatenPin Modus
http://www.pollin.de/shop/dt/NDU4OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_LCD_I_C_Modul.html (http://www.pollin.de/shop/dt/NDU4OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_LCD_I_C_Modul.html)
o.
http://www.ebay.de/bhp/i2c-lcd (http://www.ebay.de/bhp/i2c-lcd)
Titel: Antw:Erfahrungsbericht LCD Display an I2C Bus mit Verbesserungsvorschlägen
Beitrag von: spike08122 am 02 Dezember 2015, 21:42:43
Meine Erfahrungen mit einem Display am PI (20x4)

Also ich bin zwar kein Profi, aber ich hatte auch einige Zeit ein I2C Display an meinem PI. Ich wollte da verschiedene Sytemwerte anzeigen lassen.

Zwischenzeitlich habe ich es aber wieder demontiert, die Schaltungen über FHEM funktionierten nicht zuverlässig. Ich weiß zwar nicht, ob das der Grund war, aber seit dem funktioniert alles sehr zuverlässig.

Wollte Dir das nur mitteilen, falls Du ähnliche Probleme hast.

LG
Titel: Antw:Erfahrungsbericht LCD Display an I2C Bus mit Verbesserungsvorschlägen
Beitrag von: majorshark am 17 Dezember 2015, 08:42:41
ZitatZudem ist es möglich die Hintrgrundbeleuchtung automatisch aus zu schalten sobald eine z.B. Stunde seit der letzten Nachricht vergangen ist??

... habe ich mit einem DOIF und Timer im DOIF gelöst.

define I2C_LCD1_Backlight DOIF ([I2C_LCD1] ne '') (set I2C_LCD1 backlight off)(set I2C_LCD1 backlight on)
attr I2C_LCD1_Backlight do resetwait
attr I2C_LCD1_Backlight room LCD
attr I2C_LCD1_Backlight wait wait 0,15


Wenn neuer Text in das Display geschrieben wird geht das Backlight für 15 Sekunden an.
Titel: Antw:Erfahrungsbericht LCD Display an I2C Bus mit Verbesserungsvorschlägen
Beitrag von: Hakter51 am 26 Dezember 2015, 09:34:25
Danke für die Tipps
Titel: Antw:Erfahrungsbericht LCD Display an I2C Bus mit Verbesserungsvorschlägen
Beitrag von: Fischei am 28 April 2017, 21:02:20
Hallo Hakter51,

könntest du mir evtl kurz erklären, wie du das mit der Pin-Aufteilung raus bekommen hast? Hab folgendes https://www.amazon.de/gp/product/B01GPUMP9C/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 (https://www.amazon.de/gp/product/B01GPUMP9C/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Display an meinem Raspberry angeschlossen. Leider funktioniert es bei mir nicht. Mit der Konsole kann ich den Text ändern aber über FHEm funtkioniert es nicht.

Adresse sollte auch passen:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- 27 -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Könntest du mir da evtl weiterhelfen? Es kommt keine Fehlermeldung aber die Anzeige am Display ändert sich auch nicht. Hier mal meine fhem.cfg:


define RPii2c_1 RPII2C 1
define I2C_LCD1 I2C_LCD 20 4 39
# attr <name> pinMapping P0=RS,P1=RW,P2=E,P3=LED,P4=D4,P5=D5,P6=D6,P7=D7 - Pinbelegung ändern
attr I2C_LCD1 pinMapping P0=D4,P1=D5,P2=D6,P3=D7,P4=RS,P5=RW,P6=E,P7=LED

set I2C_LCD1 writeXY 0,1,8,0 1234567890

Danke dir!

Zitat von: Hakter51 am 02 Dezember 2015, 18:52:38

- Das Modul "I2C_LCD" hat nach der Modul-Inizalisierung ein andere Pin Aufteilung als meine Hardware. Daher änderte ich das "pinMapping" wie im Codeschnipsel unten beschrieben. Und ich konnte endlich nach justage des Kontrastes "Hallo Welt!" schreiben.
Titel: Antw:Erfahrungsbericht LCD Display an I2C Bus mit Verbesserungsvorschlägen
Beitrag von: klausw am 29 April 2017, 15:04:17
Zitat von: Fischei am 28 April 2017, 21:02:20
könntest du mir evtl kurz erklären, wie du das mit der Pin-Aufteilung raus bekommen hast? Hab folgendes https://www.amazon.de/gp/product/B01GPUMP9C/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 (https://www.amazon.de/gp/product/B01GPUMP9C/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) Display an meinem Raspberry angeschlossen. Leider funktioniert es bei mir nicht. Mit der Konsole kann ich den Text ändern aber über FHEm funtkioniert es nicht.


define RPii2c_1 RPII2C 1
define I2C_LCD1 I2C_LCD 20 4 39
# attr <name> pinMapping P0=RS,P1=RW,P2=E,P3=LED,P4=D4,P5=D5,P6=D6,P7=D7 - Pinbelegung ändern
attr I2C_LCD1 pinMapping P0=D4,P1=D5,P2=D6,P3=D7,P4=RS,P5=RW,P6=E,P7=LED

set I2C_LCD1 writeXY 0,1,8,0 1234567890

Auf der Amazon Seite lässt sich in den Kundenrezessionen folgendes finden:
P0-RS, P1-R/W, P2-EN, P3-Backlight, P4-D4, P5-D5, P6-D6, P7-D7

Das würde zur auskommentierten pinMapping Zeile passen.