Consumer IR: различия между версиями

Материал из Wiren Board
Метка: visualeditor
Строка 10: Строка 10:
* Ring (правый аудиоканал) - прием IR
* Ring (правый аудиоканал) - прием IR
* Sleeve (земля) - земля
* Sleeve (земля) - земля
Распиновка разъёма позволяет подключать распространённые ИК-приёмники и передатчики от бытовой техники.


Для приема ИК-сигналов необходимо подключить приемник (например, типа TSOP1738, AX-1838HS или аналогичного) согласно распиновке. Номинальная частота несущей приемника должна примерно соответствовать частоте несущей используемого пульта, в противном случае возможно ухудшение или полная невозможность приема сигнала от пульта.
Для приема ИК-сигналов необходимо подключить приемник (например "ИК-приёмник внешний LF-DX8" или аналогичный). Номинальная частота несущей приемника должна примерно соответствовать частоте несущей используемого пульта, в противном случае возможно ухудшение или полная невозможность приема сигнала от пульта.


Для передачи ИК-сигналов используется любой ИК-светодиод (с соответствующим токоограничивающим резистором), подключенный между землей и питанием. При передаче напряжение питания будет промодулировано передаваемым сигналом и несущей.
Для передачи ИК-сигналов рекомендуется использовать готовый ИК-передатчик Samsung IR Blaster bn96/26652a, или подобные.


Возможно одновременное подключение приемника и передатчика.
Возможно подключение совмещённого приёмопередатчика [[WB-CIR-TR]].
 
=== Технические детали ===
Распиновка разъёма mini-jack 3.5mm  на [[Wiren Board 5]] :
* Tip (левый аудиоканал) - питание 5В/передача IR.
* Ring (правый аудиоканал) - прием IR
* Sleeve (земля) - земля
Для приема ИК-сигналов испольются  приемники типа TSOP1738, AX-1838HS или аналогичных. Для передачи ИК-сигналов используется ИК-светодиод (с соответствующим токоограничивающим резистором), подключенный между землей и питанием. При передаче напряжение питания будет промодулировано передаваемым сигналом и несущей. Приёмопередатчик [[WB-CIR-TR]] содержит приёмник типа TSOP и ИК-светодиод. Для питания приёмника используется паразитное питание.


''TODO: нарисовать картинку''
''TODO: нарисовать картинку''

Версия 16:15, 6 декабря 2015

В этой статье описывается прием и передача сигналов пультов управления бытовой техникой, работающих в инфракрасном диапазоне (то есть большинство пультов от телевизоров, кондиционеров, и т. д.).

Аппаратная часть

ИК-приемник
ИК-передатчик

На Wiren Board 5 необходимые сигналы выведены на разъем mini-jack 3.5mm с со следующей распиновкой:

  • Tip (левый аудиоканал) - питание 5В/передача IR.
  • Ring (правый аудиоканал) - прием IR
  • Sleeve (земля) - земля

Распиновка разъёма позволяет подключать распространённые ИК-приёмники и передатчики от бытовой техники.

Для приема ИК-сигналов необходимо подключить приемник (например "ИК-приёмник внешний LF-DX8" или аналогичный). Номинальная частота несущей приемника должна примерно соответствовать частоте несущей используемого пульта, в противном случае возможно ухудшение или полная невозможность приема сигнала от пульта.

Для передачи ИК-сигналов рекомендуется использовать готовый ИК-передатчик Samsung IR Blaster bn96/26652a, или подобные.

Возможно подключение совмещённого приёмопередатчика WB-CIR-TR.

Технические детали

Распиновка разъёма mini-jack 3.5mm на Wiren Board 5 :

  • Tip (левый аудиоканал) - питание 5В/передача IR.
  • Ring (правый аудиоканал) - прием IR
  • Sleeve (земля) - земля

Для приема ИК-сигналов испольются приемники типа TSOP1738, AX-1838HS или аналогичных. Для передачи ИК-сигналов используется ИК-светодиод (с соответствующим токоограничивающим резистором), подключенный между землей и питанием. При передаче напряжение питания будет промодулировано передаваемым сигналом и несущей. Приёмопередатчик WB-CIR-TR содержит приёмник типа TSOP и ИК-светодиод. Для питания приёмника используется паразитное питание.

