Connectez un afficheur LCD
icone embarque
Signature :
GNU/Linux Magazine
Sommaire de l'article :

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 :

/img-articles/lmhs/23/art-11/fig-1.jpg

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) :
% 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.

/img-articles/lmhs/23/art-11/fig-2.jpg

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

Brèves
Édito : Linux Pratique Essentiel N°24
Édito : Linux Pratique HS N°23
Édito : GNU/Linux Magazine 146
Édito : GNU/Linux Magazine HS N°58
Édito : Open Silicium N°5
Communication
Linux Pratique HS 23 – Communiqué de presse
Linux Pratique Essentiel N°24 – Communiqué de presse
Gnu/Linux Magazine sponsor et partenaire de PROLOGIN
Linux Essentiel partenaire des Rencontres du Libre de Lion sur Mer (Normandie)
GNU/Linux Magazine HS 58 – Communiqué de presse
prochainement moteur de recherches des articles
 
:
:
Jours heures minutes secondes
En kiosque
Le tout nouveau Linux Pratique Essentiel est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau GNU/Linux Magazine HS est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Open Silicium est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Misc est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Laissez une réponse

Vous devez avoir ouvert une session pour écrire un commentaire.