Вспомогательный ЖК дисплей для ПК, аппаратный приемник сигналов ИК пульта и просто часы с термометром

С чего все началось

Началось все с появления плагина "Display & IR control device" для мультимедийной оболочки "Медиа портал" который позволяет выводить на вспомогательный алфавитно-цифровой дисплей информацию о том, какой сейчас проигрывается файл, время от начала и до конца, выбранный режим и др. Также в эту приставку встроен приемник ИК сигналов пульта ДУ (формат NEC), что позволяет в свою очередь управлять компьютером.

Первая версия приставки была разработана на базе микроконтроллера PIC16F887 (он является усовершенствованым аналогом популярного PIC16F877A) и двухстрочного дисплея с двадцатью символами в строке. Я хотел символы побольше, но побольше найти в доступных магазинах я не смог. Учитывая, что текст будет читаться с большого расстояния и чаще при неярком освещении я выбрал инверсный дисплей BC2002B. Когда ПК выключен, я отключаю ATX-блок питания полностью, поэтому питание на приставке исчезает полностью. Чтобы не сбивались часы я установил часы-календарь DS1307. Вместо литьевой батарейки на 3 В я установил ионистор с цепью подзарядки. Последний раз приставка обесточивалась на 2 месяца и часы не сбились. А мне больше и не нужно, поэтом про батарейки я забуду :).

Во время ожидания у меня есть 2 строки по 20 символов. Вывел я на них время, дату и день недели. Стало скучно. Повесил цифровой датчик DS18B20 и получил термометр. Добавил внешнюю память 24aa32 и получил возможность загрузки длиииинной строки, которую можно во второй строчке транслировать. Я туда прогноз погоды на 10 дней прошивал.

Эта приставка прожила у меня полтора года без нареканий! Одно удовольствие, особенно безотказная работа пульта ДУ (в отличие от опыта работы с winLIRC, где при появлении загрузки ПК выше 30% резко сокращалось количество распознанных нажатий клавиш).

Улучшение

Появилась у меня необходимость в создании еще одной копии приставки. Я решил не повторяться и поставить новый МК PIC18F14K50, который пообещал мне получить аппаратный USB 2.0 порт и просто больше мощи :)

Схему я незначительно изменил, но основные узлы остались прежние:

Приставка к ПК. ЖК-дисплей + сприемник ИК сигналов пульта ДУ + часы реального времени на базе PIC18F14K50

Расписывать принцип работы я не буду, из схемы все ясно.
Для желающих повторить прикладываю печатную плату в формате sLayout 4.

Печатная плата. На плате установленны PIC18F14K50, DS1307, 24LC256, 7805

Плата выполнялась (естественно) популярной лазерно-утюжной технологией.

Печатная плата. Вид на дорожки

Плата разрабатывалась с учетом того, чтобы поместиться за дисплеем и крепиться за штатные отверстия. Подстроечный резистор служит для подстройки контрасности дисплея. Яркость подсветки выставлется программно.

Вот так зкреплена плата с микроконтроллером за ЖКИ дисплеем

Так выглядит дисплей во время ожидания. В первой строке последовательно отображается текущее время, дата и день недели; температура в комнате и на улице, рост или спад температуры (стрелкой) и статистика минимальной и максимальной температуры за последние 24 часа. Во второй строке самореклама, пока :)

Текущее время, дата, день недели на экране инверсного ЖКИ дисплея

Температура на улице -2.1 градусь Цельсия; тенденция - снижение температуры; минимальная/максимальная температура за последние 24 часа 0/0

Прошивка

Для работы USB в режиме High Speed нам понадобиться кварц на 12 МГц. Со встроенным генератором USB не работает.

Прошивка от 10.01.2010 (здесь).

Использовать приставку можно и с любой другой прораммой, нужно лиш соблюдать систему команд приведенную на странице с описанием предыдущей приставки Display 1.

Например, для установки курсора в точку с координатами "5й символ 1й строки" нужно подать следующую последовательность команд: 0x22 (команда CMD_LCD_GOTO) 0x05 (координаты курсора в памяти дисплея, первая строка обычно это 0x00...0x3F; вторая строка 0x40...0x7F). На что приставка ответит 0x02 (CMD_ACCEPTED, команда распознана и выполнена), 0x22 (CMD_LCD_GOTO, наименование команды, которая была распознана).

Вывод текста в текущей позиции: 0x23 (CMD_LCD_TEXT), This is the text (текстовая строка длиной не более длины строки. У меня ограничение на 22 символа), 0x00 (символ окончания текстовой строки). Приставка ответит: 0x02 0x23

Демонстрация работы плагина и приставки


Вспомогательные материалы

Файл "DirControlDevicePlugin.DisplayStates.xml" содержит оформление информации выводимой на дисплей. Мой файл расчитан на дисплей 20x2:


Файл "DirControlDevicePlugin.Cyrylic.CharacterTranslations.xml" содержит таблицу преобразования киррилических символов из кодировки UTF-8 (ну и win-1251) в киррилическую кодировку зашитую в ЖКИ (LCD) дисплеи на контроллере типа HD44780 (KS0066U). В связи с тем, что стандартная таблица символов контроллера HD44780 (KS0066U) не содержит украинских символов, они загружаются программно, после подачи питания.


Файл "DirControlDevicePlugin.DisplayTypes.xml" содержит геометрию Вашего ЖКИ дисплея (8x1, 16x2, 0x20). Файл легко подправить под Ваш дисплей вручную.

Эти файлы следует положить рядом с файлом плагина.

05.01.2010