TODO: нарисовать картинку


Программная часть

На уровне ядра за работу с ИК на Wiren Board 5 отвечает драйвер lirc-pwm. Он предоставляет устройство /dev/lirc0.

С этим устройством взаимодействует демон lircd из состава пакета LIRC, осуществляющий декодирование последовательностей импульсов в события нажатых на пульте кнопок согласно файлам конфигурации пультов. Также этот демон способен осуществлять обратное преобразование для передачи сигналов нажатия кнопок управляемым устройствам.

Наконец, трансляцию событий от lircd в сообщения MQTT и обратно осуществляет демон wb-mqtt-lirc

Установка и настройка

  • Установка пакетов
root@wirenboard:~# apt-get udpate
root@wirenboard:~# apt-get install wb-mqtt-lirc lirc-scripts
  • Отредактировать файл /etc/lirc/hardware.conf и установить следующие значения:
    DRIVER=default
    DEVICE=/dev/lirc0
    Все остальное оставить по-умолчанию.
  • Скачать или сгенерировать файл конфигурации пульта и положить его в /etc/lirc/lircd.conf.d/.

Скачивание существующего конфига пульта

root@wirenboard:~# irdb-get update
root@wirenboard:~# irdb-get find 687C
sony/RM-687C.lircd.conf
root@wirenboard:~# irdb-get download sony/RM-687C.lircd.conf
Downloaded https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/sony/RM-687C.lircd.conf as RM-687C.lircd.conf
root@wirenboard:~# mv RM-687C.lircd.conf /etc/lirc/lircd.conf.d/

Создание нового конфига пульта

TODO: описать как пользоваться irrecord

После завершения конфигурации, следует перезапустить службы lirc и wb-mqtt-lirc

root@wirenboard:~# service lirc restart && service wb-mqtt-lirc restart

MQTT-интерфейс

wb-mqtt-lirc создает устройство /devices/wb-lirc/, принятые нажатия публикуются в топике /devices/wb-lirc/controls/Key в формате <название_пульта>:<название_кнопки>:<повтор>. После отпускания кнопки в этом топике публикуется сообщение с пустым телом.

Пример:

root@wirenboard:~# mosquitto_sub -v -t '/devices/wb-lirc/#'
/devices/wb-lirc/meta/name IR Remote Control
/devices/wb-lirc/controls/Key/meta/order 1
/devices/wb-lirc/controls/Key/meta/type text
/devices/wb-lirc/controls/Key Sony_RM-687C:KEY_7:0
/devices/wb-lirc/controls/Key Sony_RM-687C:KEY_7:1
/devices/wb-lirc/controls/Key Sony_RM-687C:KEY_7:2
/devices/wb-lirc/controls/Key Sony_RM-687C:KEY_7:3
/devices/wb-lirc/controls/Key (null)

Для отправки нажатия кнопки следует опубликовать сообщение в формате <название_пульта>:<название_кнопки> в топике /devices/wb-lirc/controls/Key/on

Устранение неисправностей

Не работает прием

  • Убедиться что драйвер "видит" импульсы от приемника.
    • Остановить сервис lirc (командой service lirc stop)
    • root@wirenboard:~# mode2 -d /dev/lirc0
      Должны бежать цифры при нажатии кнопок на пульте, если нет - проблема в "железе" или в несоответствии несущей пульта и приемника. Следует попробовать использовать другой приемник.
  • Убедиться что lirc может декодировать последовательности импульсов согласно конфигу пульта:
    • Запустить обратно lirc (service lirc start)
    • root@wirenboard:~# irw
      Должные бежать строчки при нажатии кнопок на пульте. Если mode2 работает, а irw - нет, то проблема с конфигом пульта. Стоит попробовать использовать другой конфиг, либо создать новый.

Не работает передача

  • Попробовать передавать обращаясь к LIRC напрямую:
root@wirenboard:~# irsend SEND_START Sony_RM-687C KEY_3
...
root@wirenboard:~# irsend SEND_STOP Sony_RM-687C KEY_3

(названия пульта и кнопки должны соответствовать используемому конфигу).

  • Убедиться что аппаратная часть работает - например, можно посмотреть на ИК-светодиод через камеру смартфона (светодиод должен мигать при передаче)