Автор: (C) Gaurav Taneja
(tanejagaurav.hotmail.com)
Перевод: (C) Александр Куприн
Становясь Системным Администратором1 или энтузиастом-пользователем Linux, мы всегда пытаемся держать перед глазами важную системную информацию, такую как использование дискового пространства, оперативной памяти, загруженность процессора, количество пользователей зарегистрированных в системе и т.п. А как насчёт того, чтобы отслеживать всё это на маленьком симпатичном жидкокристаллическом дисплее, стоящим рядом с вашим монитором?
LCD или жидкокристаллический дисплей (Liquid Crystal Display) можно встретить везде, начиная от электронных часов и микроволновых печей и заканчивая аудиосистемами и КПК, а также некоторыми high-end серверами. В коммерческом исполнении по сравнительно низким ценам существует несколько вариантов таких дисплеев2, которые управляются через параллельный или последовательный порт компьютера. LCD изготовляются несколькими компаниями. Как отдельный вид продукции они попадают на рынок товарными излишками от таких компаний как Hitachi, Epson, Hewlett Packard, Optrex или Sharp. Обычно встречаются конфигурации одно, двух или четырёх-строчные по 16, 20, 24, 32 или 40 символов в строке.
Лично я проверял в работе управляемую через параллельный порт модель Hitachi HD44780 (16 символов, две строки), которую можно найти у многих продавцов такого рода техники (имеется ввиду дисплеи и т.п.). Имейте ввиду, что некоторые LCD дисплеи имеют возможность подсветки, другие нет; в случае, если такая возможность есть, то для управления ею требуется дополнительный вывод и такой дисплей обойдется вам немного дороже. В любом случае, выбор за вами!!
Разъём на параллельный порт (Centronics) с кабелем (убедитесь, что его длины достаточно и другой конец имеет свободные провода).3
Паяльник плюс немного припоя и канифоли (попросите ваших "железных" друзей помочь вам, если сами сделать это не в состоянии).
Источник питания (в зависимости от модели LCD дисплея вам потребуется 5-и или 12-и вольтовый источник постоянного тока, такой вы можете приобрести в местных магазинах по продаже электроники).
LCDproc (можно скачать с http://lcdproc.omnipotent.net ) или/и lcdmod (найдёте на http://lcd-mod.sourceforge.net )
Я беру в качестве примера дисплей HD44780, который соединяется через параллельный порт с моей Linux-машиной по_ следующей схеме
Рисунок с разводкой HD44780 на http://gazette.linux.ru.net/lg77/articles/misc/taneja/parlcd.png
Эта схема подключения отлично себя зарекомендовала на всех типах дисплеев HD44780 и, надеюсь, будет неплохо работать в вашем случае тоже. Вы можете проверить работоспособность дисплея регулируя резистор "Contrast" (см. на схеме), при минимальном значении сопротивления вы должны увидеть тёмные полосы.4
Сперва распакуйте архивы, которые вы скачали:
[root@Linux gaurav]# tar -zxvf lcdproc-0.4.1.tar.gz
Затем настройте
LCDproc согласно вашим параметрам
[root@Linux gaurav]# cd lcdproc-0.4.1
[root@Linux lcdproc-0.4.1]# ./configure --enable-drivers=curses,hd44780
Эти опции конфигурационного скрипта создадут Makefile, который соберёт LCDproc с поддержкой двух драйверов hd44780 и curses, второй нам нужен для тестирования.5
Теперь давайте соберём и установим исходники:
[root@Linux lcdproc-0.4.1]# make installПопробуйте протестировать работу LCDproc. Запустите сервер:
[root@Linux lcdproc-0.4.1]# LCDd -d curses -fЭто позволит отображать на небольшом участке экрана вашего терминала информацию о системе, прокручивая её раз за разом. Теперь перейдём к более реальным вещам!! (Подождите! Прежде чем переходить к "реальным вещам", давайте посмотрим на работу LCDproc в режиме отладки -- запустите в соседнем терминале lcdproc: lcdproc C M T X и переключитесь на терминал, где вы запустили LCDd с ключами -d curses -f. Прим.перев.) Подключите LCD дисплей к компьютеру, подайте на него напряжение (Именно в такой последовательности! Прим.перев.) и перезапустите сервер LCDproc с новым ключом:
[root@Linux lcdproc-0.4.1]# LCDd -d hd44780
[root@Linux lcdproc-0.4.1]# lcdproc C M T XЭто оживит ваш дисплей и покажет примерно следующее:
Рисунки с изображением дисплея, лежат на http://gazette.linux.ru.net/lg77/articles/misc/taneja
К тому моменту, как вы установили и настроили LCDproc, вы должны были понять, что это программное обеспечение основано на модели клиент-сервер. Сервер LCDproc стартует первым, соединяется с программами клиентами и отображает посылаемую ими информацию. Кстати, вы можете, используя telnet, подключиться к LCDproc-серверу (если быть точным, к демону LCDd) и выполнять команды вручную. Но если вы хотите получить более быстрый механизм отображения, то вам нужно отказаться от всех этих "сокетных" штучек. В этом случае вас спасёт lcdmod.
Давайте теперь инсталлируем lcdmod, я предполагаю, что ваш LCD дисплей правильно подключён и протестирован при помощи LCDproc.
Сперва распакуйте исходники, затем перейдите в каталог, куда они были скопированы:
[root@Linux gaurav]# tar -zxvf lcdmod-0.5.5.tgz
[root@Linux gaurav]# cd lcdmod-0.5.5
Соберите "сырцы" и установите их:
[root@Linux lcdmod-0.5.5]# make
[root@Linux lcdmod-0.5.5]# make installТак мы создадим LKM (Linux kernel Module -- модуль ядра Linux) и устройство с именем 'lcd', которое будет указывать на ваше "железо".
Добавьте LKM в общий список подключённых модулей при помощи команды:
[root@Linux lcdmod-0.5.5]# insmod lcd io=0x378 disp_rows=2 disp_cols=168Это объявление подключит к вашему ядру модуль lcd с описанием базового адреса ввода/вывода (io=0x378) параллельного порта, количества строк (disp_rows) и количества столбцов (disp_cols) вашего дисплея.
Теперь давайте проверим, действительно ли модуль заработал:
[root@Linux lcdmod-0.5.5]# lsmodЕсли всё в порядке, то в списке подключенных к ядру модулей вы увидите lcd.
Отлично! Теперь можно выводить на экран любой текст, достаточно выполнить простейшую команду:
[root@Linux lcdmod-0.5.5]#_ echo Hello > /dev/lcdНа дисплее появится слово "Hello".6 Итак, целью этой статьи было дать вам всю возможную информацию о методах управления LCD дисплеем, всё остальное теперь зависит от вашей способности творить и воплощать идеи в жизнь. Я использовал LCD дисплей при разработке системы авторизации доступа со специальной клавиатуры, причём вся эта конструкция должна была работать через web.
В свободное время я работаю над устройствами сопряжения для компьютеров и пишу для них программы, а также пишу софт под Linux. Заодно курирую свои собственные разработки в BroadStrike Technologies (http://www.broadstrike.com).