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]

[Photo of the Author]

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]

[Illustration]

ArticleBody:[The article body]

Qu'est-ce que lcdproc?

LCDd 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 :
  1. Installez lcdproc avec le patch � parallel port power � (voyez les r�f�rences).
  2. Configurez le fichier /etc/LCDd.conf comme d�crit ci-dessous.
  3. Lancez le programme LCDd en tant que root.
  4. 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)).
  5. 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.

usb A connector pinout 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�.
affichage LCD alimenté par le port parallèle

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 :
affichage LCD alimenté par l'extérieur


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 :
mon affichage, arrière

mon affichage, face

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.
servermenu en action

R�f�rences