Универсальный ПДУ для XBMC из TP Link MR3020

в 10:54, , рубрики: Veeam, Электроника для начинающих, метки:

Про домашний беспроводной маршрутизатор TP Link MR3020 с Openwrt уже писали на Хабре. В данной статье я расскажу, как эту недорогую, но полезную коробочку научить управлять телевизором, XBMC плеером и любой другой домашней электроникой, понимающей ИК сигналы с пульта управления. Более того, и сам MR3020 научится принимать сигналы, подаваемые с любого пульта ДУ.

Чем и как конкретно управлять — решать вам, тем, кто возьмется повторить шаги, описанные ниже. У меня такие коробочки теперь управляют связкой TV-XBMC в гостиной и на кухне. При этом для управления используется всего один пульт. В ближайших планах — выбрать в соседнем подземном переходе пульт, который понравится всем домочадцам, и закупить таких штуки 3. Конечно, тем же хозяйством можно управлять с планшета Android (через Wi-Fi) или с компьютера (через Ethernet), но такой способ, похоже, кроме меня никого в нашей семье не вдохновляет.

Перепаянная коробочка и аксессуары к ней выглядят у меня вот таким образом:

Универсальный ПДУ для XBMC из TP Link MR3020

В центре находится переделанное устройство. Контакты разъема мини-USB использованы для подключения пары фотоприемник-светодиод. Данные компоненты размещаются в корпусе из-под дешевого микрофона Dialog (родные салазки от микрофона затем на липучке крепятся на телевизор, вблизи родного телевизионного ИК приемника). Для питания выведен новый разъем (обычный, 2-х штырьковый).

Вот, как вся эта обвязка смотрится на телевизоре:

Переделанное устройство на телевизоре

В красном кружочке виден подключенный приемник-излучатель.

А вот он же вблизи (в кружке – ИК фотоприемник):

Переделанное устройство на телевизоре

Задней своей частью прибор светит в ИК приемник телевизора (кружком обведен ИК светодиод):

Переделанное устройство на телевизоре вблизи с ИК фотоприемником

Роутер скотчем прикреплен сзади телевизора (обязательно выбрать место, которое у телевизора не нагревается). Немного не эстетично, но кто же туда заглядывает?

Переделанное устройство на телевизоре вблизи с роутером

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

Итак, начнем…

Первый шаг – ознакомиться со страницей про роутер на Openwrt. На страничке есть инструкция по разборке устройства. Вскрываем коробочку и ищем куда-бы чего припаять.

Собственно, куда припаять расскажет другая полезная ссылка — страничка на французском про использование GPIO 7 и 29 под шину i2c. Собственно, те же GPIO мы и будем использовать для подключения ИК приемника (GPIO 7) и светодиода (GPIO 29). Наша цель – подключиться ровно к тем же местам, что и в статье (R15, R17, 5 V, земля). Одна важная деталь: в отличие от статьи не надо выпаивать резисторы R15 и R17. Так и усилий надо гораздо меньше, и риск повредить контактные дорожки минимален.

Итак, шаг второй – паяем. Выбор проводков для пайки – очень важное дело. Я использовал одножильные волоски от сломанных наушников. Кончик такого проводка легко лудится (нагрев приводит к разрушению изоляции на кончике), и пайка залуженного проводка достаточно проста. Один совет: перед пайкой зафиксируйте проводок на плате скотчем, аккуратно вытяните проводок до нужной длины, и зубочисткой поставьте кончик проводка точно на контактную площадку. Таким образом проводок будет точно зафиксирован на своем месте, и пайка сводится к короткому прикосновению иглой паяльника к месту контакта.

В качестве приемника рекомендую TSOP31238, а в качестве излучателя – фотодиод TSAL5100 (брал в Питере, в “Чип и Дип” вместе с разъемами).

Схема подключения выглядит вот так:

Схема подключения

Резистор R2 (5 K) нужен для того чтобы не выпаивать встроенный резистор R15.

Во время отладки проще всего вывести нужные проводки (5 V, земля, GPIO 7, GPIO 29) на 4-х штырьковую маму-колодку, а саму маму приклеить супер клеем к подходящей для этого микросхеме T1 (усилительные каскады для Ethernet). Выглядит это вот так:

Схема подключения

А с подключенным фотоприемником – вот так:

Схема подключения

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

Остается последний шаг – software.

Не буду подробно расписывать lirc и углубляться в модификации под данный проект (желающие могут взять исходный код на githab). Вкратце так: в основе проекта lirc 0.9.0, но его serial driver был слегка переработан для управления GPIO.

Прошиваем аппарат финальной прошивкой Openwrt Attitude Adjustment. Прошивка достаточно проста и весь процесс прекрасно описан, например, тут. Необходимо будет сконфигурировать роутер таким образом, чтобы обеспечить подключение к сети. Для конфигурации проще всего воспользоваться встроенным web интерфейсом.

Далее описаны шаги для установки необходимых программ с Windows компьютера. Прежде всего потребуется установить на наш рабочий компьютер putty.

