Вывод информации в на LCD дисплей в режиме реального времени, используя LCDproc и lcdmod
 
Автор: (C) Gaurav Taneja
Перевод: (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 дисплеи имеют возможность подсветки, другие нет; в случае, если такая возможность есть, то для управления ею требуется дополнительный вывод и такой дисплей обойдется вам немного дороже. В любом случае, выбор за вами!!

Предостережение

Перед тем как приступить к этому захватывающему эксперименту, запомните: LCD дисплеи очень чувствительны к неправильному подключению и работают только при определённом напряжении (как правило 5 или 12 вольт), если что-то перепутано в распайке, они сгорят!! Поэтому прежде, чем совершать покупку, убедитесь, что в поставке есть схема распайки (подключения) и описание технических характеристик LCD дисплея (вольтаж и пр.); любая дополнительная информация, которой вы будете располагать, окажется очень кстати.

И это всё, что мне нужно?

Перед тем как вы приступите, убедитесь, что у вас есть всё согласно списку:
    HD44780-совместимый LCD дисплей (не беспокойтесь о марке производителя, только удостоверьтесь у продавца, что дисплей действительно совместим с Hitachi HD44780; между прочим, HD44780 имеет встроенный контроллер, понимающий некоторые стандартные инструкции отображения символов на экране, используя при этом встроенный знакогенератор)7

    Разъём на параллельный порт (Centronics) с кабелем (убедитесь, что его длины достаточно и другой конец имеет свободные провода).3

    Паяльник плюс немного припоя и канифоли (попросите ваших "железных" друзей помочь вам, если сами сделать это не в состоянии).

    Источник питания (в зависимости от модели LCD дисплея вам потребуется 5-и или 12-и вольтовый источник постоянного тока, такой вы можете приобрести в местных магазинах по продаже электроники).

    LCDproc (можно скачать с http://lcdproc.omnipotent.net ) или/и lcdmod (найдёте на http://lcd-mod.sourceforge.net )

Займёмся монтажом!!

Прежде чем приступить к монтажу, запомните: вы должны быть абсолютно уверены в том, что именно вы делаете, иначе можно повредить и дисплей (LCD), и компьютер, так что если вы не знакомы со сборкой простейших электронных схем, не падайте духом, попросите о помощи кого-нибудь из знакомых "зубров" электронного дела.

Я беру в качестве примера дисплей HD44780, который соединяется через параллельный порт с моей Linux-машиной по  следующей схеме

Wiring Scheme (HD44780)

Эта схема подключения отлично себя зарекомендовала на всех типах дисплеев HD44780 и, надеюсь, будет неплохо работать в вашем случае тоже. Вы можете проверить работоспособность дисплея регулируя резистор "Contrast" (см. на схеме), при минимальном значении сопротивления вы должны увидеть тёмные полосы.4

Установка программного обеспечения

Я приведу примеры для обоих пакетов: LCDproc и lcdmod. Для тестирования дисплея вы можете установить их оба. Если вы новичок, то для начала лучшим выбором будет LCDproc.

Сперва распакуйте архивы, которые вы скачали:

[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
Это оживит ваш дисплей и покажет примерно следующее:

LCD Display

LCD Display

LCD Display

К тому моменту, как вы установили и настроили LCDproc, вы должны были понять, что это программное обеспечение основано на модели клиент-сервер. Сервер LCDproc стартует первым, соединяется с программами клиентами и отображает посылаемую ими информацию. Кстати, вы можете, используя telnet, подключиться к LCDproc-серверу (если быть точным, к демону LCDd) и выполнять команды вручную. Но если вы хотите получить более быстрый механизм отображения, то вам нужно отказаться от всех этих "сокетных" штучек. В этом случае вас спасёт lcdmod.

Lcdmod

Lcdmod -- это драйвер символьного устройства для 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.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 77 of Linux Gazette, March 2002

Вернуться на главную страницу