Схема подключения телевизионного пульта Raspberry Pi на дистрибутиве Raspbmc


Предыдущая | Следующая

Рассмотрим процесс подключения телевизионного пульта к мини-ПК Raspberry Pi на дистрибутиве Raspbmc. В этом примере использован инфракрасный (ИК) реси­вер SM3374 (рис. 6.8). Схема подключения ресивера представлена на рис. 6.9.

Декодировать инфракрасные сигналы многих (но не всех) обычно используемых пультов дистанционного управления позволяет пакет LIRC (Linux Infrared Remote Control, инфракрасный ПДУ для Linux). LIRC запускается как демон, который декодирует ИК-сигналы, полученные от драйверов устройств, и предоставляет на сокете соответствующую информацию. Нам нужно установить этот пакет и его клиентские библиотеки. Все действия производим через SSH-соединение:

sudo apt-get install lirc liblircclient-dev

Вносим изменения в файл /etc/modules, записав туда строки:

lirc dev

lirc rpi gpio in pin=18

Это приведет к запуску модуля при загрузке.

Raspberry Pi GPIO

Листинг 6.5. Файл /etc/lirc/hardware.conf

#         /etc/lirc/hardware.conf

#

#         Arguments which will be used when launching lircd LIRCD_ARGS="—uinput"

#Don't start lircmd even if there seems to be a good config file #START_LIRCMD=false

#Don't start irexec, even if a good config file seems to exist. #START_IREXEC=false

#Try to load appropriate kernel modules LOAD_MODULES=true

#         Run "lircd —driver=help" for a list of supported drivers. DRIVER="default"

#         usually /dev/lirc0 is the correct setting for systems using udev DEVICE="/dev/lirc0"

MODULES="lirc_rpi"

#         Default configuration files for your hardware if any LIRCD_CONF=""

LIRCMD_CONF=""

Для выполнения быстрого теста, чтобы увидеть, что LIRC работает, необходимо остановить демон lirc и запустить mode2:

sudo modprobe lirc rpi sudo kill $(pidof lircd) mode2 -d /dev/lirc0

При нажатии кнопок на пульте дистанционного управления mode2 выведет в терми­нал длины инфракрасных импульсов:

pulse 168 space 4816 pulse 169 space 4784 pulse 1333 space 3638

Теперь нам нужно раздобыть файл конфигурации lircd.conf с кодами кнопок. На сай­те http://lirc.sourceforge.net/remotes можно найти уже готовые файлы конфигура­ции для очень многих пультов. Есть там такой файл и для используемого мной пульта LG 6710V00090D. Содержимое его представлено в листинге 6.6.

Листинг 6.6. Файл конфигурации lircd.conf

begin remote

name LG_6710V000 90D bits      13

flags RC5

eps

aeps

30

100

plead

gap

toggle_bit

one

zero

805  876

805  876

713 121999

2

begin codes power mute

0x100C

ы

1

0x1001

2

0x1002

3

0x1003

4

0x1004

5

0x1005

6

0x1006

7

0x1007

8

0x1008

9

0x1009

0

0x1000

eye

0x1037

i-ii

0x1036

pr-up

0x1020

pr-down

0x1021

vol-down

0x1011

vol-up

0x1010

ok

0x1025

q-view

0x1032

list

0x1034

psm

0x100E

ssm

0x1016

sleep

0x1026

picture

0x1013

sound

0x1024

end codes end remote

Закачанный файл конфигурации необходимо переименовать в lircd.conf и скопировать в папку etc/lirc. Если файл конфигурации вашего пульта найти не удастся, для его создания можно воспользоваться программой irrecord:

irrecord -d /dev/lirc0 -/lircd.conf

Запустив программу, нажимаем кнопки на пульте до тех пор, пока на экране не появятся 80 точек, и вбиваем наименования кнопок. Затем опять нажимаем кнопки. Получившийся файл lircd.conf и поместим в папку /etc/lirc.

Теперь заходим на мини-ПК Raspberry Pi и через меню Raspbmc Программы | Raspbms Settings | IR Remote устанавливаем поддержку нашего пульта, указав конфигурационный файл lircd.conf (рис. 6.10).

Запускаем сервис:

service lirc start

Набираем:

irw

Теперь при нажатии на кнопки ИК-пульта LIRC передает системе названия кнопок.

В разд. 5.12 мы ставили задачей использовать пульт в медиапроигрывателе Raspbmc. Для этого необходимо создать файл ~/.xbmc/userdata/Lircmap.xml, ввести в нужные поля название устройства, функции XBMC и соответствующие им назва­ния кнопок пульта из файла lircd.conf. Пример файла Lircmap.xml приведен в листин­ге 6.7. В нем задействованы всего четыре кнопки.

Листинг 6.7. Файл Lircmap.xml

<lircmap>

<remote device=" LG_6710V00090D">

<left>vol-down</left>

<right>vol-up</right>

<up> pr-up </up>

<down> pr-down </down> <enter>ok</enter>

</remote>

</lircmap>