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]

[Photo of the Author]

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]

[Illustration]

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):
[Schéma]

La carte (cliquez dessus pour l'agrandir):
[carte]


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]
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]
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 : 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.

[discuter avec le panneau LCD par la ligne série] 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.
[main]

Le menu de configuration IP
[IP configuration menu]

Exemple d'une adresse IP en cours de modification
[change IP]

Comment changer l'adresse de la passerelle (route par d�faut)
[GW]

Conclusion

[the final panel] 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