воскресенье, 5 октября 2014 г.

Raspberry Pi. Raspbmc. Пульт ДУ.

Изучая различные дистрибутивы для Raspberry Pi, случайно забрёл на http://www.raspbmc.com . На главной странице бросилась в глаза фраза о том, что улучшена поддержка пультов управления. После дальнейшего изучения сайта выяснил, что поддерживаются пульты Hama remote, MCE remote, CyberLink 0766:0204, и ATI/X10 remote. Также выяснил, что ИК-приёмники подключаются к GPIO 18 (12-ый контакт). Искать такие пульты у меня желания не было. Зато возникло желание сделать ДУ на коленке, из того что есть.

Реализация ИК-управления в ОС Linux, основана на проекте LIRC - Linux Infrared Remote ControlCайт проекта -http://www.lirc.org/ . Как оказалось впоследствии, именно это ПО используется в Raspbmc для ИК ДУ. В LIRCвозможно изменение конфигурации для работы с различными пультами, поэтому, теоретически, возможно использование любого пульта ДУ. На обычных компьютерах ИК-приёмник подключается к СОМ-порту,  наRaspberry Pi , как я уже писал, к GPIO 18.
В конечном итоге мне удалось сделать ДУ и протестировать работу с четырьмя пультами, которые удалось найти дома: от телевизора Gold Star, от DVB-донгла Newsky, от проигрывателя CD дисков Panasonic, от одноплатного компьютера Mini XPlus TV Box H24. Сигналы всех пультов отлично принимались различными ИК-приёмниками.

После изучения LIRC возникли вопросы, касающиеся Raspbmc. Как получить доступ к терминалу для выполнения некоторых команд, возможен ли SSH-доступ, как наиболее удобный. Кроме того, интересовал ещё FTP-доступ для заброски конфигурационных файлов, т.к. бегать с флешкой от компа к компу не хотелось.  SSH и FTP были заявлены разработчиками, оставалось только пощупать всё это руками. Сформулировав для себя вопросы, которые предстояло решить, приступил к установке  Raspbmc.
Raspbmc – дистрибутив на основе Debian, использующий в качестве графической оболочки XBMC Media Center.Windows-установщик Raspbmc можно скачать здесь http://www.raspbmc.com/download/ 
После запуска установщика, нужно как всегда принять какое-то соглашение и указать устройство, на которое будет записываться образ системы.

При первом запуске начинается установка и конфигурирование системы, во время которой, вам предложат “Grab a coffee”. За время инсталляции можно не только попить кофе, но и успеть поужинать. Процесс довольно затяжной.   
Также при установке могут возникнуть проблемы с определением USB-устройств. Мне пришлось отключить мышь, т.к. система  нервно отреагировала и  зациклилась  на ней.
После выполнения всех необходимых действий, система перезагружается и появляется графический интерфейсXBMC.
Сначала я попробовал SSH-доступ с помощью PuTTY. В окне программы появилось “login as:”, что меня сильно порадовало, SSH работает. Оставалось найти этот логин, т.к. на сайте разработчика никаких сведений о логине и пароле я не нашёл. Зайдя в графическом интерфейсе XBMC в файловый менеджер, обнаружил /home/pi. Оставалось найти пароль. Перебор вариантов вроде raspbmcxbmc и проч. ни к чему не привёл. Пошёл наhttp://elinux.org/RPi_Distributions . Там обычно можно найти  все пароли. Безрезультатно. Именно для этого дистрибутива пароль не указан. Оказалось всё намного проще. Дистрибутив на основе Debian и с паролем разработчики не заморачивались, оставили как есть. Логин – “pi”, пароль – “raspberry”. FTP также оказался включен.
В меню Система->Настройки->Устройства ввода есть включение функции дистанционного управления с пульта. В меню Программы ->Raspbmc settings->IR Remote есть Enable GPIO TSOP IR Receiver. В /etc нашлась папка lirc, значит, предположение об использовании LIRC оказалось верным.
Теперь о "железе".
Инфракрасные приемники имеют разную рабочую частоту. В бытовой технике чаще всего используются ИК-приемники  на 36, 36.7, 38 кГц. Во многих кондиционерах на 56 кГц. Возможно также используются и на 30, 33, 40 кГц, но это редкие случаи. Рабочая частота, так или иначе присутствует в маркировке. Например:  TSOP1738 – 17-я серия, частота 38 кГц; TSOP2236 – 22-я серия, частота 36 кГц. Полосовые фильтры в ИК-приемниках имеют низкую избирательность, поэтому приемник на частоту 36 кГц может вполне нормально принимать сигналы от пульта ДУ на 38 кГц. Дальность уверенного приема может немного сократиться. Выбор ИК-приёмников достаточно большой. Главное уложиться в 36-38 кГц. В Raspberry Pi, чтобы не повредить GPIO, на ИК-приёмник подаётся 3.3V. Эта цифра должна быть в рамках рабочего напряжения приёмника.
Разные серии ИК-приемников имеют различную цоколёвку, поэтому сверьтесь с даташитом. Ниже приведён пример подключения серии TSOP17xx

