Nous allons connecter un écran LCD 4×20 sur notre Raspberry PI-2 model B et afficher un magnifique Hello World à l’aide d’un programme en Java et de la librairie Pi4J.
Tout d’abord voici ma source d’inspiration : Anderson69s. Le programme en Python proposé par Anderson a été transposé en Java de mon côté, avec l’utilisation de la librairie Pi4J.
Matériel requis
Les principaux composants électroniques ont été achetés sur Amazon, vendeur SODIAL. Ne pas être pressé pour la livraison (2 semaines) par contre la livraison est gratuite. Voici donc une liste de courses, tout n’est pas indispensable. A vous de voir en fonction de ce que vous avez déjà.
Raspberry PI-2 model B
Budget : environ 40€. |
|
Afficheur Module 2004 LCD BLEU HD44780
Budget : environ 6€. |
|
Un fer à souder | |
10x 40 Pin Header Strip L’écran LCD est livré sans connecteurs, les pins à souder sur la carte permettent de la connecter sur la plaque LAB. Budget : 2€ |
|
Plaque LAB
Budget : envion 3€. |
|
Jeu de résistances Nous utiliserons une résistance de 220 ohm comme indiqué par le tutorial d’Anderson69. N’ayant pas de potentiomètre, j’ai utilisé une résistance supplémentaire, de 3 KOhm. Budget : environ 6€. |
|
Des connecteurs mâle/femelle.
Budget : environ 2€. |
|
module Wi-fi
Budget : environ 3€. |
|
alimentation 5V 2000mA
Budget : environ 7€. |
|
une carte mémoire classe 10
Budget : environ 13€. |
|
des LEDs
Budget : environ 2€. |
|
Des Lego pour faire une belle boite !
Budget : environ 10€. |
|
Vous pouvez opter pour une version plus classique
Budget : environ 10€. |
Logiciel requis
Ubuntu Raspbian L’installation se passe très bien normalement. Vous aurez peut-être besoin d’un adaptateur HDMI/VGA pour pouvoir afficher la sortie vidéo sur votre vieil écran PC. |
|
Java 8 Préférer la JDK pour avoir tous les outils, mais sinon la JRE suffit. |
|
La librairie Pi4J Il s’agit d’un paquet .deb à installer, qui fournit quelques raccourcis pour compiler facilement les .java sans avoir à taper la commande javac + le classpath |
Connexions
Je vous renvoie vers le tutoriel d’Anderson très bien détaillé.
Par contre, n’ayant pas de potientiomètre sous la main, j’ai connecté une résistance de 3 KOhm entre le pin 3 (réglage du contraste) et la masse (ligne bleue de la plaque LAB).
J’ai respecté le reste du schéma. Le port GPIO du Raspberry PI-2 modele B dispose de 40 pins et non 20. Il faut donc tout simplement ignorer les 20 premiers pins (côté intérieur).
Testons la librairie Pi4J
Une fois installée, la librairie pi4J fournit un ensemble d’exemples prêts à l’emploi. Allons tester notre écran LCD !
Si vous avez correctement réalisé le montage, votre écran doit déjà être allumé. Ouvrons le programme de test d’écran LCD :
cd /opt/pi4j/examples vim WiringPiLcdExample.java
Les ports mappés par les exemples pi4J ne sont peut-être pas compatibles avec notre modèle de Raspberry PI2 Model B.
J’ai dû les remplacer par les constantes suivantes :
LCD RS pin : 11 (ok) LCD strobe pin : 10 (ok) LCD data bit 1 : 6 (modifié) LCD data bit 2 : 5 (modifié) LCD data bit 3 : 4 (modifié) LCD data bit 4 : 1 (modifié)
On va laisser les constantes LCD_ROWS et LCD_COLUMNS si votre écran n’a pas la même taille pour le moment.
Démarrons notre exemple.
Attention, le programme doit être lancé en root pour fonctionner
pi4j --compile WiringPiLcdExample.java # Equiv. : javac -classpath '.:classes:*:classes:/opt/pi4j/lib/*' -d . WiringPiLcdExample.java pi4j WiringPiLcdExample # Equiv. : java -classpath '.:classes:*:classes:/opt/pi4j/lib/*' WiringPiExample
Vous devriez voir l’heure tourner sur votre écran LCD. Ctrl-C pour arrêter le programme.
Notre petit programme en Java
Le programme que je vous propose va vous permettre de :
- Créer un message de bienvenue sur 4 lignes
- Afficher la date et l’heure actuelles
- Afficher votre ville et vos IPs (LAN et WAN) via l’API http://ip-api.com/json
- Afficher la météo de votre ville via l’API http://api.openweathermap.org
- Afficher vos derniers Tweets via l’API twitter4j
- Jouer avec de l’ASCII Art animé 🙂
Le code est accessible publiquement depuis GIT :
git clone https://gogs.infovergne.com/lapsus63/RaspLCD.git
La classe de démarrage est com.infovergne.rasp.lcd.Main
. Vous pouvez le tester sans brancher de Rasbperry en le lançant avec le paramètre -console
pour afficher les textes sur la sortie standard, ou -swing
pour afficher les textes dans une fenêtre graphique qui ressemblera plus à votre Rasbperry (la JFrame est constituée d’un tableau 4×20 de JLabels).
Toutes ces informations seront envoyées sur l’écran LCD de votre Raspberry à l’aide de pi4J. Vous pouvez compiler facilement le JAR à l’aide de ant
puis lancer l’application :
cd Rasp_LCD /opt/apache-ant-1.9.7/bin/ant -f build.xml build jar # Démarrage du programme : java -jar /home/pi/RaspLcd.jar
Attention, pour que les API fonctionnent, vous devez les configurer. Créer une clé (APIKEY) pour pouvoir fonctionner.
Vous devez créer un fichier ~/.rasplcd/apikeys.conf qui contient les informations suivantes. Votre programme devant être lancé en root, le fichier se trouvera donc dans /root/.rasplcd/apikeys.conf.
OWM = VOTRE_CLE_OPEN_WEATHER_MAP TWITTER_CONSUMER_KEY= VOS_CLES_TWITTER TWITTER_SECRET_KEY= VOS_CLES_TWITTER TWITTER_ACCESS_TOKEN= VOS_CLES_TWITTER TWITTER_ACCESS_TOKEN_SECRET= VOS_CLES_TWITTER