Вывод информации в на LCD дисплей в режиме реального времени,
используя LCDproc и lcdmod |
Становясь Системным Администратором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 дисплеи имеют возможность подсветки, другие нет; в случае, если такая возможность есть, то для управления ею требуется дополнительный вывод и такой дисплей обойдется вам немного дороже. В любом случае, выбор за вами!! ПредостережениеПеред тем как приступить к этому захватывающему эксперименту, запомните: LCD дисплеи очень чувствительны к неправильному подключению и работают только при определённом напряжении (как правило 5 или 12 вольт), если что-то перепутано в распайке, они сгорят!! Поэтому прежде, чем совершать покупку, убедитесь, что в поставке есть схема распайки (подключения) и описание технических характеристик LCD дисплея (вольтаж и пр.); любая дополнительная информация, которой вы будете располагать, окажется очень кстати.И это всё, что мне нужно?Перед тем как вы приступите, убедитесь, что у вас есть всё согласно списку:
Разъём на параллельный порт (Centronics) с кабелем (убедитесь, что его длины достаточно и другой конец имеет свободные провода).3 Паяльник плюс немного припоя и канифоли (попросите ваших "железных" друзей помочь вам, если сами сделать это не в состоянии). Источник питания (в зависимости от модели LCD дисплея вам потребуется 5-и или 12-и вольтовый источник постоянного тока, такой вы можете приобрести в местных магазинах по продаже электроники). LCDproc (можно скачать с http://lcdproc.omnipotent.net ) или/и lcdmod (найдёте на http://lcd-mod.sourceforge.net ) Займёмся монтажом!!Прежде чем приступить к монтажу, запомните: вы должны быть абсолютно уверены в том, что именно вы делаете, иначе можно повредить и дисплей (LCD), и компьютер, так что если вы не знакомы со сборкой простейших электронных схем, не падайте духом, попросите о помощи кого-нибудь из знакомых "зубров" электронного дела.Я беру в качестве примера дисплей HD44780, который соединяется через параллельный порт с моей Linux-машиной по следующей схеме
Эта схема подключения отлично себя зарекомендовала на всех типах дисплеев HD44780 и, надеюсь, будет неплохо работать в вашем случае тоже. Вы можете проверить работоспособность дисплея регулируя резистор "Contrast" (см. на схеме), при минимальном значении сопротивления вы должны увидеть тёмные полосы.4 Установка программного обеспеченияЯ приведу примеры для обоих пакетов: LCDproc и lcdmod. Для тестирования дисплея вы можете установить их оба. Если вы новичок, то для начала лучшим выбором будет LCDproc.Сперва распакуйте архивы, которые вы скачали: [root@Linux gaurav]# tar -zxvf lcdproc-0.4.1.tar.gz [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Это оживит ваш дисплей и покажет примерно следующее:
К тому моменту, как вы установили и настроили LCDproc, вы должны были понять, что это программное обеспечение основано на модели клиент-сервер. Сервер LCDproc стартует первым, соединяется с программами клиентами и отображает посылаемую ими информацию. Кстати, вы можете, используя telnet, подключиться к LCDproc-серверу (если быть точным, к демону LCDd) и выполнять команды вручную. Но если вы хотите получить более быстрый механизм отображения, то вам нужно отказаться от всех этих "сокетных" штучек. В этом случае вас спасёт lcdmod. LcdmodLcdmod -- это драйвер символьного устройства для HD44780-совместимых дисплеев написанный Michael McLellan. Он быстрее lcdproc и вы можете писать в устройство lcd также как вы пишите в любые другие подобные устройства (например, /dev/fd0).Давайте теперь инсталлируем 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. Дополнительная информацияДополнительную информацию о настройке и монтаже вы можете получить на страницах проектов LCDProc и lcdmod.Примечания переводчика1 Так и было -- с большой буквы. Сисадмины не зазнавайтесь. 8-)2 Имеются ввиду изделия практически не требующие доводки -- подключил и работай. 3 Думаю, проще будет взять кабель для LPT-порта и убрав (читай отпаяв) разъём, который подключается к принтеру. 4 Скорее это должно выглядеть как полоса, состоящая из прямоугольников. 5 Проверено с использованием curses -- работает. 6 Скорее всего автор не читал те же книжки по программированию, что и мы, иначе бы он написал "Hello, world!":). 7 Детальную информацию о технических характеристиках вы можете найти на Peer's LCD Pages. 8 В оригинале статьи автор при настройке указал ключи для дисплея 4x20, в то время как поначалу указал о том, что остановил свой выбор на конфигурации 2x16. Gaurav TanejaЯ работаю с Software MNC как технический консультант в Нью-Дели, Индия и активно вовлечён в проекты с открытыми исходниками размещенные на SourceForge и связанные с Linux, Java, C/C++.В свободное время я работаю над устройствами сопряжения для компьютеров и пишу для них программы, а также пишу софт под Linux. Заодно курирую свои собственные разработки в BroadStrike Technologies. Copyright (C) 2002, Gaurav Taneja.
|
Вернуться на главную страницу |