Категории раздела |
|
Автомобильные гаджеты, ремонт...
[144]
|
Безопасность IT
[404]
|
Блоки питания, Power Banks, зарядки...
[512]
|
Видеорегистраторы
[188]
|
Гаджеты для спорта и здоровья...
[191]
|
Гаджеты, аксессуары...
[627]
|
Измерительная техника, инструменты
[446]
|
Накопители данных
[233]
|
Нетбуки, Ноутбуки, Ультрабуки
[691]
|
Мультиварки, блендеры и не только...
[164]
|
Планшеты
[764]
|
Радар-детекторы
[26]
|
Роботы-пылесосы
[40]
|
Своими руками
[366]
|
Сети, сетевые технологии, оборудование...
[273]
|
Смартфоны
[4963]
|
Фотокамеры, объективы, искусство фотографии..
[541]
|
Умный дом
[53]
|
Электронные книги
[102]
|
CB, LPD, PMR- связь...
[170]
|
DECT, IP-телефоны
[18]
|
Drones, boats, cars...
[109]
|
electric cars
[35]
|
GPS-навигаторы, трекеры...
[51]
|
Linux и не только
[3983]
|
mini computers и не только...
[412]
|
News IT, Это интересно, ликбез...
[1121]
|
Smart TV, UltraHD, приставки, проекторы...
[416]
|
Smart Watch
[269]
|
Sound: наушники, плееры, усилители...
[619]
|
Windows 10...
[301]
|
Windows 11
[37]
|
| |
|
|
| | |
| Главная » 2013 » Сентябрь » 13 » Управляем любой AV техникой с телефона. ИК приемо-передатчик для RaspBerry
14:17 Управляем любой AV техникой с телефона. ИК приемо-передатчик для RaspBerry |
Управляем любой AV техникой с телефона. ИК приемо-передатчик для RaspBerry
Потихоньку делаю свой дом немножко умнее. Сначала сделал управление
светом с телефона с помощью платы расширения RaZBerry (Z-Wave) для
RaspBerry, затем увлекся программирование AVR микроконтроллеров и собрал
небольшую метеостанцию, показывающую температуру на LED дисплее. Теперь
очередь дошла до управления TV с помощью iPhone. В качестве медиаплеера использую RaspBerry с дистрибутивом Xbian,
поэтому сразу же понял как буду управлять телевизором. RaspBerry стоит
на полочке под телевизором в прямой видимости. На один из выводов GPIO
нужно установить ИК LED от пульта и подавать на него сигналы, которые
понимает мой телевизор. В реализации затея оказалась не сложной! Далее речь пойдет о том, как спаять плату ИК приемо-передатчика для
RaspBerry и как настроить софт, чтобы с телефона переключать каналы,
регулировать громкость, включать и выключать телевизор.
Для управления TV нужен ИК передатчик, а чтобы узнать какие сигналы
передавать TV нужно просканировать его пульт, для этого нужен ИК
приемник, поэтому плата для RaspBerry будет содержать и приемник и
передатчик. Плата должна занимать мало места и надеваться на GPIO.
Приемник использует GPIO 11, передатчик GPIO 9, плюс питание 3.3В и
земля, итого задействовано 4 вывода. Вот принципиальная схема платы: В ее состав входят: 1) R1 — 270 Ом (резистор) 2) R2 — не устанавливал 3) Q1 — BC547 (транзистор для усиление сигнала) 4) D1 — ИК LED из пульта 36-38 Кгц (ИК передатчик) 5) IR — TSOP1738 (ИК приемник)
На рисунке отмечено какую зону GPIO занимает модуль и какие выводы использует.
Спроектировал плату в Sprint-Layout.
Далее при помощи технологии ЛУТ изготовил маленькую плату.
Спаял:
И установил в RaspBerry, модуль занимает нижние 5х2 выводов GPIO, чтобы крепче держалась. Можно занять и 5х1 выводов.
Плата готова и установлена, в качестве минусов отмечу, во первых я не
расчитывал номиналы резисторов, взял те что были, если кто-то предложит
правильные номиналы, я поправлю статью, во вторых ИК приемник слишком
громоздкий и в прозрачный корпус RaspBerry не помещается, можно
использовать любой другой более компактный ИК приемник на 38Кгц.
Теперь софт, по порядку разложу что нам нужно: 1) Lirc для считывния пульта и для передачи ИК команд 2) Сервер, который принимает HTTP команды, отправляет ИК сигналы через lirc 3) Клиентсое приложение для телефона, отправляющее HTTP команды серверу
Для начала сообщим какими выводами должен пользоваться lirc для приема и отправки ИК сигналов, для этого поправим /etc/modules, чтобы загружались нужные модули: xbian@xbian ~ $cat /etc/modules
lirc_dev
lirc_rpi gpio_in_pin=11 gpio_out_pin=9
Перезагружаемся, устанавливаем lirc, если его демон запущен, то останавливаем его. Проверяем работает ли наш модуль командой: xbian@xbian ~ $sudo mode2 -d /dev/lirc0
space 16777215
pulse 4534
space 4421
pulse 621
space 1642
pulse 582
space 1648
Если поползли цифры при нажатии на кнопки, значит ИК приемник работает. Теперь считаем пульт командой: xbian@xbian ~ $sudo irrecord tv_samsung.conf Следуйте подсказкам программы и вы получить конфиг tv_samsung.conf с набором кодов от вашего пульта. Перемещаем полученный конфиг в /etc/lirc/remotes/. Вот мой конфиг для основных кнопок:
xbian@xbian ~ $cat /etc/lirc/remotes/tv_samsung.conf
begin remote
name TV
bits 16
flags SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
header 4532 4422
one 591 1650
zero 591 540
ptrail 595
pre_data_bits 16
pre_data 0xE0E0
gap 107530
toggle_bit_mask 0x0
begin codes
KEY_POWER 0x40BF
KEY_UP 0x48B7
KEY_DOWN 0x08F7
KEY_VOLUMEUP 0xE01F
KEY_VOLUMEDOWN 0xD02F
KEY_MUTE 0xF00F
end codes
end remote
Теперь проверим передатчик. Запускаем демон lirc. Чтобы отправить ИК команды выполним: xbian@xbian ~ $irsend SEND_ONCE TV KEY_POWER где, SEND_ONCE — деректива, отправить один раз TV — Имя телевизора из файла /etc/lirc/remotes/tv_samsung.conf KEY_POWER — название команды из файла /etc/lirc/remotes/tv_samsung.conf
После выполнения этой команды телевизор должен включиться или выключиться, если все работает, переходим к управлению с телефона. Нам нужен сервер, который будет принимать HTTP запросы и выполнять
команду irsend, я для этого поднял Apache http server и настроил
выполнение cgi-bin скриптов. В моем дистрибутиве Xbian это делается в
файле /etc/apache2/sites-enabled/000-default, разрешил выполнение cgi-bin скриптов и указал где их искать
....
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
....
Затем на bash написал скрипт, который обрабатывает HTTP запрос и выполняет команду irsend: xbian@xbian ~ $cat /var/www/cgi-bin/main.cgi
#!/bin/bashecho"Content-type: text/html"echo""echo"<html><head><title>Welcome</title></head>"echo"<body>"echo"Send IR code: "echo$QUERY_STRING
irsend SEND_ONCE TV $QUERY_STRINGecho"</body></html>"
Делаем скрипт исполняемым: xbian@xbian /var/www/cgi-bin $sudo chmod +x main.cgi
Запускаем apache и пробуем из браузера включить телевизор: 192.168.1.23/cgi-bin/main.cgi?KEY_POWER если сервер работает, в ответ получим: Send IR code: KEY_POWER Думаю понятно, что после /cgi-bin/main.cgi? нужно ввести команду из файла /etc/lirc/remotes/tv_samsung.conf
HTTP API есть, теперь можно управлять телевизором с любого устройства,
для браузера можно написать простое приложение с сылками на команды
управления телевизором. Я для iPhone написал простое приложение за 15
минут.
Если нет навыков программирования под мобильные платформы, но очень
хочется, то можно воспользоваться программным продуктом OpenRemote, с
помощью конструктора OpenRemote делаем дизайн приложения, расставляем
кнопочки, а затем в свойствах кнопки указываем какую HTTP команду
выполнять, как пользоваться этим софтом я уже писал в статье Мобильное приложения для управления умным домом на базе Z-Wave с помощью OpenRemote
Все замечания и предложения по улучшению статьи принимаю в комментариях! Приятного управления!
http://habrahabr.ru/post/193572/
|
Категория: mini computers и не только... |
Просмотров: 1020 |
Добавил: laptop
| Рейтинг: 5.0/1 |
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
| |
| | |
|
Волк слабее льва и тигра, но в цирке волк не выступает!
Волк - единственный из зверей, который может пойти в бой на более сильного противника.
Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...
Внимание! |
|
Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
| |
|
|