Dienstag, 24. April 2018

Raspberry Pi - LCD Display (HD44780) ansteuern und Temperatur auslesen

Vor kurzem habe ich mir das LCD Display HD44780 für den Pi bei Amazon (HD44780 1602 LCD Module Display Anzeigen 2X16 Zeichen) für 2,33 EUR gekauft.

In diesem Artikel beschreibe ich, wie man das Display ansteuern kann und z.B. zur Anzeige von Datum, Uhrzeit und Temperatur (http://sebastianhemel.blogspot.de/2015/01/temperatursensor-ds18b20-raspberry-pi.html) verwenden kann.

Bitte auch meine Hinweise am Ende des Artikels beachten!

Es hat zwei Zeilen mit je 16 Zeichen und verfügt über 16 Kontakte. Siehe auch folgende Grafik inkl. der korrekten Zuordnung für die Verkabelung:


Die Kabel vom Display zum Pi habe ich nicht gelötet, sondern nur gesteckt. Hierfür habe ich Jumperkabel verwendet und diese über Listerklemmen verbunden. Alternativ kann man dies auch über ein Laborsteckboard realisieren.

Folgender Aufbau ergibt sich inklusive Verwendung des Temperatursensor DS18B20:


Wenn die Verkabelung korrekt ist, kann der Pi gestartet werde. Das LCD-Display sollte dann sofort aufleuchten (ersten Zeile alle Pixel angeschaltet, in der zweiten Zeile sollten alle dunkel bleiben).

Anschließend muss noch das RPi.GPIO Package für python installiert werden:

sudo apt-get install python-pip
sudo pip install RPi.GPIO

oder

Manueller Download unter https://archive.raspberrypi.org/debian/pool/main/r/rpi.gpio/:

wget https://archive.raspberrypi.org/debian/pool/main/r/rpi.gpio/python-rpi.gpio_0.6.3~jessie-1_armhf.deb
dpkg -i python-rpi.gpio_0.3.1a-1_armhf.deb

Mit der folgenden python Datei, kann das Display getestet werden:

wget http://www.shemel.de/download/raspberry/hd44780_test.py
chmod +x hd44780_test.py
python hd44780_test.py
(Quelle: https://tutorials-raspberrypi.de/raspberry-pi-lcd-display-16x2-hd44780/)

Mit dem folgenden Quellcode kann jetzt der Temperatursensor DS18B20 ausgelesen werden und die aktuelle Temperatur steht im Display:

wget http://www.shemel.de/download/raspberry/display-temp.py
chmod +x display-temp.py 
python display-temp.py  
(Quelle: http://www.schnatterente.net/code/raspberrypi/temperature.py)

...
        Temp = GetTemp() # Temperatur messen....

        lcd_send_byte(LCD_LINE_1, LCD_CMD)
        lcd_message("Temperatur")
        lcd_send_byte(LCD_LINE_2, LCD_CMD)
        lcd_message(Temp+chr(223)+"Celsius")

...

Wichtige Hinweise

  • Generell kann es zu dem Problem kommen, dass Buchstaben teilweise nicht korrekt angezeigt werden. Dieses Problem hatte ich immer wieder, wenn ich nach LCD_LINE_1, LCD_LINE_2 weitere Informationen anzeigen wollte. Dies ist vermutlich produktionsbedingt bei diesem "billigen" Display immer wieder mal der Fall.
  • Das Display reagiert teilweise auch sehr "feinfühlig" auf Spannung. Verwendet man also ein günstiges Netzteil, was keine konstante Spannung von 5V liefert, kann es auch hier zu Anzeigeprobleme kommen.