Het gebruik van een serieel LCD-scherm onder Linux

ArticleCategory: [Meerdere artikel categori�n mogelijk]

Hardware

AuthorImage:[Ein Bild von Dir]

[Guido Socher]

TranslationInfo:[Author and translation history]

original in en Guido Socher

en to nl Guus Snijders

AboutTheAuthor:[Eine kleine Biographie �ber den Autor]

Guido is al heel lang Linux fan. Zijn home page is vinden op www.oche.de/~bearix/g/.

Abstract:[Here you write a little summary]

Dit artikel laat zien hoe je een 'BLC2021 PC-Bay Insert' serieel scherm van Matrix Orbital kunt gebruiken onder Linux. De BLC2021 is een klein dot matrix LCD display, dat zeer eenvoudig te gebruiken is en geen extra controller of gecompliceerde driver nodig heeft.

ArticleIllustration:[This is the title picture for your article]

[Illustratie]

ArticleBody:[The article body]

Introductie

Met een beetje hobbyisme kun je je oude PC gebruiken als een MP3 speler voor in de woonkamer, om de centrale verwarming in huis aan te sturen of inzetten als een intranet server. De mogelijkheden zijn bijna eindeloos. In deze gevallen zou het prettig zijn de computer in een kleine metalen kast te hebben, zonder grote monitor en keyboard. In plaats daarvan zou je een klein LCD schermpje hebben dat de titel van het huidige nummer van de MP3 speler, de temperatuur van de thermostaat, of de status van je server weergeeft.

De LCD displays van matrix-orbital zijn ideaal voor zulke toepassingen.

LCD's en computer electronica zijn vaak behoorlijk gevoelige dingen. Een LCD verkeerd - of met een te hoog voltage - aansluiten kan je display gemakkelijk beschadigen. In dit artikel presenteren we de BLC2021 PC bay voor op de seriële poort, omdat deze zeer eenvoudig te installeren is, en de nodige kabels meegeleverd heeft. Het enige dat je nodig hebt om de BLC2021 te installeren is een kleine schroevendraaier. Dankzij de kant-en-klare kabels en connectoren die bij de BLC2021 worden meegeleverd, kan er bijna niks meer misgaan.

De installatie

De BLC2021 wordt met alle benodigde kabels geleverd en past in een 5.25 inch PC slot. Je moet de voeding aansluiten op de interne voeding van de PC en de platte kabel (flat cable) op een RS232 seri�le poort. Een mogelijkheid om dit te doen, is met de kabel door een leeg slot aan de achterkant v/d pc te gaan en dan aan te sluiten op de externe RS232 connector.

Matrix-orbital levert driver software op een floppy. Deze bevat lcdproc-0.3.3 voor Linux. Het is GPL software en is beschikbaar als broncode op de floppy. Alleen is lcdproc-0.3.3 geschreven voor displays met 4 regels en de BLC2021 heeft er slechts 2. Daardoor is het mogelijk dat de display knippert.
Recentere versies van lcdproc lijken bruikbaar met tweeregelige schermen, maar dat heb ik nog niet getest.

lcdproc is bedoeld om op bepaalde tijden systeeminformatie weer te geven zoals uptime en geheugengebruik.
In dit artikel zullen we lcdproc niet gebruiken. We zullen een meer algemenee manier laten zien om informatie op een lcd weer te geven. Het gebruik van het scherm is heel eenvoudig en eigenlijk heb je geen gecompliceerde driver software nodig voor Linux. Het enige dat je hoeft te doen is de seri�le poort correct te initialiseren, en dan kun je zelfs een eenvoudig shell script gebruiken om de LCD display aan te sturen. De rest van dit artikel legt uit hoe dit in z'n werk gaat.

Het LCD scherm gebruiken

De BLC2021 is in staat normale ASCII karakters vanaf de seri�le lijn te lezen, maar voordat je dat kunt, moet je eerst de seri�le lijn initialiseren:

  1. Download het mtxorb programma (mtxorb-0.2.tar.gz) en pak het het uit met tar zxvf mtxorb-0.2.tar.gz (let op dat sommige browsers .gz bestanden uitpakken tijdens het downloaden, maar niet hernoemen naar mtxorb-0.2.tar. Gebruik in dat geval tar xvf mtxorb-0.2.tar.gz).
  2. Compileer het: cd mtxorb-0.2; make
  3. Cre�er een softlink naar het device waar de LCD display op aan is gesloten:
    cd /dev; ln -s ttyS0 lcd ����(voor de eerste seriële poort, COM1)
    cd /dev; ln -s ttyS1 lcd ����(voor de tweede seriële poort, COM2)
  4. Mtxorb neemt aan dat je de jumpers op de display hebt insgesteld op een lijnsnelheid van 19200 baud. Dit is de standaard (fabrieks) instelling voor de BLC2021.
  5. Gebruik het commando mtxorb om de seri�le lijn te initialiseren:
    mtxorb /dev/lcd

Nu is de display klaar voor gebruik. Hier is een klein voorbeeld van een perl script dat een teller weergeeft die elke seconde optelt:

#!/usr/bin/perl -w
open(LCD,">/dev/lcd")||die "ERROR: can not write to /dev/lcd\n";
$|=1;
my $i=0;
while(1){
    $i++;
    print LCD chr(0xFE),"X"; # clear the display
    print LCD "Count $i\n";
    sleep(1);
}
close LCD;

De BLC2021 begrijpt een paar commando's. Om in de 'command mode' te komen, stuur je het hexadecimaal karakter FE naar de display en daarna het eigenlijke commando karakter. Het commando X wist het scherm. De commando's staan beschreven in de kleine handleiding die bij het scherm wordt geleverd. Er zijn bijv. commando's om het contrast te regelen, de achtergrondverlichting in/uit te schakelen, en om je eigen karakters te maken.

Systeeminfo naar de display schrijven

Zoals eerder gezegd is het mogelijk om systeeminfo zoals swap, geheugengebruik en systeembelasting weer te geven. Dit kan bijvoorbeeld met behulp van een programma als lcdproc.

Een andere mogelijkheid is om gebruik te maken van het eerder genoemde mtxorb programma, en dan een scriptje te schrijven. De uptime kun je uitlezen uit /proc/uptime, swapgebruik uit /proc/meminfo en systeembelasting uit /proc/loadavg. Dat is exact wat dit perl script, lcdwriter genaamd, doet. Omdat het een script is, kun je het makkelijk aanpassen, zodat het ook andere dingen kan weergeven.

Waar kan ik de BLC2021 verkrijgen?

Matrix Orbital lijkt een typisch voorbeeld te zijn van een bedrijf met goede producten, maar slechte marketing. De LCD display die ze me wilden sturen is nooit aangekomen. Op de website van Matrix Orbital is een lijst van distributeurs te vinden. Voor Duitsland is dit bijv. "Elektronikladen.de" welke deze displays verkoopt. Ik bestelde er een, en kreeg hem binnen de 24 uur aan. Zeer snelle service! De lijst van distributeurs bevat uiteraard ook adressen van verkopers in andere landen. De prijs van de BLC2021 is iets minder dan 100 Euro.