Raspberry Pi – LCD Display ansteuern

LCD-Display am Raspberry Pi ansteuern

Ein 16×2 Zeichen LCD-Display am Raspberry Pi – ein Klassiker. Uhrzeit, IP-Adresse, Sensorwerte oder Statusmeldungen direkt auf einem kleinen Display ausgeben, ohne Monitor und ohne SSH-Verbindung. In diesem Tutorial zeige ich euch zwei Methoden: die direkte GPIO-Verkabelung (wie im Original von 2014) und die viel einfachere I2C-Methode mit einem PCF8574-Adapter. Fuer beide verwenden wir die moderne Python-Library RPLCD – kein eigener LCD-Code mehr noetig.

Material

Methode 1 – Direkte GPIO-Verkabelung:

Methode 2 – I2C-Adapter (empfohlen):

Die I2C-Methode ist deutlich einfacher: Nur 4 Kabel statt 11, kein Potentiometer noetig (der Kontrast wird per Software eingestellt) und der Code ist sauberer. Wenn ihr noch kein Display habt, kauft direkt ein Set mit PCF8574-Adapter.

Methode 1: Verkabelung direkt ueber GPIO

Das HD44780-LCD hat 16 Pins. Wir verwenden den 4-Bit-Modus, daher werden nur die Datenpins D4-D7 verdrahtet. Die Pinbelegung hier entspricht dem bewaeehrten Original-Setup:

LCD Pin LCD Funktion Verbindung Raspberry Pi PIN
01 GND (VSS) GND PIN 6
02 +5V (VDD) 5V PIN 2
03 Kontrast (V0) Poti (mittlerer Pin) – (Poti-Enden an 5V/GND)
04 RS GPIO7 PIN 26
05 RW GND (nur schreiben) PIN 6
06 E (Enable) GPIO8 PIN 24
07–10 D0–D3 nicht benoetigt (4-Bit-Modus)
11 D4 GPIO25 PIN 22
12 D5 GPIO24 PIN 18
13 D6 GPIO23 PIN 16
14 D7 GPIO18 PIN 12
15 LED+ (Hintergrundbeleuchtung) 5V PIN 2
16 LED– (Hintergrundbeleuchtung) GND PIN 6

Methode 2: Verkabelung mit I2C-Adapter (empfohlen)

Der PCF8574 I2C-Adapter sitzt direkt auf der Rueckseite des LCD-Displays und reduziert die Verkabelung auf nur 4 Kabel:

I2C-Adapter Pin Raspberry Pi PIN-Nummer
GND GND PIN 6
VCC 5V PIN 2
SDA SDA (GPIO2) PIN 3
SCL SCL (GPIO3) PIN 5

I2C aktivieren (nur fuer Methode 2)

I2C muss auf dem Raspberry Pi aktiviert werden:

Navigiert zu Interface Options → I2C → Yes. Dann rebooten:

Nach dem Neustart koennt ihr pruefen, ob der I2C-Adapter erkannt wird:

Ihr solltet bei Adresse 0x27 (oder 0x3f bei manchen Modulen) einen Eintrag sehen. Notiert euch die Adresse – die braucht ihr im Python-Script.

RPLCD installieren

Statt eigenem LCD-Code verwenden wir heute die ausgereifte Python-Library RPLCD, die beide Methoden unterstuetzt:

Auf neueren Raspberry Pi OS Versionen (Bookworm) kann pip ohne --break-system-packages Probleme machen. Falls noetig:

Oder sauberer mit einer virtuellen Umgebung:

Python-Script: Direkte GPIO-Methode

Fuer die direkte Verkabelung nutzen wir RPLCD.gpio:

Speichert das Script als /home/pi/lcd.py und testet es:

Falls ihr eine dunkle Flaeche seht aber keinen Text – am Potentiometer drehen bis der Kontrast stimmt.

Python-Script: I2C-Methode

Fuer den I2C-Adapter ist der Code noch einfacher:

Falls eure I2C-Adresse 0x3f ist, ersetzt einfach 0x27 entsprechend.

Uhrzeit und IP-Adresse anzeigen

Das ist das klassische „Proof of concept“ – Uhrzeit in Zeile 1, IP-Adresse in Zeile 2, aktualisiert jede Sekunde. Hier die I2C-Version (fuer GPIO-Methode einfach den LCD-Import und die Initialisierung tauschen):

Speichert als /home/pi/lcd.py und testet:

Autostart via systemd

Statt dem alten update-rc.d verwenden wir heute systemd-Services. Erstellt eine neue Service-Datei:

Fuegt folgenden Inhalt ein:

Speichert mit STRG+X, Y, ENTER. Dann den Service aktivieren und starten:

Den Status pruefen:

Bei der virtuellen Umgebung ersetzt ihr ExecStart durch:

Fazit

Mit RPLCD und einem I2C-Adapter ist die LCD-Ansteuerung am Raspberry Pi heute deutlich einfacher als noch 2014. Vier Kabel, ein paar Zeilen Python, und ihr habt eine funktionsfaehige Anzeige. Wer das Display dauerhaft betreiben moechte, sollte auf die I2C-Variante setzen – weniger Kabelsalat, stabiler und einfacher zu erweitern.

Ähnliche Beiträge