Retrouvez cet article dans : Linux Magazine Hors série 23
Il n’est pas rare de voir aujourd’hui bon nombre de PC équipés d’af-ficheurs en tout genre. La plupart du temps, ceux-ci ne sont pas pilotés par le système et n’indiquent que température et vitesse des ventilateurs. Le montage suivant est totalement différent.
Qu’il s’agisse d’un PC de bureau ou d’un serveur, l’affichage d’informations sur un écran déporté en façade est une excellente solution pour être informé de l’état du système. Un projet a vu le jour il y a fort longtemps sous le nom de " LCDproc " et continue à être maintenu aujourd’hui. Les mises à jour se font rares car le projet a atteint une grande maturité. LCDproc est un projet de développement d’un démon fonctionnant sous système UNIX (GNU/Linux, BSD, etc.) permettant de piloter un afficheur à cristaux liquides alphanumériques. Il se constitue du démon lui-même pilotant différents modèles d’afficheurs via des pilotes/greffons spécifiques. Un utilitaire client permet d’afficher quelques informations de base concernant le système comme la charge CPU, la mémoire disponible, etc. Dernière fonctionnalité intéressante, il est capable de fonctionner localement, mais également via le réseau.
Ainsi, la machine où est connectée l’afficheur n’est pas nécessairement celle qui affiche les informations. Il est même possible de connecter plusieurs clients à un seul serveur d’affichage et ainsi partager la ressource.
Matériel
Le montage ne présente pas de difficulté particulière. Nous opterons ici pour la solution la plus simple et la moins coûteuse consistant à utiliser un afficheur LCD basé sur le contrôleur HD44780 ou compatible connecté au port parallèle du PC.
Notez cependant qu’il existe d’autres solutions prises en charge par les pilotes LCDproc, comme la connexion USB ou série. Bien qu’il soit fort probable que vous souhaitiez utiliser un véritable montage, sachez qu’il est également possible d’utiliser une émulation basée sur ncurses pour un affichage en mode texte dans un terminal ou une console.Tout le montage se base sur l’afficheur lui-même qui embarque toute la logique d’affichage. La figure 1 montre la connexion d’un afficheur avec le port parallèle. Il existe plusieurs types d’afficheurs LCD compatibles HD44780 se différenciant par leur nombre de lignes et de caractères par ligne :

