Contrôlez un écran LCD HD44780 via I2C avec le Raspberry Pi

Les écrans à caractères LCD sont un moyen simple et économique d’afficher un texte. Grâce au contrôleur HD44780, la commande des modules est devenue très simple. Cependant, il faut occuper de nombreux GPIO pour cela. Une alternative est le bus de données I2C, ce qui signifie que seuls deux GPIO sont utilisés.

Dans ce tutoriel, un écran 20×04 à caractères HD44780 est contrôlé à l’aide d’un adaptateur d’affichage I2C. Un convertisseur logique est utilisé pour ajuster le niveau de tension du module sans endommager les GPIO.

 

Accessoires

Pour accéder à un écran HD47780 via I²C, j’ai utilisé les accessoires suivants :

 

Raspberry Pi hd44780 i2c display

Les tiges de l’adaptateur LCD I2C s’adaptent parfaitement à l’écran et peuvent être soudées. Certains écrans sont déjà livrés avec un adaptateur I²C soudé.

 

Installation

Les GPIO Raspberry Pi ne peuvent pas obtenir plus de 3,3 V de tension, mais il y a quelques modules (comme cet écran), qui envoient et veulent recevoir des signaux de 5 V. Pour cela, un convertisseur de niveau logique peut être utilisé, lequel a deux côtés. D’un côté, les connexions qui fonctionnent à 3,3 V sont connectées et de l’autre, celles qui fonctionnent à 5 V. Vous pouvez le reconnaître à différentes caractéristiques (LV – HV), comme vous le voyez dans l’image suivante :

647241639_842

Les tiges sont ensuite connectées comme suit :

Raspberry Pi Convertisseur de niveau 3,3 V Convertisseur de niveau 5 V Adaptateur LCD I2C
3,3 V (Broche 1) LV
5 V (Broche 2) HV VCC
GND (Broche 6) GND GND GND
GPIO2 / SDA (Broche 3) TX1 (ci-dessous)
GPIO3 / SCL (Broche 5) TX1 (ci-dessus)
 — TX0 (ci-dessous) SDA
 — TX0 (ci-dessus) SCL

 

Voici un dessin schématique :

 

Raspberry Pi HD44780 I2C Display Controller

Toute tige de terre peut être prise. Par souci de clarté, j’ai choisi la tige 20 au lieu de la tige 6 sur le schéma.

Cette configuration est également utilisable avec d’autres modules qui nécessitent des signaux d’une tension supérieure à 3,3 V (dans ce cas 5 V) (horloge temps réel, etc.).

 

Logiciels

Avant de pouvoir commencer, deux outils I²C sont nécessaires, que nous installons :

sudo apt-get install python-smbus i2c-tools

Ensuite, nous publierons I2C (si vous l’avez déjà publié à partir de tutoriels précédents, vous pouvez l’ignorer) :

sudo raspi-config

Sous « Options d’interface »> « I2C », nous l’activons. Ajoutez maintenant les entrées correspondantes dans le fichier des modules :

sudo nano /etc/modules

Ces deux lignes sont ajoutées à la fin :

Il faut ensuite le redémarrer, afin que tous les changements prennent effet.

sudo reboot

 

Si vous avez déjà connecté l’écran, vous pouvez maintenant tester s’il a été détecté (si vous avez un des premiers Raspberry Pi’s [Rev.1], vous devez indiquer 0 au lieu de 1) :

sudo i2cdetect -y 1

La sortie devrait ressembler à ceci :

 

pi@raspberrypi ~ $ sudo i2cdetect -y 1
     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: -- -- -- -- -- -- -- --

Si vous voyez un nombre autre que 27, vous devez le modifier dans le fichier lcddriver.py (ADDRESS = 0x27).

Commençons par le code :

mkdir hd44780 && cd hd44780
wget http://tutorials-raspberrypi.de/wp-content/uploads/scripts/hd44780_i2c.zip
unzip hd44780_i2c.zip

À l’aide des deux scripts inclus, il est maintenant possible d’aborder l’affichage. Pour ce faire, nous ouvrons la console Python et entrons le code suivant :

sudo python

Le premier paramètre du lcd_display_stringest pour le texte et le second pour la ligne. Vous ne devez pas changer toutes les lignes à la fois, mais vous ne pouvez pas remplacer facilement les caractères individuels. Le texte entier (avec le caractère modifié à la position souhaitée) doit alors être retransmis.

Le contraste de mon adaptateur I2C était au début très faible. Si rien ne devait s’afficher, testez la roue au dos et regardez en oblique sur l’écran.

20160115_212307

 

 

Code de référence : https://github.com/CaptainStouf/raspberry_lcd4x20_I2C

Leave a Comment

Your email address will not be published.