Между выводами питания нужно установить электролитический конденсатор ёмкостью 4.7 – 22 мкф на напряжение не ниже 10 В. Напряжение питания 3.3V подаётся через токоограничительный резистор 33-100 Ом.
Первоначально я использовал ИК-приемник неизвестного производителя и неизвестной марки. Он был безжалостно выпаян из DVB-T донгла. Если будете заимствовать ИК-приёмник из какого-либо устройства, то сначала прозвоните выводы питания и общего провода (Vcc и GND). Оставшийся вывод – OUT.
Вот так выглядит мой ноунейм в сборе.

Теперь подключаем ИК-приёмник к Raspberry Pi и настраиваем ПО.
Убедитесь, что функция Enable GPIO TSOP IR Receiver в меню Программы ->Raspbmc settings->IR Remote отключена. После отключения перезагрузитесь. Через SSH-клиент подключитесь к  Raspberry. Логин – “pi”, пароль – “raspberry”. Введите команды:
sudo modprobe lirc_rpi
sudo kill $(pidof lircd)
mode2 –d /dev/lirc0
Возьмите пульт и нажимайте на разные клавиши. Если всё исправно и правильно собрано, то в эмуляторе терминала, при нажатии кнопок, должны побежать строки  pulse и space с цифрами. Если строки начинают бегать без нажатия кнопок, то замените электролитический конденсатор. У меня стабильный результат получился только после того, как я перестал ставить бэушные конденсаторы на 4.7 - 10 мкф и поставил новый на 22 мкф. Строки могут иногда проскакивать самопроизвольно, реагируя на естественное освещение или лампы ЛДС, главное чтобы это было не постоянно.

Заработало! Raspberry Pi реагирует на сигналы с пульта.
Теперь подключитесь к Raspberry Pi по FTPftp://pi@xxx.xxx.x.xx:21 – ip-адрес Raspberrу, порт 21, и удалите из /home/pi файл lircd.conf. На его место копируйте вот этот – lircd.conf (при использовании Midnight Commander, снимите крестик с опции Сохранять атрибуты файла). Включите опцию Enable GPIO TSOP IR Receiver в меню Программы ->Raspbmc settings->IR Remote и перезагрузите компьютер. После перезагрузки в нижнем правом углу должно появиться сообщение  - Обнаружено новое устройство. Starting LIRC.
Теперь нужно обучить программу опознавать сигналы вашего пульта. Введите команды:
sudo kill $(pidof lircd)
irrecord --list-namespace
Появится список с названиями используемых программой кнопок. 

Выберите и перепишите названия кнопок, которые вам понадобятся, с учетом регистра. Затем, введите команды:
sudo kill $(pidof lircd)
irrecord -d /dev/lirc0 ~lircd.conf

Откроется приложение, которое будет считывать сигналы с пульта и записывать необходимые значения в файле конфигурации. Процесс записи виден на скриншоте. 
Please enter the name for the next button (press ENTER to finish recording) -ввести название кнопки (переписанные ранее, с учетом регистра).
Now hold down button - нажать и удерживать нужную кнопку.
Something went wrong. Please try again. - по каким-то причинам кнопка не прописалась. Нужно повторить процедуру записи.
После завершения записи и конфигурирования,  перезагрузите компьютер. Готово!


Если есть вопросы - пишите в "Комментарии". Рад буду помочь!



1 комментарий: