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



    # opkg install lcdproc

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:


    # lcdproc -f C M G L T

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