LCD w akcji
Ostatnia zmiana: 2014-05-02 11:29
LCDproc jest kolejnym, po
lcd4linux projektem umożliwiającym wyświetlanie danych na różnorodnych wyświetlaczach LCD. Zestaw obsługiwanych urządzeń jest dość pokaźny, do przygotowania tego opisu posłużyłem się wyświetlaczem
Soundgraph iMON VFD/IR który można znaleźć w niektórych obudowach komputerowych (Soundgraph), jak i w postaci niezależnych urządzeń. Wyświetlacz jest fluorescencyjny (VFD), a jego znakiem szczególnym jest fakt "świecenia" wyświetlanych znaków.


Instalacja sterownika wyświetlacza
Przed uruchomieniem samego procesu wyświetlania niezbędne jest zainstalowane odpowiednich sterowników dla danego typu wyświetlacza, które obecnie można je znaleźć po prostu w kernelu. Nie są one domyślnie pakietowane, dlatego też przygotowałem odpowiednią paczkę dla platformy
ar71xx:
# opkg update
# opkg install kmod-input-core kmod-ir-core kmod-ir-imon
Poprawna instalacja zakończy się wykryciem odpowiedniego urządzenia - w logach (
logread) pojawi się podobna do tej informacja:
[ 493.280000] input: iMON Panel, Knob and Mouse(15c2:ffdc) as /devices/platform/ohci-platform/usb1/1-1/1-1:1.0/input/input0
[ 493.310000] imon 1-1:1.0: Unknown 0xffdc device, defaulting to VFD and iMON IR (id 0x23)
[ 493.320000] Registered IR keymap rc-imon-pad
[ 493.330000] input: iMON Remote (15c2:ffdc) as /devices/platform/ohci-platform/usb1/1-1/1-1:1.0/rc/rc0/input1
[ 493.340000] rc0: iMON Remote (15c2:ffdc) as /devices/platform/ohci-platform/usb1/1-1/1-1:1.0/rc/rc0
[ 493.370000] imon 1-1:1.0: iMON device (15c2:ffdc, intf0) on usb<1:2> initialized
Wyświetlacz ma jeszcze kilka innych funkcji (o czym będzie dalej), na tym etapie ważne jest pojawienie się urządzenia
/dev/lcd0:
# ls -al /dev/lcd0
crw-r--r-- 1 root root 180, 144 Apr 27 18:20 /dev/lcd0
Na tym etapie można już sprawdzić działanie wyświetlacza, należy po prostu do urządzenia /dev/lcd0 wysłać żądany tekst. Zadziała więc:
# echo -n "Witaj swiecie" > /dev/lcd0
czy
# date "+%Y-%m-%d %H:%M:%S" > /dev/lcd0
Należy pamiętać o kilku elementach (które są silnie powiązane z tym rodzajem wyświetlacza):
- wyświetlacz ma 2 linie po 16 znaków, próba wyświetlenia więcej niż 32 znaków zakończy się błędem
- czyścimy wyświetlacz wysyłając po prostu pusty ciąg ("")
- tekst przenoszony jest automatycznie do następnej linii jeżeli wysłany ciąg ma więcej niż 16 znaków (stąd też spacje w drugim poleceniu)
- nie dysponujemy całym zestawem znaków. Omawiany wyświetlacz ma np. kilka chińskich (?) znaków i nie posiada polskich znaków diakrytycznych
- tym bardziej nie rozpoznaje znaków w utf-8
Instalacja pakietu
Niestety, jakość tego pakietu jest kontrowersyjna - żeby działał wymaga paru zmian, które wykonujemy zwykłym edytorem tekstowym: z plików
/etc/init.d/LCDd i
/etc/init.d/lcdproc usuwamy spacje z końca pierwszej linii.
Konfiguracja
W pliku
/etc/LCDd.conf należy wskazać jakiego sterownika używamy i gdzie są sterowniki do wyświetlaczy; resztę elementów można na razie pozostawić w pierwotnym stanie. Aby wykonać wymaganą zmianę należy edytorem w sekcji
[server] ustawić dwie zmienne:
DriverPath i
Driver na następujące:
[server]
DriverPath=/usr/lib/lcdproc/
Driver=imon
Uruchomienie i testy
Sam LCDproc składa się tak naprawdę z dwóch elementów: serwera który nasłuchuje na określonym porcie na polecenia oraz klienta który zajmuje się wyświetlaniem danych.
Uruchomienie serwera
# /etc/init.d/LCDd enable
# /etc/init.d/LCDd start
Uruchomienie klienta
Skoro serwer został uruchomiony, można z nim porozumieć się na kilka różnych sposobów. Lista klientów jest
dość duża, odpowiednie przykłady znajdziemy też w paczce źródłowej; tutaj posłużymy się dostępnymi od razu w systemie możliwościami.
Wyświetlanie danych systemowych można zrealizować uruchamiając program
lcdproc z zainstalowanego pakietu, np:
Będą cyklicznie wyświetlane takie dane jak nazwa hosta, czas, zużycie pamięci, load itd. Jeżeli chcemy aby działo się to automatycznie po starcie systemu to wystarczy wykonać:
# /etc/init.d/lcdproc enable
# /etc/init.d/lcdproc start
Plik konfiguracyjny (co ma wyświetlać i jak) to
/etc/lcdproc.conf.
Soundgraph iMON VFD/IR
Wyświetlacz ten dysponuje też jednym pokrętłem z możliwością naciśnięcia oraz odbiornikiem IR.
Obsługa pokrętła
Pokrętło zachowuje się jak normalna klawiatura: zgłaszane są trzy zdarzenia: KEY_MIN_INTERESTING, KEY_VOLUMEDOWN i KEY_VOLUMEUP, więc cała instalacja i obsługa sprowadza się do kilku prostych poleceń (wykorzystany zostanie pakiet
triggerhappy):
# opkg install kmod-usb-hid triggerhappy
# echo "KEY_MIN_INTERESTING 1 logger \"LCD - press\"" >> /etc/triggerhappy/triggers.d/example.conf
# echo "KEY_VOLUMEDOWN 1 logger \"LCD - down\"" >> /etc/triggerhappy/triggers.d/example.conf
# echo "KEY_VOLUMEUP 1 logger \"LCD - up\"" >> /etc/triggerhappy/triggers.d/example.conf
# /etc/init.d/triggerhappy enable
# /etc/init.d/triggerhappy start
Oczywiście zamiast
logger... można wstawić swoje polecenia, np. mute, volume up i down czy start/stop radia internetowego wraz z przeskakiwaniem na poszczególne stacje. Można też dzięki niemu zmieniać np. dane które są wyświetlane.
Obsługa podczerwieni
Odbiornik zawarty w tym module obsługuje protokół RC-6 oraz Other (inny).
Konfiguracja jest ułatwiona, ponieważ dostępna jest już przygotowana mapa klawiatury, więc cała konfiguracja to tylko wywołanie programu
ir-keytable:
# opkg install v4l-utils
# ir-keytable -s rc0 -w /etc/rc_keymaps/imon_pad
I później odpowiednio skonfigurować
triggerhappy.
Obsługiwany zestaw znaków