International conference of developers
and users of free / open source software

Построение домашнего медиацентра с помощью LIRC

Алексей Бутько, Минск, Беларусь

LVEE 2011

LIRC is a package that allows to decode and send infra-red signals of many (but not all) commonly used remote controls. All remote controls that are supported by learning remote controls, i.e. almost any, should also work with LIRC. The most important part of LIRC is the lircd daemon that decodes IR signals received by the device drivers and provides the information on a socket. The user-space applications allow you to control your computer with remote control, i.e. to send X events to applications, start programs and much more on just one button press.

Для многих компьютер заменил все аудио и видео-устройства в доме. У многих представителей профеcсии, включая автора, в доме отсутствует даже телевизор. Однако, общение с компьютером как с медиацентром происходит совсем иначе, чем с бытовыми медиа-устройствами. Хоть «компьютерный» способ привычен и понятен, он все же не очень удобен.

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

В Linux имеется мощный инструмент работы с ПДУ – lirc (Linux Infrared Remote Control). В первую очередь для работы с пультом требуется ИК-приемник. Подойдет практически любой ИК-порт или TV-тюнер (список поддерживаемых устройств можно найти на сайте проекта http://lirc.org/html/table.html). Однако, если такого устройства нет под рукой, нет необходимости его покупать. ИК-приемник, позволяющий работать с любым пультом, можно изготовить: для этого требуется инфракрасный датчик от телевизора или любой подобный, расчитанный на напряжение 5 вольт.

Схема инфракрасного приемника:

Такое решение является наиболее простым и доступным, однако, т. к. COM-порт – уже исчезающий вид интерфейса, более привлекательными выглядят USB-приемники. Для его изготовления потребуется микроконтроллер.

Приемник базируется на микроконтроллере PIC18F2455, который может работать с USB-портом и является меньшей и более дешевой версией 18F2550. Семейство 18F можно программировать при помощи универсального PIC-программатора.

В состав пакета LIRC входят:

  • драйверы различных устройств (модули ядра)
  • демон lircd, преобразующий ИК сигналы, полученные от драйвера, в стандартные сообщения, которые прикладные программы могут получить через сокет
  • демон lircmd, получающий сообщения от lircd и имитирующий мышь в X Windows
  • irexec – запуск программ по нажатию кнопки ДУ
  • irxevent – посылка X Windows сообщения по нажатию кнопки ДУ
  • irpty – псевдотерминал, запускающий программу и имитирущий нажатие клавиш клавиатуры

Кроме того, стоит упомянуть вспомогательные программы для отладки и настройки:

  • irrecord – утилита для записи сегналов пульта и создания lircd.conf
  • irw – читает сообщения с сокета lircd и выдает на stdout; в качестве параметра можно указать имя сокета
  • ircat – отладочная программа для конфигурационного файла /.lircrc; в качестве параметра указывается имя программы (точнее имя описывающей её секции); по нажатию кнопки на пульте ДУ ircat выводит на stdout строку, привязанную к этой кнопке
  • mode2, smode2, xmode2 – осциллоскоп для инфракрасных сигналов
  • irsend – посылает команды на инфракрасные приемники (если позволяет оборудование)

В Linux существует множество приложений, направленных на централизованную работу с мультимедиа, например MythTV, Elisa, XBMC. Однако, очевидно, что пульт может использоваться совместно с множеством других программных пакетов.

presentation