lcdproc -- affichages LCD faciles � utiliser et faciles �
construire
ArticleCategory: [Choose a category, do not translate
this]
Hardware
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in en Guido
Socher
en to fr Jean-Etienne Poirrier
AboutTheAuthor:[A small biography about the author]
Guido appr�cie Linux parce que c'est un vraiment bon syst�me pour
d�velopper son propre mat�riel.
Abstract:[Here you write a little summary]
Que les lecteurs qui pourraient avoir attendu maintenant un article sur les
microcontr�leurs ne se tracassent pas. Je continuerai certainement. Le
prochain article sur du mat�riel que j'�crirai sera de nouveau sur les
microcontr�leurs. J'ai aussi cr�� une page o� vous pourrez trouvez tous les
articles r�cents d'�lectronique :
http://www.tuxgraphics.org/electronics/
J'esp�re que cela rendra le tout facile � suivre et � en avoir un
aper�u.
Les lecteurs de longue date de LinuxFocus se rappelleront encore mon vieil
article de Mars 2003 : Affichage LCD
USB sous Linux et celui de Mai 2002 : Un panneau de contr�le LCD pour
votre serveur Linux. C'�taient des panneaux LCD � de luxe �, avec chien de
garde et ADC, etc. Avec le temps, j'ai not� que toutes ces fonctionnalit�s
suppl�mentaires �taient des choses que je n'utilisais pas souvent.
Cet article pr�sente maintenant un mod�le � de base � : un affichage LCD et 2
boutons, simple et facile � construire pour tout le monde.
ArticleIllustration:[This is the title picture for your
article]
ArticleBody:[The article body]
Qu'est-ce que lcdproc?
Au tout d�but, lcdproc �tait utilis�
comme programme pour afficher quelques statistiques (charge processeur,
uptime, temps), ... sur un affichage LCD externe. Avec le temps, il a
cependant �volu� vers une solution beaucoup plus g�n�rique. De nos jours, le
paquet lcdproc contient LCDd, un serveur g�n�rique et le pilote LCD,
accompagn� de nombreux clients. Un de ces clients est toujours l'ex�cutable
appel� lcdproc qui affiche toujours des statistiques du serveur, bien qu'il
y en ait d'autres. Cette architecture client serveur a le grand avantage que
vous ne devez pas �crire votre client dans un langage sp�cifique. Vous avez
juste besoin d'utiliser le protocole ascii simple entre le client et le
serveur. Voici un exemple qui impl�mente une horloge en juste 36 lignes de
code Perl. �� affiche l'heure et la date et le coin sup�rieur droit
montre un ic�ne appel� � battement de coeur �. Le � battement de coeur � est
ajout� par le serveur LCDd. Cet ic�ne � battement de coeur � clignote une fois
de temps en temps pour indiquer que l'affichage est toujours vivant.
Avec lcdproc, vous pouvez avoir plus que juste des cha�nes. Vous avez des
barres de graphique, des barres de d�filement, des barres de titre, ... et
des cha�nes de caract�res. Au d�but du programme, vous d�finissez ces objets
(ils sont appel�s � widgets �) et, ensuite, vous les remplissez avec des
donn�es. Tout cela est expliqu� dans le Guide du
D�veloppeur de LCDproc, aux pages 7 et suivantes.
La partie principale de la petite horloge LCD du
programme d'exemple ressemble � ceci :
#!/usr/bin/perl -w
....
# initialise la communication:
print $remote "hello\n";
....
# d�fini notre nom et d�fini un widget de type cha�ne de texte
print $remote "client_set name lcdtime\n";
print $remote "screen_add scr1\n";
print $remote "widget_add scr1 str1 string\n";
....
while(1)
{
....
$date = scalar localtime;
# maintenant �crit sur le LCD:
print $remote "widget_set scr1 str1 1 1 \"$date\"\n";
sleep 10;
}
Assez facile, non ? OK, maintenant, construisons quelque chose de plus
utile.
Le Mat�riel
Selon les sp�cifications, le port parall�le d'un PC travaille � 5V. Si vous
jetez un oeil � la feuille de donn�es d'un affichage LCD moderne (par
exemple, � partir de tuxgraphics :
http://shop.tuxgraphics.org/electronic/lcd.html), vous vous apercevrez
que m�me si les affichage sont grands, ils n�cessitent extr�ment peu
d'�nergie. Seulement 2 mA ! Avec si peu de courant, il devrait �tre
possible d'alimenter l'affichage directement par le port parall�le.
L'avantage est qu'alors, vous n'avez plus besoin d'un connecteur de
courant suppl�mentaire. C'est juste un affichage LCD avec un connecteur au
port parall�le. Tr�s commode.
Tout ceci est possible avec un port parall�le qui fournit r�ellement 5V. Le
probl�me est qu'il y en a quelques uns qui ne respectent pas les
sp�cifications. Ainsi, comment savez-vous si votre port parall�le est
suffisamment bon pour une solution � auto-aliment�e � ? Voici un petit test :
- Installez lcdproc avec le patch � parallel port power � (voyez les
r�f�rences).
- Configurez le fichier /etc/LCDd.conf comme d�crit ci-dessous.
- Lancez le programme LCDd en tant que root.
- Prenez un voltm�tre digital et mesurez la tension sur la broche 1. Il
devrait �tre de 4.90V ou plus (mesurez entre la broche 1 et la broche 18,
c�d. la terre (GND)).
- Maintenant, connectez une r�sistance de 33K sur le port parall�le, entre les
broches 1 et 18. Le voltage devrait descendre � 4,25V. Si vous obtenez
plus, alors votre port parall�le est tr�s bon. Si vous obtenez moins,
votre solution � auto-aliment�e � ne fonctionnera pas.
Si le test est r�ussi, alors vous pourrez utiliser la solution � port
parall�le auto-aliment� en utilisant l'affichage 20x2 de tuxgraphics (ou un
�quivalent). Celui-l� est test�. Il fonctionnera.
Si votre port
parall�le est un peu faible, ne vous en faites pas trop. Vous pouvez soit
utiliser les 5V internes de votre PC (vous devrez l'ouvrir pour cela) soit
vous pouvez prendre 5V d'un connecteur USB libre.
Le diagramme du circuit
Le premier diagramme montre les connections pour un affichage LCD avec 2
boutons, utilisant la solution du port parall�le auto-aliment�.
Port parall�le
pin 1 , strobe = 220, supply voltage
pin 2 , D0 = LCD pin D4
pin 3 , D1 = LCD pin D5
pin 4 , D2 = LCD pin D6
pin 5 , D3 = LCD pin D7
pin 6 , D4 = LCD pin RS
pin 7 , D5 = LCD pin RW
pin 8 , D6 = LCD pin EN
pin 10, ACK = bouton A, bouton rouge au-dessus
pin 12, PE = bouton C, bouton noir en-dessous
pin 14, strobe = 220, supply voltage
pin 16, strobe = 220, supply voltage
pin 17, strobe = 220, supply voltage
pin 18, ground = 0V, GND
Ce second sch�ma montre les connections pour un affichage LCD avec deux
boutons et une source de courant ext�rieure :
Comme pour tout nouvel article d'�lectronique, vous pouvez de nouveau
obtenir un kit avec tous les composants sur shop.tuxgraphics.org
J'ai mont� l'affichage LCD dans un cadre de plastique noir :
Le � lcdproc parallel port power patch �
LCDd envoie toujours des donn�es � l'affichage. On pourrait d�s lors
utiliser des diodes et d�river le courant des lignes de signal. Le probl�me
est que les diodes vont g�n�rer une chute de tension d'au-moins 0,5V, m�me �
des courants faibles. Nous ne pouvons pas nous le permettre. Il y a cependant
assez de lignes de sortie libres si vous utilisez LCDd avec juste un seul
affichage. Rien n'est plus simple que de modifier le logiciel LCDd pour
toujours maintenir ces broches libres sur la valeur logique � 1 �. On ins�re
toujours quelques r�sistances pour avoir une protection minimale contre les
courts-circuits (ou une protection contre les fautes stupides ;-)). Le patch
pour lcdproc-0.4.5 est disponible dans la section t�l�chargement. Vous
l'appliquez comme ceci :
tar zxvf lcdproc-0.4.5.tar.gz
cd lcdproc-0.4.5
patch -p 1 < lcdproc-0.4.5-pp-powerpatch-v1.txt
./configure --enable-drivers=hd44780
make
make install
(ou vous pouvez juste faire "copy LCDd.conf /etc" et copier server/LCDd vers
/usr/bin)
Le fichier LCDd.conf
Le fichier /etc/LCDd.conf configure nos pilote et serveur LCD (serveur =
le processus LCDd). Dans le fichier /etc/LCDd.conf, vous devez enlever les
commentaires sur les lignes suivantes pour utiliser l'affichage compatible
HD44780 avec les connections d�crites dans cet article :
[server]
Driver=HD44780
[HD44780]
# Hitachi HD44780 driver
Port=0x3BC
# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC
ConnectionType=4bit
Keypad=yes
Backlight=no
Size=20x2
# Specifies the size of the LCD.
DelayMult=4
DelayBus=true
La partie difficile est l'adresse du port (0x278, 0x378 et 0x3BC). Comment
savez-vous � quelle adresse d'E/S correspond quel port parall�le ? Le plus
simple est de charger le module noyau parport (modprobe parport) et
d'ensuite regarder dans /proc/ioports:
modprobe parport
modprobe parport_pc
cat /proc/ioports
...
0388-0389 : OPL2/3 (left)
038a-038b : OPL2/3 (right)
03bc-03be : parport0
03c0-03df : vga+
03f6-03f6 : ide0
...
dans ce cas, vous utilisez : 0x3bc
Notre propre application
Vous avez vu, au d�but de cet article, combien il �tait facile d'envoyer un
texte de cha�nes quelconque vers l'affichage. Cela devient un peu plus
compliqu� si vous voulez un affichage interactif (avec les deux boutons).
Dans ce cas, nous avons besoin d'�viter le signal de sommeil, sinon les
boutons ne r�pondront plus durant la p�riode de sommeil. En m�me temps, nous
avons besoin d'un signal d'arr�t qui arr�te la boucle. Ce dont nous avons
besoin est l'appel syst�me � select �. Il arr�te l'ex�cution tant qu'un
timeout (d�lai) n'est pas d�pass� ou jusqu'� ce qu'un bouton soit press� sur
l'affichage.
Notre application va donner quelques statistiques (mem, swap, cpu, temps) et
vous pouvez utiliser les boutons pour �teindre la machine.
Le script s'appelle servermenu_pl et vous le trouverez dans la section de
t�l�chargement
Je pr�sente juste ici une application de base car l'exp�rience des articles
pr�c�dents m'a montr� que la plupart des lecteurs souhaitent juste savoir
comment faire quelque chose et, ensuite, ils ont leur propre applications
pour cela. J'ai re�u des e-mail avec toutes sortes d'id�es : station de
gravure de CD, PC station m�t�o, syst�mes d'alarme, ... Tout cela peut �tre
r�alis�. Il suffit de modifier un peu le code.
C'est vraiment g�nial et procure beaucoup de plaisir de jouer avec cet
affichage et lcdproc.
R�f�rences