I²C LCD Modul mit Pegelwandler

Heute sind die beiden Pegelwandler und Zubehör (Kabel) für den Anschluss des I2C LCD Moduls an den Raspberry Pi angekommen.I2C PegelwandlerGekauft habe ich die Pegelwandler und das Zubehör bei BitWizard aus Holland (externer Link www.bitwizard.nl) zu einem echt fairen Preis.

Das linke Board (Raspberry Pi serial BoB V2.0) kann wie die 1-Wire Extension direkt auf die GPIO Pins des Raspberry Pi gesteckt werden. Auf dem Board sind I2C Bus, zwei SPI Busse und UART über Pins erreichbar. Das wichtige ist aber, dass 5V (per Solid Jumper auch 3,3V) Geräte angeschlossen werden können.

Rechts noch zusätzlich ein kleiner Pegelwandler (I2C level shifter) der nur die benötigten GPIO Pins blockiert. Er ist für einen 3,3V Master (Raspberry Pi) und 5V Slaves (z. B.LCD Modul) ausgelegt. Die Verbinder werden beigelegt und müssen selbst eingelötet werden.


Kommen wir jetzt zur Verdrahtung. Da die Reihenfolge der Pins vom Raspberry Pi serial BoB V2.0 und dem LCD Modul nicht identisch sind musste ich das mitbestellte 4 Pin Female/Female Kabel wie folgt abändern.Anschlussplan I²C LCD Modul an Raspberry Pi

Und so steuert man das Display an:
Als erstes muss die I²C Schnittstelle aktiviert werden. Damit die benötigten Kernelmodule bei jedem Start geladen werden, muss folgende Datei geöffnet

sudo joe /etc/modules

und folgende Zeilen hinzufügt werden.

i2c-bcm2708
i2c-dev

Zum Laden der Kernelmodule kann der Raspberry Pi jetzt neu gestartet werden oder die Module sofort geladen werden.

sudo modprobe i2c-bcm2708
sudo modprobe i2c-dev

Sinnvoll ist es auch die I²C Tools zu installieren.

sudo apt-get install i2c-tools

Nachdem die Module geladen und die I2C Tools installiert wurden, kann geprüft werden, ob die I2C Schnittstelle vom LCD Modul erkannt wurde.

sudo i2cdetect -y 1

Bei mir hat das Display die ID 0x27 und somit sieht die Ausgabe bei mir wie folgt aus:

     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: -- -- -- -- -- -- -- --

Im Download Bereich liegen die Skripte die ich vom Blog (externer Link: www.recantha.co.uk) habe. Das Skript hat sofort funktioniert, vorausgesetzt man weiß das die Programmstruktur eines Python Skripts durch die Einrücktiefe gebildet wird, was ich zuerst leider nicht wusste 🙁 . Am besten kopiert man die Skripte nach dem entpacken direkt mit WinSCP auf den Raspberry Pi. So kann auch nichts mit Copy & Paste schiefgehen 🙂 .

In der lcd.py wird definiert was auf dem Display stehen soll. Zur Info: Wenn mehr als 20 Zeichen eingetragen werden, wird die nächste Zeile genutzt. Also nicht wundern wenn der Text zu lang ist und der Rest in der nächsten Zeile auftaucht.

Damit das Skript ausgeführt werden kann, muss noch das Python Modul SMBUS installiert werden.

sudo apt-get install python-smbus

Jetzt kann das Skript ausgeführt werden.

sudo python lcd.py

So sieht es auf dem LCD Modul aus wenn das Skript ausgeführt wurde.

I2C LCD Modul am Raspberry Pi

Später, vorausgesetzt ich komme mit Python klar, werde ich dann noch einen Beitrag schreiben wie das Display in die Hausautomatisierung eingebunden werden kann. Ich denke es wird wieder eine HTTP-Schnittstelle werden, die dann direkt über den Loxone Miniserver (oder anderem Hausautomatisierungssystem) angesprochen werden kann.

2 Gedanken zu „I²C LCD Modul mit Pegelwandler“

  1. Ui-ui-ui – schick!
    Mir fällt bei sowas immer direkt lcdproc ein (lcd-server/client unter Linux).
    Fiel raus, da oversized?

    Grüße,
    Christian

    1. Hi, danke für den Tipp. Klingt interessant, dass muss ich mir nochmal genauer anschauen. I2C Support scheint es ja schon mal zu geben …

      Gruß
      Stefan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert