Un panneau de commande avec affichage � cristaux liquides (LCD) pour votre serveur Linux
ArticleCategory: [Choose a category, do not translate
this]
Hardware
AuthorImage:[Here we need a little image from you]
TranslationInfo:
original in en Guido
Socher
en to fr Thierry Bayet
AboutTheAuthor:[A small biography about the author]
Guido aime Linux non seulement parce que c'est amusant de d�couvrir
les multiples possibilit�s de ce syst�me, mais �galement gr�ce aux
personnes impliqu�es dans sa conception.
Abstract:[Here you write a little summary]
Dans cet article nous concevrons un panneau de contr�le LCD bas�
sur l'afficheur LCD Hitachi HD44780 et le Micro-contr�leur RISC
AT90S4433 AVR 8-Bit de chez Atmel. Les deux composants sont
tr�s courants et bon march�. Le panneau de contr�le comprend
un syst�me de chien de garde afin de superviser l'ordinateur et
poss�de deux boutons pour permettre le dialogue avec l'utilisateur.
Vous pouvez d�finir l'adresse IP, le masque de r�seau, l'adresse
de la passerelle, arr�ter l'ordinateur, afficher les statistiques,
autrement dit, tout ce que vous d�sirez puisque la majeure
partie de la logique d�pend d'un script
Perl qui peut-�tre facilement modifi�. Le panneau est connect�
� votre ordinateur via le port s�rie RS232.
Pour cet article vous avez besoin au minimum d'une installation
partielle de l'environnement de d�veloppement AVR. La mani�re
de l'installer est d�crite dans cet article :
Programmer le
Micro-contr�leur ARV avec GCC.
ArticleIllustration:[This is the title picture for your
article]
ArticleBody:[The article body]
Introduction
Ce p�riph�rique combine les fonctionnalit�s de mat�riel
d�j� utilis� dans des articles ant�rieurs :
Notre nouvelle conception va cependant beaucoup plus loin
que cela. Elle ajoute des boutons pour l'interaction de l'utilisateur
et inclut un chien de garde mat�riel pour superviser le serveur.
De plus, elle fournit une ligne d'entr�e analogique. Nous ne
l'emploierons pas ici mais vous pourriez, par exemple, y connecter une sonde de
temp�rature.
Pour �laborer cela, il vous faut quelques connaissances d'amateur
en �lectronique. Les pi�ces d�tach�es que nous utiliserons ne sont pas ch�res
et tout compris, co�tent moins de 40 Euro.
L'id�e derri�re ce panneau est qu'il devrait vous permettre de
contr�ler un serveur sans moniteur ou clavier. Linux est un syst�me
d'exploitation tr�s fiable et peut facilement �tre contr�l� �
distance. Cependant lorsque vous le connectez pour la premi�re
fois � un r�seau, vous devez configurer l'adresse IP,
la passerelle et le masque de r�seau. Ce panneau vous permet
de d�finir ces adresses. Il vous donne �galement la possibilit�
d'arr�ter le serveur alors que vous �tes encore � c�t� de lui.
La conception de ce panneau est tr�s g�n�rique. Toutes les parties
"sp�cifiques au serveur" sont d�finies dans un script
Perl. Le mat�riel, l'�tat des boutons, le texte de
l'afficheur, les LED ..., peuvent �tre contr�l�s par des
commandes ASCII. Vous pouvez par cons�quent utiliser cet ensemble
pour construire un lecteur de mp3 ou contr�ler votre grille-pain, ou
ce que vous voulez.
Ce qu'il vous faut
Pour construire cela, vous avez besoin de
ce qui suit:
1 x Micro-contr�leur Atmel At90S4433
1 x Support d'IC 28 broches de 7.25 mm
1 x Support d'IC 16 broches
1 x MAX232
1 x Petit relais 5V
1 x cristal 4MHz
2 x LED (verte et rouge)
1 x transistor BC547 NPN
1 x transistor BC557 PNP
4 x condensateur 1uF (courant ou inclin�)
2 x condensateurs c�ramique 27pF
1 x condensateur 10nF
1 x condensateur 100nF
3 x r�sistances 4k7
2 x r�sistances 2k2
1 x r�sistance 10K
1 x r�sistance 3k3
2 x r�sistances 100 Ohm
3 x r�sistances 470 Ohm
3 x r�sistances 1K
1 x r�sistance 220 Ohm
1 x potentiom�tre 4K7 (aussi petit que possible)
1 x diode Zener 4.3V
2 x petits boutons
1 x petite diode standard (par exemple 1N4148, toute diode bon march�)
1 x afficheur LCD de 2 lignes de 20 caract�res avec interface compatible
HD44780.
Tous les afficheurs que j'ai vus avec 14 ou 16 broches
sur le connecteur �taient compatibles HD44780. Vous pouvez �galement
utiliser un afficheur de 3 ou 4 lignes mais vous devrez l�g�rement
modifier le programme .
De plus vous aurez besoin de quelques fils et de quelques connecteurs pour l'alimentation
et la RS232. Si vous avez un afficheur de 2 lignes
vous pouvez le monter dans une fine feuille d'aluminium et
l'int�grer dans une baie de 5.25" sur votre serveur.
Sch�ma et carte
J'ai utilis� Eagle pour Linux pour concevoir le sch�ma et
la carte. C'est un excellent programme mais il vous faudra un peu
de temps pour apprendre � l'utiliser. Vous pouvez obtenir
une version gratuite pour une utilisation priv�e sur : cadsoftusa.com.
Le sch�ma (cliquez dessus pour l'agrandir):
La carte (cliquez dessus pour l'agrandir):
La disposition des �l�ments de la carte sur fond blanc pour une meilleure
impression:
carte avec fond blanc (Note: Ce n'est pas le fichier
requis pour �laborer le circuit imprim� de la carte.)
Les fichiers Eagle (compress�s avec gzip, notez que certains
navigateurs d�compressent pendant le t�l�chargement):
Le circuit
Je vais expliquer bri�vement le diagramme du circuit ci-dessus.
L'AT90S4433 a 3 ports : PB, PC et PD. PC peut-�tre utilis� comme port
d'entr�e analogique ou digital. Tous les ports peuvent �tre utilis�s
comme lignes d'entr�e et de sortie digitales. C'est le programme qui contr�le
cela via DDR (Data Direction Register)Registre
de Direction des Donn�es. Nous utilisons toutes les broches
sauf la 23 comme lignes digitales (0 ou 5 V).
Le Max232 est un convertisseur de tension. L'interface RS232 utilise
+-10V et le Max232 le convertit en 0-5V. Sur la broche 1 (broche de remise
� z�ro) de l' AT90S4433 vous trouvez quelque chose nomm� circuit d'
arr�t partiel (Brownout). Ce circuit maintient la remise �
z�ro en position basse (active) dans les cas d'alimentation insuffisante afin
d'emp�cher le CPU d'ex�cuter de mauvaises instructions ou de mal fontionner.
Ceci peut se produire quelques millisecondes pendant la mise en route ou
l'arr�t. Le but est de garantir que
le programme du Micro-contr�leur d�marre correctement.
Certains d'entre vous pourraient se demander pourquoi il
y a une diode en parall�le � la bobine du relais et que la polarit� telle
qu'elle est repr�sent�e n'aura jamais rien � faire. Cette diode est tr�s
importante ! Lorsque vous coupez le relais, une tension tr�s �lev�e
est g�n�r�e par la bobine. Elle peut d�truire le Micro-contr�leur. Cette
tension est de polarit� inverse � la tension d'alimentation de la bobine.
La diode peut �tre une petite diode bon march�, mais il est important de
l'avoir.
Les deux boutons poussoirs doivent �tre li�s au connecteur nomm�
"DIGITAL IN PUSH BUTTON" dans le sch�ma. Ils connectent
PD3 ou PD6 � la masse lorsqu'ils sont press�s.
Comment r�aliser le circuit imprim�
Pour graver le circuit imprim� vous devez d'abord
imprimer ce fichier PostScript
(linuxlcdpanel.ps.gz) sur une feuille transparente.
Dans les magasins pour architectes vous pouvez trouver des feuilles
de plastique semi-transparentes nomm�es Sinolit. Elles sont
produites pas Regulus et sont normalement utilis�es pour les
imprimantes Offset. Une alternative peut �tre un papier de
60g + un produit de pulv�risation transparent (pausklar 21 de Kontakt
Chemie). L'avantage du papier et de Sinolit vient de ce que le toner de l'imprimante
Laser colle vraiment au papier/� la feuille plastique et offre un bon contraste.
J'ai converti le fichier PostScript en PDF au cas
ou vous n'auriez pas d'imprimante PostScript. La qualit� est cependant
moindre.
Le temps d'exposition pour les plaques de cuivre avec proc�d� photo
d�pend de la source lumineuse. Pour une lumi�re artificielle normale il faut
compter 1-2 minutes. Vous pouvez �galement utiliser la lumi�re du
jour, mais essayez d'�viter la lumi�re directe du soleil (elle est
trop forte). Vous pouvez faire l'exp�rience sur un petit morceau
de plaque photosensible pour d�finir le temps d'exposition id�al
avant d'utiliser la bonne plaque.
![[avant gravure]](../../common/images/article236/pic01_beforeetching_th.jpg) |
La carte expos�e et r�v�l�e avant gravure |
La carte expos�e a besoin maintenant d'�tre r�v�l�e quelques minutes
dans du NaOH (Natriumhydroxid). Ensuite, vous devez
regarder attentivement le r�sultat et faire les corrections avec un marqueur
de peinture noire Edding 780 (ce n'est pas le marqueur ind�l�bile pour surcharge,
c'est un marqueur contenant de la peinture). Je fais habituellement les pastilles
un peu plus grosses parce que je trouve celles de Eagle trop petites pour
une utilisation non professionnelle.
![[après gravure]](../../common/images/article236/pic02_boardready_th.jpg) |
La carte avant de percer les trous |
Note: il semble impossible aux fabricants
de s'entendre sur un brochage commun ou sur des conventions de nommage pour
les relais. J'utilise un petit relais 5V manufactur� par Matsushita. Votre
relais peut avoir un brochage diff�rent, modifiez donc la carte en cons�quence
(avec un marqueur r�sistant � la gravure).
Lorsque vous �tes satisfait vous pouvez plonger la carte dans du FeCl3
(Hypochlorite de fer). Le FeCl13 donne de bons r�sultats � temp�rature
ambiante. Il est tr�s facile � utiliser et donc id�al pour le bricolage
� la maison. Vous obtiendrez de meilleurs r�sultats si la carte est plac�e
verticalement dans un conteneur profond. Les ions de cuivre sont plus lourds que
les ions de fer et si vous remplissez de FeCl13 un petit r�cipient plat, les
ions de cuivres s'accumuleront au fond du r�cipient.
Quand la carte est pr�te effacez l'encre du marqueur avec de la
t�r�benthine. Vous pouvez laisser "l'encre" photo-r�sistante.
Elle s'�vaporera lorsque vous souderez dessus et prot�gera le cuivre.
Le programme du Micro-contr�leur
Le programme pour le Micro-contr�leur se compose des fichiers suivants :
- lcd.c, lcd.h,
lcd_hw.h: C'est une biblioth�que g�n�rique avr LCD. Elle est bas�e sur le
travail de Peter Fleury (http://jump.to/fleury). Cette version est un peu
modifi�e et plus flexible. Elle vous permet de connecter le mat�riel LCD
� n'importe quelle broche du Micro-contr�leur. Vous n'avez qu'� changer la
d�finition dans le fichier lcd_hw.h.
- avr-util.c,
avr-util.h: fonctions pour obtenir divers temps de retard.
- uart.c, uart.h:
C'est une biblioth�que pour l'interface RS232. Elle utilise les interruptions
mat�rielles. Chaque fois qu'un caract�re est re�u de l'ordinateur, la
fonction SIGNAL (SIG_UART_RECV) est ex�cut�e et les donn�es sont copi�es
depuis le tampon de r�ception vers un tampon de cha�ne de caract�res. Le
langage de commande pour notre panneau LCD est con�u de telle mani�re que
chaque commande se termine par le caract�re de nouvelle ligne. Lorsqu'une
nouvelle ligne est trouv�e alors un drapeau (uart_rx_linecomplete) est
positionn� et la donn�e est rendue accessible. Cela signifie �galement que vous
ne devez pas envoyer de commande � l'afficheur aussi vite que possible, mais
attendre un peu (une milliseconde) apr�s chaque ligne.
Chaque commande recevra un accus� de r�ception avec un r�sultat ok, ou
err (pour erreur). Le programme de pilotage Perl peut donc employer le
r�sultat comme d�clencheur de l'envoi de la prochaine commande.
- analog.c,
analog.h: Code pour le convertisseur analogique/digital. Il utilise
�galement les interruptions. Une conversion simple de
l'analogique vers le digital est lanc�e et le signal attend
l'interruption SIG_AID pour lire le r�sultat depuis le registre ADC.
- hardwarewd.c,
hardwarewd.h: Voici le chien de garde. Nous utilisons le diviseur
interne (divise par 1024) pour g�rer les impulsions du minuteur.
Le minuteur
est un registre 16 bits, et lorsque nous avons un d�passement nous
d�comptons une variable de 8 bits. Avec un cristal de 4MHz nous
d�compterons notre variable approximativement toutes les 16 secondes. Le
programme Perl signale que l'ordinateur est bien actif en red�finissant
p�riodiquement la variable � une valeur haute. S'il �choue
(parce que l'ordinateur s'arr�te) alors la variable diminuera de sa valeur
chaque fois et lorsqu'elle atteindra z�ro, le relais collera et fera une
remise � z�ro mat�rielle de notre serveur.
- linuxlcdpanel.c:
C'est le programme principal. Il v�rifie continuellement les commandes de
l'interface RS232 et les �v�nements de pression des boutons.
Afin de comprendre le programme en d�tail, il vous est recommand� de lire
les caract�ristiques techniques du Micro-contr�leur. Elles sont
accessibles � partir de la section r�f�rences � la fin de cet article (ou sur
www.atmel.com)
Cependant pour utiliser ce panneau vous n'avez pas besoin de comprendre
le programme, vous avez juste besoin de d�compresser les archives du code
source ( s�lectionnez linuxlcdpanel-0.7.tar.gz sur la page de t�l�chargement) et de taper:
make
make load
ou vous pouvez �ventuellement utiliser le programme pr�-compil� et le
charger par la commande
make loadprebuild
Tr�s facile. Vous trouverez une description de la mani�re de programmer le
Micro-contr�leur dans le premier article:
Programmer le Micro-contr�leur ARV avec
GCC.
Test du panneau LCD
Le panneau LCD est pr�vu pour fonctionner avec l'alimentation interne 5V de
votre serveur (fil rouge=5V, fil noir=masse). Mais ne les connectez
surtout pas � l'alimentation de l'ordinateur la premi�re fois. Vous avez
peut-�tre fait des erreurs pendant la soudure et l'assemblage.
L'alimentation de l'ordinateur est puissante, et autant votre ordinateur
que votre carte peuvent partir en fum�e si tout n'est pas correct.
Testez d'abord avec une alimentation stabilis�e externe avec limitation de
courant ! Maintenant vous pouvez t�l�charger le programme vers l'EEPROM
comme d�crit plus haut. Ensuite vous devriez voir appara�tre un d�filement
de la banni�re "linuxfocus.org" sur l'afficheur LCD. Maintenant connectez
l'interface RS232:
broche 14 MAX232 sur CTS (DB-9 broche 8)
broche 7 MAX232 sur RXD (DB-9 broche 2)
broche 13 MAX232 sur TXD (DB-9 broche 3)
Vous avez �galement besoin de connecter entre eux DTR, DSR et CD (DB-9
broches 4, 6 et 1)
Ceci est �galement document� dans le diagramme du circuit ci-dessus.
Pour utiliser la ligne s�rie vous devez l'initialiser.
L'archive du code source linuxlcdpanel-0.7.tar.gz contient un programme
appel� ttydevinit qui s'occupe de cette initialisation. Disons que vous
avez connect� le panneau sur COM2 (ttyS1) alors vous pouvez lancer la
commande:
./ttydevinit /dev/ttyS1
Maintenant le pilote de la ligne s�rie est initialis� pour fonctionner � 9600
Bauds et vous pouvez commencer � "discuter" avec votre panneau LCD. Ouvrez 2
fen�tres xterm. Dans l'une vous tapez "cat > /dev/ttyS1". Maintenant
vous pouvez par exemple entrer la commande l=11 (allumage de LED 1) ou
l=10 (extinction de LED 1). Vous pouvez voir dans le premier xterm que votre
panneau LCD accuse r�ception de la commande par "ok".
Toutes les commandes disponibles sont expliqu�es dans le fichier README.commands.
L'archive du code source contient un script Perl nomm� ttytest.pl qui ne
fait qu'allumer et �teindre les LED rouge par intermittence.
Il est cens� �tre utilis� comme un simple programme exemple qui montre
comment piloter le panneau LCD. Vous pouvez vous en servir comme base pour vos
propres programmes. Lisez le code source. Il demande quelques
connaissances en Perl, mais c'est un programme plut�t court.
Connection du chien de garde
Le chien de garde est coup� par d�faut. Vous l'activez par la
commande w=1 et vous d�finissez le d�lai par s=x ou x est une valeur
entre 1 et 255. Par exemple s=10 vous donnera un d�lai d'une
valeur de 10*16sec=160sec. Le pilote a besoin de d�finir le d�lai
p�riodiquement pour permettre au chien de garde de fonctionner correctement. Si votre
serveur se verrouille, alors le pilote n'est pas r�initialis� et le chien de
garde agit. Je sais que les serveurs Linux ne d�crochent jamais. Cependant si
c'�tait le cas, il faut savoir qu'il n'y a habituellement personne sur
le site pour faire une remise � z�ro, ou que personne ne sait o� se trouve le serveur
parce qu'il n'y a jamais eu de probl�me depuis les 2
derni�res ann�es.
Le chien de garde est con�u de telle mani�re qu'il ne joue son r�le qu'une
seule fois. Cela afin d'�viter une remise � z�ro pendant le red�marrage du
syst�me. Lorsque le serveur est de nouveau op�rationnel, le pilote doit
le r�activer.
Pour connecter physiquement le chien de garde, vous devez trouver les
deux fils connect�s au bouton de remise � z�ro de votre
serveur. Parall�lement � ce bouton de remise � z�ro vous devez
connecter le relais � partir de votre chien de garde.
Comment utiliser le chien de garde
Le chien de garde garantit que le syst�me est toujours capable d'ex�cuter les
programmes. Il ne garantit pas qu'un serveur Web ou une application de base de
donn�es fonctionnent toujours correctement. Pour v�rifier cela vous
devriez utiliser une entr�e crontab ou d'autres programmes. Vous pouvez
�tre certain que le crontab fonctionnera probablement parce que le
chien de garde s'assure que les programmes en g�n�ral sont toujours actifs.
Vous pouvez par exemple concevoir un script qui est d�clench� par
cron et t�l�charge une page Web de votre serveur toutes les 15 minutes,
mais vous devez �tre prudent : un serveur Web peut �tre surcharg� par un tas
de requ�tes et il est d�s lors normal qu'il ne r�ponde pas � toutes. Vous pourrez
cependant compter le nombre de fois que le serveur ne r�pond pas et si, par
exemple, il ne r�pond toujours pas apr�s 10 v�rifications, alors red�marrez
le serveur ou basculez vers un red�marrage normal (pas une remise � z�ro
mat�rielle par le chien de garde).
Ind�pendamment de l'application, vous devriez �galement surveiller l'utilisation
du disque. La commande shell suivante retourne une valeur si une des partitions
est remplie � plus de 80%:
df | egrep ' (8.%|9.%|100%) '
Cela peut �galement �tre utilis� conjointement avec une entr�e crontab
afin de v�rifier r�guli�rement l'utilisation du disque.
Les scripts sur le serveur
Presque toute la logique de notre panneau d'affichage � cristaux liquides
d�pend d'un script Perl nomm� llp.pl. Copiez ce fichier dans
/usr/sbin. Copiez ensuite le programme ttydevinit dans /usr/bin et le
fichier ifconfig_llp.txt (depuis le r�pertoire etc des archives du code
source) dans /etc. Editez enfin, le fichier ifconfig_llp.txt et changez
les adresses selon les besoins :
NETMASK=255.255.255.0
IPADDR=10.0.0.4
GATEWAY=10.0.0.2
Maintenant, faites une copie de votre script original
/etc/rc.d/init.d/network et copiez le script /etc/network de l'archive du
code source dans /etc/rc.d/init.d/network. Ce script et les noms de
r�pertoire sont seulement valides sur Redhat et Mandrake. Le script
/network_all_distributions est plus �l�mentaire et fonctionnera
sur toutes les distributions Linux, mais vous devez trouver l'emplacement des
r�pertoires init-rc de votre distribution Linux. C'est
l�g�rement diff�rent d'une distribution � l'autre.
�ditez le fichier /etc/rc.d/init.d/network et changez la ligne
/usr/sbin/llp.pl /dev/ttyS1&
si vous n'utilisez pas COM2.
Vous pouvez maintenant lancer :
/etc/rc.d/init.d/network start
et voir votre panneau LCD en action. Note: Il est possible de jouer
avec la modificationde des adresses IP. Les changements ne prendront effet qu'apr�s le
prochain red�marrage. Par cons�quent testez et restaurez-les avant
d'arr�ter votre serveur (vous pouvez aussi �diter
/etc/ifconfig_llp.txt pour annuler vos changements).
Fichiers de log
Le script llp.pl cr�e un fichier nomm� llp.log dans /var/log. Ce log
ne se remplit que tr�s lentement. Normalement, il n'est pas n�cessaire de pr�voir une
rotation automatique. Vous pouvez le purger avec un programme tel que
logrotate si vous le d�sirez. Il n'est pas n�cessaire de g�rer la post rotation.
Une ligne du fichier de configuration de logrotate pourrait ressembler
� ceci:
/var/log/llp.log {
nocompress
monthly
}
Le fichier log contiendra des entr�es lorsque le syst�me sera arr�t�
manuellement, qu'une adresse IP sera modifi�e (IP, GW,netmask) ou lorsque le
chien de garde mat�riel d�clenchera une remise � z�ro. Naturellement vous ne
pouvez pas enregistrer la valeur du d�lai du chien de garde lorsque cela se produit (puisque
le syst�me prend la main), par contre elle sera enregistr�e au
prochain d�marrage.
Le panneau en op�ration
Voici quelque "photos" du panneau LCD en action. Ce ne sont pas toutes les
fonctions offertes par ce panneau. Il y en a beaucoup plus et vous pouvez y ajouter
les votres.
L'�cran principal. Montrant un nom (linuxfocus dans ce cas), la dur�e de
fonctionnement et la charge. Il se met � jour p�riodiquement.
Le menu de configuration IP
Exemple d'une adresse IP en cours de modification
Comment changer l'adresse de la passerelle (route par d�faut)
Conclusion
Pour construire ce panneau � cristaux liquides (LCD) il faut des connaissances
d'amateur en �lectronique, mais ce n'est pas un circuit
tr�s complexe. Notre panneau LCD Linux offre plus de fonctionnalit�s que
bien d'autres panneaux de contr�le d�j� vus et il est tr�s g�n�rique et tr�s
bon march�.
Bonne soudure :-)
R�f�rences