Fig. 1
- 1 ligne de 16 caractères (16x1) ;
- 1 ligne de 20 caractères (20x1) ;
- 2 lignes de 16 caractères (16x2) ;
- 2 lignes de 20 caractères (20x2) ;
- 4 lignes de 20 caractères (20x4).
Les prix de ces afficheurs sont très variables. On pourra acquérir un 16x2 pour quelques 6 euros en cherchant bien et un 4x20 pour moins de 20 euros.
Chaque modèle se décline également en versions avec ou sans rétro-éclairage et en fonction de la couleur de l’afficheur. Les modèles les plus économiques utilisent un affichage vert/jaune et, si vous souhaitez mettre quelques euros de plus, vous pourrez choisir entre orange, rouge, bleu ou encore blanc.
Les afficheurs sont disponibles en version positive (texte noir sur fond de couleur) ou négative (texte de couleur sur fond noir).
Une gamme qui devrait satisfaire n’importe quel amateur de JackyPC exigeant. Comme le montrent les schémas en figure 1, l’afficheur est entièrement piloté par les huit lignes de données du port parallèle et trois des cinq lignes de contrôle. Le module d’affichage est normalement alimenté en +5 V, mais vérifiez la documentation avant toute connexion.
Le réglage du contraste se fait via un potentiomètre de 10 K Ohms comme spécifié sur le schéma. Vous pouvez le constater, la réalisation est très simple. Veillez simplement à bien réguler l’alimentation en ajoutant, au besoin, quelques condensateurs et à ne pas dépasser une trop grande distance pour la connexion au port parallèle.
Logiciel
Quelle que soit la distribution utilisée, les outils LCDproc sont normalement présents sous forme de paquets dont l’installation sera très simple. Il vous suffira de renseigner quelques points dans le fichier
/etc/LCDd.conf concernant le type d’afficheur et le mode de connexion. Ici :
|
|
Driver=HD44780
[HD44780]
Port=0x378
ConnectionType=winamp
Keypad=no
Backlight=no
Size=20x4
DelayBus=true |
Le schéma de connexion fourni est celui référencé sous la désignation winamp. Il en existe d’autres que vous pourrez consulter sur le site officiel (http://lcdproc.omnipotent.net/) à la section " Hardware ".
Une fois le fichier correctement renseigné, il ne vous restera plus qu’à lancer le démon via le script d’init fourni avec le paquet. Certaines distributions nécessiteront des ajustements spécifiques pour lancer le service dès le démarrage du système. Le démon lancé, tous les clients compatibles pourront s’y connecter et piloter l’afficheur. Un premier test se résumera par le lancement de l’application cliente par défaut :
lcdproc. Un certain nombre d’informations s’afficheront alors sur le module.
Note : Avec la distribution Debian, le binaire client est
/usr/share/doc/lcdproc/examples/lcdproc.gz. Il faut le décompresser et l’exécuter localement ou le placer dans
/usr/local/bin.
Contrôle de l’afficheur
Comme dit plus haut, le démon fonctionne en réseau. Par défaut, celui-ci écoute sur l’interface du localhost et le port 13666. Le protocole permettant de piloter l’afficheur prend la forme d’un échange de données textuelles. Ainsi, il est possible d’afficher ce qui nous chante à l’aide d’un simple client Telnet.
Le dialogue avec le démon est relativement simple et suit la procédure suivante :
- Dire " bonjour " ;
- Définir un ou plusieurs nouveaux écrans et leurs widgets ;
- Couper la connexion pour arrêter l’affichage des données.
Voici un exemple (les
> et
< ne sont là que pour indiquer la provenance des messages) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
% telnet 127.0.0.1 13666
> hello
< connect LCDproc 0.4.5 protocol 0.3
lcd wid 20 hgt 4 cellwid 5 cellhgt 8
> screen_add monecran
< success
< listen monecran
> widget_add monecran letitre title
< success
> widget_set monecran letitre “Voila un beau titre”
< success
> widget_add monecran lecoucou string
< success
> widget_set monecran lecoucou 1 2 “tralala le texte”
< success
> widget_add monecran barre hbar
< success
> widget_set monecran barre 1 4 74
< success
> screen_set monecran -priority 128
< success |
Voici la syntaxe des commandes qui viennent d’être utilisées :
- screen_add nom_de_l_écran
- widget_add nom_de_l_écran nom_du_widget type
- widget_set nom_de_l_écran nom_du_widget données
Et la syntaxe des données pour les widgets utilisés :
- title : "chaîne de titre"
- string : x y "chaîne à afficher"
- hbar : x y taille_en_pixels
Les informations utilisées par les widgets comme le placement x et y ainsi que la taille dépendent des informations retournées après la directive
hello :
- wid 20 : Afficheur de 20 caractères (cellules) par ligne
- hgt 4 : Afficheur de 4 lignes
- cellwid 5 : Une cellule fait 5 pixels de large
- cellhgt 8 : Une cellule fait 8 pixels de haut
Référez-vous à la page de manuel de LCDd pour connaître les directives et les widgets utilisables ainsi que la syntaxe complète. La communication via Telnet permet de faire des essais, mais l’écriture du client final se fera de préférence en Perl. Un exemple complet est disponible sous le nom
lcdmetar.pl et fait appel au module
IO::Socket relativement simple d’usage. N’oubliez pas, le client doit rester connecté pour que l’écran reste affiché. Il faut donc prévoir que votre application boucle et soit à la fois en attente des informations à afficher et en liaison avec le démon LCDproc. L’usage de
cron reste possible pour les mises à jour des écrans, mais s’avère souvent être trop contraignant.
ProcMeter 3
En plus du binaire client
lcdproc, il existe un utilitaire capable d’afficher un certain nombre d’informations sur l’écran LCD. ProcMeter, c’est son nom, est généralement disponible pour toutes les distributions. Son aspect en tant qu’application graphique fait qu’on lui préfère souvent Gkrellm.

Fig. 2
Cependant son architecture modulaire est sa compatibilité avec LCDproc en font un outil de choix ici. ProcMeter utilise une syntaxe très particulière sous la forme d’une énumération d’informations à afficher : " module.info-format ". En appelant un des binaires, comme
procmeter3-lcd avec l’option
-h, vous verrez apparaître l’ensemble des formations disponibles :
|
|
[...]
Memory
------
Mem_Free (GTB) : The amount of memory that is free,
completely unused, wasted.
Mem_Used (GTB) : The amount of memory that is used,
excluding cache and buffers.
[...] |
Ici, pour afficher la quantité de mémoire libre, on utilisera
Memory.Mem_Free-t par exemple. Les lettres définissant le format sont
t pour texte,
g pour un graphe et
b pour une barre. La sortie fournie par l’option
-h permet, pour chaque information de chaque module, de connaître les formats utilisables (ici, les trois). Pour spécifier les informations à afficher, trois solutions s’offrent à vous. En argument sur la ligne de commande, dans le fichier
/etc/procmeterrc ou dans le fichier
personnel ~/.procmeterrc (ou autre spécifié par l’option
-rc=).
Conclusion
Le support des afficheurs LCD pour GNU/Linux est à la fois très avancé et très stable. On regrettera l’absence d’équivalence pour les afficheurs graphiques qui, comme les modèles alphanumériques, sont de moins en moins chers. Enfin, notez qu’il existe également un support noyau pour les afficheurs HD44780 et compatibles. Rendez-vous sur
http://lcd-mod.sourceforge.net/ pour plus d’informations.
Note : Ce sujet a fait l’objet d’un article très différent dans GNU/Linux Magazine France 60. Le sujet se devait d’être traité dans ce hors-série, mais d’une autre manière pour éviter toute redondance.
Retrouvez cet article dans : Linux Magazine Hors série 23