Raspberry Pi – LCD display 1602 / 2004 via GPIO I2C

 Hardware

YM2004A LCD Display 2x20 - 4x20

BESTEL NU! (16×2)
BESTEL NU! (20×4)

Dit zijn veelal YM2004A LCD displays, ze gebruiken en zijn gestandaardiseerd op de Hitachi HD44780 driver.
Het display heeft 16 pinnen en word parallel aangestuurd, normaliter zijn er veel aansluitingen voor nodig om het display te gebruiken, er is een HD44780 I2C converter module die je kan gebruiken om maar liefst met 4 draden het display aan te sturen:

Display LCD I2C interface module

Aansluiten op de Raspberry Pi

Sluit het display aan zoals aangegeven op onderstaand schema:

LCD I2C interface module op raspberry pi

Raspberry Pi pin:I2C module pin:
+5v+5v
GNDGND
3 (GPIO2) SDASDA
5 (GPIO3) SCLSCL

Ps. Altijd de pinout van je Raspberry Pi controleren, deze kan verschillen per versie.

Wat moetje doen?

1) I2C aanzetten op de Pi.
2) SMBUS module installeren voor Python:

Om de I2C bus in Python te gebruiken moet je een module installeren, genaamd SMBUS, dit kan via APT-GET met het commando:  sudo apt-get install python-smbus

Je kan dan de module importeren in python door middel van: import smbus


Python script module #1 (2015) (werkt beter met 2004 displays)

Er is een script (module) gemaakt om eenvoudig met het display te kunnen communiceren via de I2C bus, het bestand I2C_LCD_driver.py:

Vul hierboven in het bestand het juiste i2c adres in:

ADDRESS = 0x27

Script

Het script lcd.py om regels naar het display te schrijven:

Start het script met: python lcd.py

Resultaat:

Display LCD I2C interface module i2c resultaat


Python script module #2 (verouderd)

Er is een script (module) gemaakt om eenvoudig met het display te kunnen communiceren via de I2C bus, het bestand pylcdlib.py:

Script

Het script lcd.py om regels naar het display te schrijven:

Start het script met: python lcd.py

Resultaat:

Display LCD I2C interface module i2c resultaat


I2C adres:

Meestal is het adres 0x27, mocht dit anders zijn dan kun je vanuit de Raspberry Pi dit commando uitvoeren om te kijken welk I2C adressen er zijn gevonden:  sudo i2cdetect -y 1

Foutmelding

Krijg je deze foutmelding: IOError: [Errno 5] Input/output error, dat is de I2C bus nog niet (juist) geïnitialiseerd, je kan daarvoor het volgende trucje toepassen in python:

I2C adres wijzigen

Mocht je meerdere displays of I2C apparaten willen aansluiten, dan kun je het I2C adres van de chip aanpassen, dit moet hardwarematig gebeuren door doorverbindingen te maken op de I2C print:

Display LCD I2C interface module i2c adres aanpassen

I2C adresA0A1A2
0x20000
0x21100
0x22010
0x23110
0x24001
0x25101
0x26011
0x27111

(geen doorverbinding = 1)

Bronnen:
raspberrypi.org
stackoverflow.com
circuitbasics.com