Скачиваем в директорию с установленным putty следующие файлы: lirc_0.9.0-1_ar71xx.ipk и lirctools_0.9.0-1_ar71xx.ipk

Теперь копируем данные файлы на MR3020, используя следующие команды (замените 192.168.1.1 на адрес вашего роутера):

pscp.exe -scp lirc_0.9.0-1_ar71xx.ipk root@192.168.1.1:.
pscp.exe -scp lirctools_0.9.0-1_ar71xx.ipk root@192.168.1.1:.

Заходим на аппарат при помощи putty (ssh). Набираем следующие команды:

opkg install lirc_0.9.0-1_ar71xx.ipk
opkg install lirctools_0.9.0-1_ar71xx.ipk

Теперь попробуем запустить lirc вручную:

insmod lirc_dev
mkdir -p /var/run/lirc
lircd
insmod lirc_serial gpio_in_pin=7 gpio_out_pin=29 debug=1
mode2 -d /dev/lirc0

Попробуйте посветить любым ИК пультом в окошко ИК фотоприемника. Если прибор реагирует, значит lirc готов к работе в качестве фотоприемника. Жмем Ctrl-C и приступаем к следующей части.

Создаем файл /etc/init.d/lirc следующего содержания:

#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2011 OpenWrt.org

START=50

start() {
insmod lirc_dev
mkdir -p /var/run/lirc
service_start /usr/sbin/lircd --release=_END --listen=0.0.0.0:8765 --device=/dev/lirc0
insmod lirc_serial gpio_in_pin=7 gpio_out_pin=0 debug=1
service_start /usr/sbin/irexec -d /root/.lircrc
}

stop() {
killall irexec
killall lircd
rmmod lirc_serial
rmmod lirc_dev
}

Разрешаем выполнение lirc:

chmod +x /etc/init.d/lirc

Перезагружаем роутер.

Теперь проверим работоспособность передатчика.

Прежде всего необходимо загрузить или сгенерировать самому файл lircd.conf. Данный файл содержит коды пульта ДУ для конкретного устройства (телевизора, DVD и т. п.). Есть шанс, что ваш пульт уже кем-то оцифровывался, и необходимый файл можно найти на сайте lirc. Допустим, нужная дистанционка фирмы LG называется AKB33871420. Загружаем ее файл в домашнюю директорию:

wget http://lirc.sourceforge.net/remotes/lg/AKB33871420

Если вашего пульта нет на сайте, самое время записать его. Готовимся жать на все кнопки вашего ПДУ и запускаем в putty (не забудьте поменять MYREMOTE на имя вашего пульта, например AKB33871420):

/etc/init.d/lirc start
Killall lircd
irrecord -d /dev/lirc0 -n MYREMOTE

Далее внимательно следуем инструкциям и записываем файл MYREMOTE с кодами нашего ПДУ.

Итак, в домашней директории появился файл для нашего пульта ДУ. Скопируем его в папку lirc.

cp MYREMOTE /etc/lircd.conf
/etc/init.d/lirc stop
/etc/init.d/lirc start
irw

Еще раз посветим нашим пультом ДУ на приемник. Внимательно следим, как отвечает irw. Если все в порядке, наши коды начали распознаваться. Наигрались? Жмем Ctrl-C для выхода и идем дальше. Попробуем посветить в телевизор нашим прибором. Направляем фотодиод в сторону телевизора и даем следующую команду:

irsend send_once MYREMOTE mute

Здесь MYREMOTE – имя пульта ДУ, а mute – код клавиши mute. Названия обоих параметров можно уточнить в файле lircd.conf.

Если все идет хорошо, телевизор отреагирует на команду mute. В таком случае поздравляем друг друга — все заработало. Осталось только сконфигурировать устройство для авто загрузки необходимых компонент на старте (пресловутый “последний штрих”).

В административном интерфейсе openwrt меняем статус lirc с “disabled” на “enabled”. Теперь lirc будет стартовать автоматически при загрузке роутера.

Административный интерфейс openwrt

Коробочка готова к работе! Теперь ваш TP-Link MR3020 умеет принимать и передавать ИК сигналы.

Осталось только изучить irexec и создать соответствующий /root/.lircrc файл – и вот Ваш телевизор уже умеет понимать неродной пульт.

Если Вы обратили внимание, наш lircd уже принимает удаленные конвекции на стандартном порту 8765. Это упростит настройку связки xbmc+lirc на linux медиа плеере. Если xbmc работает на Windows, копаем в сторону eventghost+xbmc

Заключение

В итоге получаем возможности по перепрограммированию поведения ПДУ под конкретные домашние нужды, а также возможность управления домашней электроникой через web (так как полученная “коробочка” может получать команды не только по ИК, но и по обычному WiFi/Enternet интерфейсу.

В общем, кому не лень, паяльник в руки и – вперед!

Автор: PolinaKoroleva

Источник

Поделиться

* - обязательные к заполнению поля