ФОРУМ КУПИТЬ

Последние статьи

ВСЕ СТАТЬИ

Управление техникой по ИК каналу с помощью MegaD-2561

25/03/2017 13:25:15

Контроллер MegaD-2561 можно использовать для управления техникой по ИК каналу. Любой техникой, работающей по стандартным протоколам. Это не только телевизоры, плееры и другие бытовые приборы, но и, что наиболее важно, кондиционеры. По сути MegaD-2561 способен работать в роли Ethernet-ИК шлюза (Ethernet-IR gate), когда команды, отправляемые сервером, транслируются по сети Ethernet, кодируются контроллером и передаются по ИК-каналу. В этой статье я расскажу, как это работает.

В версиях прошивки до 4.16b6 функция "ИК" доступна только для порта P12 (разъем XP1 контроллера MegaD-2561).
Начиная с прошивки 4.16b6 функция "ИК" доступна для шести портов: P10, P12, P13, P25, P27, P28
Для удобства подключения можно использовать исполнительный модуль MegaD-14-IN. Для того, чтобы попробовать ИК-управление достаточно взять простейший ИК-диод стоимостью 3-5 рублей, подключив его через токоограничивающий резистор непосредственно к порту P12 без какого-либо дополнительного питания. Но в этом режиме максимальное расстояние от приемника до ИК-диода составит не более метра. Не слишком удобно, правда? Поэтому лучше использовать ИК-передатчик, который был разработан специально для подключения к модулям MegaD.


ИК передатчик для MegaD

ИК-передатчик представляет собой плату с клеммами XT1 и XT2.
Клеммы XT1 (синие) предназначены для подключения передатчика к контроллеру: +3,3В (питание), вход (например, порт P12) и земля.
Клеммы XT2 (зеленые) предназначены для подключения ИК-диодов. Всего можно подключить 3 диода.
Красный светодиод, смонтированный на плате, дублирует ИК-диод, поэтому, в том числе и в отладочных целях, можно в видимом диапазоне наблюдать работу передатчика.

Подключение нескольких ИК-диодов необходимо в следующих случаях:
1. Увеличение мощности сигнала. Два или три одинаковых ИК-диода значительно увеличивают дальность действия.
2. ИК диоды можно направить в разные стороны, когда ИК-передатчик смонтирован, например, на потолке, а необходимо управлять приборами, находящимися в разных углах помещения.
3. В отдельных случаях может потребоваться установка ИК-диодов с разной длиной волны.

Но даже с одним ИК-диодом импульсная мощность излучения такова, что сигнал легко преодолевает любые расстояния, с которыми приходится иметь дело дома или в небольшом офисе. Я смог протестировать работу ИК-передатчика с одним диодом для управления телевизором на расстоянии 11 метров. Определению же максимального расстояния помешали стены... Родной пульт со свежими батарейками, к слову, сдался уже на 7 метрах.

При подключении передатчика к модулю MegaD-14-IN, необходимо установить конфигурационный джампер порта в нижнее положение (как показано на фото).
Настройка порта, к которому подключен датчик, должна быть выполнена следующим образом: тип порта - OUT, режим - PWM.


Важно! Настройку порта необходимо выполнить ДО подключения ИК-передатчика. Схемохеника передатчика предполагает передачу ИК сигналов короткими импульсами высокой мощности. Поэтому никогда не устанавливайте значение PWM вручную и не включайте порт в режиме SW. Это может привести к выходу ИК-диода из строя!
Но даже если это произойдет, применение клемм для монтажа диодов позволяет легко заменить вышедший из строя ИК-диод.


Передача ИК-команд

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

http://192.168.0.14/sec/?pt=12&ir=BFFBFEFF7776&irp0=3450&irp1=1740&irp2=400&irp3=470&irp4=1300

На первый взгляд, выглядит страшно, но на самом деле все не так уж и сложно.
ИК протоколы достаточно незамысловатые. Работают они как правило так:
Сначала посылается длинный импульс, после которого идет длинная пауза (приемник понимает, что сейчас начнется передача данных).
Далее посылаются биты данных. 0 от 1 отличается только паузой.
Пример: Светодиод моргнул, пауза 400 микросекунд - это "1". Светодиод моргнул, пауза 1300 микросекунд - это ноль.
Все эти задержки индивидуальны не только для разных марок техники, но и для разных моделей одной марки.
А теперь несколько слов о передаваемых параметрах:

irp0 - длительность первого импульса для инициализации
irp1 - длительность паузы после первого импульса
irp2 - длительность свечения диода, после которого пойдет пауза, определяющая 0 или 1
irp3 - длительность паузы для 1
irp4 - длительность паузы для 0
irp5 - количество повторов посылки (часто используется для управления кондиционерами)

Параметр ir - это, собственно, сама команда.
А еще проще и понятнее станет, если зайти на сайт lirc в базу, где собрана вся информация по протоколам (паузам, длительностям) различных пультов.
http://lirc-remotes.sourceforge.net/remotes-table.html

Показанная в примере выше по тексту команда - переключение канала в старом телевизоре Panasonic.

 

Считывание команд с имеющихся пультов

Но что, если в базе данных lirc нет информации о конкретном оборудовании? Что делать в этом случае?

В этом случае можно воспользоваться программой LIRC (для пользователей Linux) или WinLIRC (для пользователей Windows) и любым ИК-приемником, поддерживаемым LIRC. Это могут быть простейшие приемники для USB (о них ниже) или COM-порта. Для эксперимента был собран простой Serial Port Reciever. Приемник необходим для того, чтобы "считать" команды с родного пульта.

Установка и использование lirc или как я считывал команду с пульта кондиционера General Climate

apt-get install lirc
setserial /dev/ttyS0 uart none
modprobe lirc_serial
lircd
mode2 --driver default -d /dev/lirc0

Теперь, если нажать кнопку включения на пульте кондиционера, направив его на приемник, подключенный к компьютеру, мы увидим следующую картину.

pinguine@srv:~# mode2 --driver default -d /dev/lirc0
space 4255920
pulse 4375
space 4379
pulse 529
space 1638
pulse 534
space 555
pulse 528
space 1639
pulse 533
space 1637
pulse 533
space 555
pulse 531
space 555
pulse 533
... (и так далее)

Программа mode фиксирует все, что происходит в ИК-канале: длительность вспышек ИК-диода и длительность пауз между вспышками.
Для преобразования этой информации в команду для контроллера MegaD-2561 я написал простенький скрипт ir-decode.php
Если "скормить" ему вывод программы mode2, то мы получим приблизительно такой результат:

Init pulse: 4426
Init space: 4306
01001101[4d]10110010[b2]01100000[60]10011111[9f]01000011[43]10111100[bc]
block 0
total bits: 48
ir: 4db2609f43bc
avr pulse: 516
avr space1: 573
avr space0: 1653
url: ir=4db2609f43bc&irp0=4426&irp1=4306&irp2=516&irp3=573&irp4=1653
Init pulse: 4449
Init space: 4280
01001101[4d]10110010[b2]01100000[60]10011111[9f]01000011[43]10111100[bc]
block 1
total bits: 48
ir: 4db2609f43bc
avr pulse: 513
avr space1: 575
avr space0: 1654
url: ir=4db2609f43bc&irp0=4449&irp1=4280&irp2=513&irp3=575&irp4=1654
URL (irp5): ir=4db2609f43bc&irp0=4449&irp1=4280&irp2=513&irp3=575&irp4=1654&irp5=2

Здесь мы видим, что пульт кондиционера использует стандартный протокол, как и старый телевизор Panasonic, но единственная разница заключается в том, что пульт дублирует команду два раза. Вот, для чего необходим параметр irp5. С помощью этого параметра задается сколько раз необходимо повторить посылку.

В результате команда включения кондиционера через MegaD-2561 будет выглядеть так:

http://192.168.0.14/sec/?pt=12&ir=4db2609f43bc&irp0=4449&irp1=4280&irp2=513&irp3=575&irp4=1654&irp5=2

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

Несколько слов об используемых мною ИК-диодах. В целом подойдут любые. Я использовал у себя самые дешевые диоды, купленные в ближайшем магазине: GNL-5013IRAB-1, FYL-5013IRAB. Работают отлично.

 

USB-приемник для считывания команд

Стоит сказать, что в современном мире не каждый сможет, а если даже и сможет, то вряд ли захочет собирать свой собственный ИК-приемник. Возникает вопрос - нет ли чего-то готового? К сожалению для нас и к счастью для конечных пользователей технология передачи данных по ИК в компьютерном мире быстро уступила место более современным радио-технологиям, таким как Bluetooth, Wi-Fi и прочим, а потому найти приемник с интерфейсом USB не так-то просто. Мало того, большинство даже имеющихся ИК-приемников невозможно использовать с программой lirc. Либо элементарно поддержка не реализована в lirc, либо само устройство является HID-девайсом, которое прикидывается клавиатурой, мышью и считать RAW-данные с помощью приемника с произвольного пульта попросту нельзя. Я потратил немало сил, чтобы найти приемник (доступен в разделе "купить"), который без костылей поддерживается lirc'ом из коробки.

Такой приемник определяется в Linux следующим образом.

Oct 30 12:23:09 srv kernel: [1180578.424014] usb 3-1: new full-speed USB device number 2 using uhci_hcd
Oct 30 12:23:09 srv kernel: [1180578.624034] usb 3-1: New USB device found, idVendor=1784, idProduct=0011
Oct 30 12:23:09 srv kernel: [1180578.624039] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Oct 30 12:23:09 srv kernel: [1180578.624043] usb 3-1: Product: eHome Infrared Transceiver
Oct 30 12:23:09 srv kernel: [1180578.624046] usb 3-1: Manufacturer: Topseed Technology Corp.
Oct 30 12:23:09 srv kernel: [1180578.624049] usb 3-1: SerialNumber: EID0137AG-8-0000048418
Oct 30 12:23:09 srv kernel: [1180578.716013] Registered IR keymap rc-rc6-mce
Oct 30 12:23:09 srv kernel: [1180578.729339] lirc_dev: IR Remote Control driver registered, major 251
Oct 30 12:23:09 srv kernel: [1180578.730037] rc rc0: lirc_dev: driver ir-lirc-codec (mceusb) registered at minor = 0
Oct 30 12:23:09 srv kernel: [1180578.730041] IR LIRC bridge handler initialized
Oct 30 12:23:09 srv kernel: [1180578.731015] input: MCE IR Keyboard/Mouse (mceusb) as /devices/virtual/input/input13
Oct 30 12:23:09 srv kernel: [1180578.732713] IR MCE Keyboard/mouse protocol handler initialized
Oct 30 12:23:09 srv kernel: [1180578.864032] mceusb 3-1:1.0: Registered Topseed Technology Corp. eHome Infrared Transceiver with mce emulator interface version 2
Oct 30 12:23:09 srv kernel: [1180578.864037] mceusb 3-1:1.0: 2 tx ports (0x0 cabled) and 2 rx sensors (0x1 active)
Oct 30 12:23:09 srv kernel: [1180578.864075] usbcore: registered new interface driver mceusb

Сразу после подключения к порту USB в системе появляется устройство /dev/lirc0, и запустив программу mode2 из пакета lirc

mode2 -d /dev/lirc0

мы можем считывать команды с имеющихся у нас пультов.

PS: ВАЖНО! Описанный в статье ИК-передатчик нельзя подключать к моноблоку MegaD-2561-31I15O-RTC с установленным в ШИМ-канал модулем перемычкой!
ИК-передатчик предназначен только для подключения к отдельному модулю контроллера MegaD-2561 напрямую или через MegaD-14-IN/MegaD-14-IOR!
Следует иметь ввиду, что подключение данного передатчика к моноблоку приведет к попаданию +12В на линию +3.3В и выходу из строя контроллера. С модулем-перемычкой для моноблока можно использовать ИК-диод, но подключать его следует через токоограничивающий резистор (подбирается исходя из параметров ИК-диода) напрямую к клеммам порта без необходимо в дополнительной внешней платы усиления сигнала.

 

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий:

(необязательно, не отображается на сайте)


Сортировка комментариев: Последние сверху | Первые сверху

2023-03-02 15:25:29 | Евгений
Антону!

Если пульт работает по протоколу NEC (а он должен работать по протоколу NEC), то параметры должны быть следующими:
......&irp0=9000&irp1=4500&irp2=562&irp3=1687&irp4=562
Источник: https:/sibotic.files.wordpress.com/2013/12/adoh-necinfraredtransmissionprotocol-281113-1713-47344.pdf

и еще - проверьте версию прошивки - были исправления....

Удачи....


2022-12-21 09:22:24 | Антон
Похоже вся проблема была в расстоянии от передатчика до приемника. перенес ближе все заработало. по поводу же не соответствия кодов в базе и скрипта расшифровки получилось очень интересно. в скрипте (по сравнению с базой пультов https:/lirc-remotes.sourceforge.net/remotes-table.html) переставлены логические "0" и "1", а так как в скрипте параметры irp3 и irp4 тоже переставлены местами то получается что общий сигнал не искажается и приемник (телевизор) принимает его корректно. единственное сравнивать не очень удобно. у себя поправил не много скрипт расшифровки сейчас все норм.


2022-12-18 22:52:16 | Антон
Добрый день. пытаюсь разобраться с пультом от телевизора.
настройки из базы пультов на сайте имеем
name SAMSUNG_AA59-00600A
bits 16
flags SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
header 4566 4476
one 600 1645
zero 600 523
ptrail 600
pre_data_bits 16
pre_data 0xE0E0
gap 108233
toggle_bit_mask 0x0
begin codes
KEY_1 0x20DF
т.е. согласно описанию должна получится команда ir=E0E020DF&irp0=4566 &irp1=4476&irp2=600&irp3=1645&irp4=523
телевизор не реагирует. возможно расстояние от передатчика большое (порядка 4-5 метров) но это пол беды.
при помощи лирка сохраняю в файл данные с ик приемника. вычищаю первую и последнюю строку Space и запускаю скрипт расшифровки. на выходе получаю ir=1f1fdf20&irp0=4750&irp1=4550&irp2=627&irp3=614&irp4=1693 или же есть брать с повторами то ir=1f1fdf20&irp0=4750&irp1=4600&irp2=623&irp3=622&irp4=1689&irp5=2
сразу же настораживает что параметр ir отличается от того как должно быть. далее смущает то что параметры irp3 и irp4 вроде как поменяны местами.
Продолжаю разбираться. беру ик передатчик ставлю на против приемника и через мегу посылаю команду (ir=E0E020DF&irp0=4565&irp1=4500&irp2=600&irp3=1646&irp4=600&irp5=3) на приемник. но скрипт мне выдает ir=1f1fdf20&irp0=4750&irp1=4600&irp2=623&irp3=622&irp4=1689&irp5=2
вот сижу и думаю, кто врет - передатчик, приемник или скрипт.
если что отправляю через 10 порт MegaD-14-IOR, прошивка на меге 4,50b4


2022-11-15 01:57:05 | Виктор
Возможно ли управление Алисой?
Пример: голосовую команду подаем, через Алису, а она включает условно музыкальный центр, или выключает (и любую другую команду)? Так же посредством ИК сигнала.


2022-10-27 10:05:45 | Евгений
Андрей, доброго дня!
Уже несколько лет работает у меня MegaD-2561 by ab-log.ru (fw: 4.36b3). Работает хорошо. Но неделю назад, по работе, столкнулся с ТВ приставкой IPTV ZTE для МТС, которая не реагирует на команды от МЕГИ. Анализ ИК посылок показал, что, например, такая команда (как и все остальные) /192.168.11.214/sec/?pt=12&ir=00FDC23D&irp0=9000&irp1=4500&irp2=560&irp3=1690&irp4=560 не имеет импульсов завершения команды, которые есть в полылках от родного пульта. Вот что написано в стандарте NEC: When a key is pressed on the remote controller, the message transmitted consists of the following, in order:

a 9ms leading pulse burst (16 times the pulse burst length used for a logical data bit)
a 4.5ms space
the 8-bit address for the receiving device
the 8-bit logical inverse of the address
the 8-bit command
the 8-bit logical inverse of the command
a final 562.5µs pulse burst to signify the end of message transmission.
Судя по всему последнего пульса 562.5ms и не хватает.

на практике это выглядит так:
MEGA: MTS:
... ...
pulse 644 pulse 573
space 1926 space 1685
pulse 649 pulse 575
space 1934 space 1687
pulse 651 pulse 575
space 1934 space 1685
pulse 650 pulse 574
space 40901
pulse 9051
space 2205
pulse 552
Есть ли возможность подправить прошивку и команду повтора добавить:
The repeat code consists of the following, in order:

a 9ms leading pulse burst
a 2.25ms space
a 562.5µs pulse burst to mark the end of the space (and hence end of the transmitted repeat code).
Описание нашел здесь:
https:/techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol
Спасибо!


2021-10-07 20:44:15 | Andrey_B
Олег, вы не указали, какой у вас контроллер. Если Моноблок, то в соответствующем канале необходимо поменять реле на сменный модуль-перемычку. Если MegaD-2561 в виде отдельного модуля, то нужно использовать вот эту плату ИК-передатчика, которая описана в данной статье.
Дело в том, что в MegaD-Wallmount-Sensor установлен только ИК-диод, но к нему необходим драйвер, усиливающий сигнал. В качестве такого драйвера выступает или встроенный драйвер выходов в Моноблоке или отдельная плата из описания выше.


2021-10-07 19:04:23 | Олег
Если у меня MegaD WallMount-Sensor, то нужен ИК-передатчик или напрямик к портам P10, P12, P13, P25, P27, P28 подключать?


2021-09-25 12:20:24 | Евгений
Андрею.
Доброго дня!
попробуйте так:
/192.168.20.105/sec/?pt=27&ir=00FFA25D&irp0=9000&irp1=4500&irp2=550&irp3=1700&irp4=600


2021-09-25 12:01:45 | Евгений
Василию Пупкину! Можете попробовать простую программу на Excel https:/yadi.sk/i/m6NeWeps8L-RmA
Евгений.


2021-09-04 08:59:22 | Andrey_B
Пупкин Василий, у себя в данный момент использую PHP 7.0.33
Версия скрипта последняя 2.20


2021-09-04 03:15:16 | Пупкин Василий
Для какой версии пхп написан скрипт? Запускается с морем ошибок в пхп 7-8, жалуется на каждую переменную и делит на ноль.


2021-04-07 20:44:50 | Андрей
"Добрый" вечер ... не могу победить управление : считал пульт от камина (Decoded NEC: FFA25D (32 bits)
Raw (68): -1816 8950 -4450 500 -600 500 -600 500 -600 500 -600 500 -600 500 -600 500 -600 500 -600 500 -1700 550 -1700 500 -1700 500 -1700 550 -1700 500 -1700 500 -1700 500 -1750 500 -1700 500 -600 550 -1650 500 -600 550 -550 500 -600 500 -1700 550 -550 550 -550 550 -1700 500 -600 500 -1700 500 -1700 550 -1700 500 -600 500 -1700 500 ) , прописал строку /192.168.20.105/sec/?pt=27&ir=FFA25D&irp0=8950&irp1=4450&irp2=550&irp3=1700&irp4=600 - ноль реакции. Светодиод моргает. ((((


2021-03-01 17:48:29 | Andrey_B
Илья, так как ИК-посылки крайне чувствительны к таймингам, то непосредственно в момент передачи сигналов контроллер, естественно, ничем другим заниматься не может. Но между приемом разных команд по HTTP - может.
Если же у вас в системе используются такие длинные, последовательные сцепки из ИК-посылок, то возможно целесообразно под это иметь выделенный контроллер.


2021-03-01 15:26:18 | Илья
Андрей, здравствуйте! При отправке сигнала через ИК передатчик, контроллер может обрабатывать другие события и управлять другим выходами? Условно, если 10 секунд контроллер только и делает, что отправляет команды через ИК передатчик, значит ли это что через тот же исполнительный модуль он не сможет управлять другими выходами в это же время?


2021-02-14 22:13:35 | Андрей
Спасибо за информацию, буду изучать.


2021-02-14 11:38:28 | Andrey_B
Андрей, если вы откроете фал ir-decode.php, то увидите, что он обращается к файлу condey.ir
Вот в этот файл и нужно сохранить содержимое вывода программы mode2, отрезав лишнее - "первое большое значение space - время от запуска программы до первого нажатия".


2021-02-13 21:35:36 | Андрей
Вы написали :программа mode фиксирует все, что происходит в ИК-канале: длительность вспышек ИК-диода и длительность пауз между вспышками.
Для преобразования этой информации в команду для контроллера MegaD-2561 я написал простенький скрипт ir-decode.php
Если "скормить" ему вывод программы mode2, а можете поподробнее написать инструкцию для тех, кто не разбирается, что значит "скормить"?


2020-09-27 18:45:11 | Евгений
ED,
Доброго времени суток! на Aliexpress есть ИК приемники (от 1 до 8 каналов) например: https:/aliexpress.ru/item/32900983729.html?spm=a2g0s.9042311.0.0.264d33ediaVxbM
Далее схема зависит от вашей задачи. Можно подключить к Меге или к другому контроллеру или реле. а может быть Вас удовлетворит простой ИК удлинитель. Задача не ясна.


2020-09-23 18:01:24 | Ed
Давно пытаюсь найти систему «наоборот»: с ик пульта целюсь в мегу , оттуда по wifi подсети команды попадают на подключенные устройства. Но на них должны стоять сервера, понимающие команды. Удобно это потому, что одним пультом управляется всё, количество устройств велико, в них не занимаются порты для приемников и нет лишних проводов.


2020-06-15 20:06:39 | Andrey_B
ANDREY, в прошивке MegaD-328 была ограниченная поддержка управления по ИК для одного ШИМ-канала.
Вот здесь и ниже.
Но позже из-за недостатка памяти эта функция была удалена. Проект потому и переехал на atmega2561, чтобы для развития было больше ресурсов.
Да, в вашем случае речь идет случайно не о клонах MegaD-328?


2020-06-14 23:12:24 | ANDREY
Доброго дня. А можно ли как-то использовать ИК управление на старых MegaD-328? Есть кучка этих контроллеров и большое желание прицепить ИК управление через них.


2020-05-02 08:29:12 | Александр
Пробовал, кроме родного образа, armbian - не появляется /dev/lirc0 и всё тут! Пришёл к выводу, что у меня на ASUS TINKER BOARD что-то не так работает. Решил перебраться на RASPBERRY, на ней всё работает, как вы пишите.


2020-04-29 10:48:35 | Andrey_B
Александр, а пакет lirc установлен?


2020-04-28 17:53:03 | Александр
Андрей, приветствую!
Сегодня проверил,пакеты libusb usbutils стоят самые свежие.
На команду dmesg события при подключении ИК приёмника:
[ 695.045954] usb 1-1.2: new full-speed USB device number 4 using dwc2
[ 695.626016] usb 1-1.2: New USB device found, idVendor=1784, idProduct=0011
[ 695.626039] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 695.626054] usb 1-1.2: Product: eHome Infrared Transceiver
[ 695.626066] usb 1-1.2: Manufacturer: Topseed Technology Corp.
[ 695.626079] usb 1-1.2: SerialNumber: EID0137AG-8-0000066773
Меня-бы и устроило подключение в виндовс 10, но не могу найти программу для работы с этим девайсом. Подсказать сможете?


2020-04-28 08:46:45 | Andrey_B
Александр, нужно смотреть логи.
Возможно не хватает какого-то пакета типа libusb или usbutils.


2020-04-27 20:18:31 | Александр
Андрей, доброго вечера!
Приобрёл я у вас ИК-приёмник, вставил в TINKER BOARD от ASUS с установленным родным debian 9... и оборудование не определилось, как вы описываете в папке /dev/lirc0 но что-то появилось в папке /dev/186:5
Что интересно, при подключении к raspberry всё работает как вы пишите!
Как решить такую задачку? Я в люнексе методом тыка могу работать, к сожалению.


2020-03-13 18:26:28 | Евгений
Решил эту задачку на форуме Majordomo - спасибо ребятам - подсказали.
https:/mjdm.ru/forum/viewtopic.php?f=24&t=7007&p=116657p116657


2020-03-11 16:54:08 | Евгений
Андрей, доброго дня!
Прошу помощи в решении следующей задачи - организовать режим нагрузочного тестирования телевизионной приставки путем переключения каналов.

Исходные данные:

MegaD + IR передатчик
Majordomo со сценой IR_RCU. На сцене кнопка IR_Ch_UP_Run (img) c состояниями RUN и STOP.
Команда Ch+
/192.168.11.214/sec/?pt=12&ir=00FDD22D&irp0=9000&irp1=4500&irp2=560&irp3=1600&irp4=560

Нужно каждые 3 секунды отправлять эту команду, пока, например, if P0 = 1

Евгений.


2020-03-04 15:02:20 | Борис
Здравствуйте. Пытаюсь подключить чудо кондиционер через ИК "EACU/I-18H/DC/N3"
Даже есть примерное описание протокола, что частично вяжется с моими наблюдениями: https:/habr.com/ru/post/419797/

Главная загвоздка как это реализовать через Megad ??? :
"Далее стартовый импульс 4,5мс и данные. Данные передаются побитно, где интервал примерно 1690мкс соответствует логической единице, а интервал 560мкс логическому нулю. Также видно, что посылки разделены на 3 отдельные части, где 50=7970 и 115=7966 являются стартовыми последовательностями."
Выглядит это так:
....
pulse 550
space 550
pulse 550
space 8000
pulse 550
space 1650
pulse 600
space 500
pulse 600
...
Каким образом реализовать эти два длинных пробела на 50 и 115 бите?? ( всего команда 168 бит)


2020-01-30 14:17:23 | Евгений
Простая EXCEL табличка для вычисления GET запроса - посмотрите - может что подправить...
https:/yadi.sk/i/m6NeWeps8L-RmA


2020-01-30 13:54:26 | Евгений
Я так понимаю, что GET запрос должен быть один. Коды должны дописываться в конец запроса.
Пример 1 - короткое нажатие (без кодов повтора):
Начало запроса - space 16328598
pulse 9050
space 4450
pulse 600
space 550
pulse 600
space 550
....
....
pulse 600
space 1650
pulse 650
space 16777215 - Конец запроса

Пример 2 - нажатие 1 сек. (присутствуют коды повтора)

Начало запроса -
....
....
pulse 600
space 1700
pulse 600
space 41100
pulse 9050
space 2200
pulse 600
space 96750
pulse 9050
space 2200
pulse 650
space 96750
pulse 9050
space 2200
pulse 600
space 96750
pulse 9050
space 2200
pulse 600
space 16777215 - Конец запроса

Лучше посмотреть описание NEC. там подробно написано.


2020-01-29 19:09:11 | Andrey_B
Евгений, правильно ли я понимаю, что код повтора должен быть в отдельном GET-запросе? Так, чтобы сервер мог с определенной периодичностью и нужное ему количество раз посылать такой код?


2020-01-29 15:39:45 | Евгений
Андрей, приветствую!
Пользуюсь передатчиком - почти все работает.
Можно ли добавить код повтора (именно код повтора а не повтор кодов) - как это описано в стандарте NEC?
некоторые девайсы без него на команду не реагируют.
Спасибо!


2019-08-11 11:18:27 | Сергей
Спасибо, всё получилось!


2019-08-11 10:22:22 | Andrey_B
Сергей, возможно необходимо удалить из файла, который формируется программой mode2, первое большое значение space - время от запуска программы до первого нажатия.


2019-08-10 14:42:57 | Сергей
Здравствуйте!
Вот мой вывод ir-decode.php

00111111[3f]01000010[42]10100011[a3]11011100[dc]00
block 0
total bits: 34
ir: 3f42a3dc
avr pulse: 825
avr space1: 550
avr space0: 988642
url: ir=3f42a3dc&irp0=&irp1=&irp2=825&irp3=550&irp4=988642
Init pulse: 9024
Init space: 2240

block 1
total bits: 0
ir:
avr pulse: NAN
avr space1: NAN
avr space0: 988642
url: ir=&irp0=9024
&irp1=2240
&irp2=NAN&irp3=NAN&irp4=988642
URL (irp5): ir=&irp0=9024&irp1=2240&irp2=NAN&irp3=NAN&irp4=988642&irp5=3

Что я делаю не так?


2019-04-25 17:09:13 | Andrey_B
Евгений, я не совсем понимаю, о каких фоновых шумах вы говорите, что такое "старый контроллер" и что за паразитное питание.


2019-04-25 15:24:48 | Евгений
Андрей, доброго дня!
Поборол я и эту беду.
1- новая прошивка улучшила работу, но проблемы остались.
2- все решилось заменой контроллера на новый (с новой прошивкой).

Поскольку я делал анализ сигнала через звуковую карту, то как чайник могу предположить, что у старого контроллера присутствует паразитное питание (слышен монотонный фон). на новом контроллере фона нет. все команды четкие.

что можно сделать со старым? заменить?


2019-04-25 13:02:52 | Andrey_B
Евгений, да, проблема была.
Исправил в 4.36b2.


2019-04-24 18:03:22 | Евгений
На всякий случай прикладываю и саму команду из MJRD:

getURL('/192.168.11.214/sec/?pt=12&ir=00FD18E7&irp0=9090&irp1=4500&irp2=560&irp3=1940&irp4=690',0);


2019-04-24 17:55:32 | Евгений
Подключил ИК диод непосредственно к порту через резистор. Послал 10 одинаковых команд. результат - в таблице (ограничился только первыми "проблемными" сигналами)..

space 16724525 space 1484021 space 1040004 space 975978 space 1031974 space 996970 space 1034952 space 2608968 space 967703 space 7067744

pulse 9400 pulse 4150 pulse 4150 pulse 4200 pulse 4200 pulse 9400 pulse 4150 pulse 9400 pulse 4150 pulse 9400

space 4600 space 4600 space 4600 space 4550 space 4550 space 4550 space 4600 space 4550 space 4600 space 4600

pulse 600 pulse 600 pulse 650 pulse 600 pulse 650 pulse 650 pulse 600 pulse 600 pulse 600 pulse 600

space 650 space 650 space 650 space 650 space 650 space 650 space 650 space 700 space 650 space 650
....... как видно из таблицы только в 1й, 6й, 8й, 10й командах импульс irp0 был около 9000.
Что-то не так с контроллером...


2019-04-24 09:48:20 | Евгений
Алексей, доброго дня! Буду копать... буду искать "виновника". Пойду методом исключения... Вы писали: " ИК-управление достаточно взять простейший ИК-диод стоимостью 3-5 рублей, подключив его через токоограничивающий резистор непосредственно к порту P12 без какого-либо дополнительного питания" . какой номинал резистора подойдет?


2019-04-23 18:22:53 | Andrey_B
Евгений, затрудняюсь ответить на ваш вопрос. Паузы для работы с ИК-передатчиком в прошивке формируются с помощью _delay_us, а прерывания на время посылки ИК-команды запрещены. Непонятно, как пауза может быть меньше указанного значения.


2019-04-23 14:53:06 | Евгений
Добавлю - проблема наблюдается и в том случае, когда используется параметр irp5. т.е. в одной большой посылке могут передаваться искаженные параметры "длительности первого импульса для инициализации".


2019-04-23 13:07:58 | Евгений
Андрей, доброго дня!

по неизвестным мне причинам первая посылка irp0 вместо 9000 иногда выдает 4050.

space 968996
pulse 4050
space 4650
pulse 550
space 700
pulse 600
.......

space 1122989
pulse 9200
space 4650
pulse 600
.....

в чем может быть причина?
Спасибо!


2019-04-11 13:44:20 | Евгений
Доброго дня!

Поборол я этот затык...

Если используется протокол NEC, то

irp0 - длительность первого импульса для инициализации 9000
irp1 - длительность паузы после первого импульса 4500
irp2 - длительность свечения диода, после которого пойдет пауза, определяющая 0 или 1 560
irp3 - длительность паузы для 1 1940
irp4 - длительность паузы для 0 690

И не обязательно их брать через LIRC - может не сработать. - У меня были проблемы именно с определением irp0 и irp1 через LIRC.


2019-03-15 18:00:39 | Andrey_B
Евгений, я бы сравнивал вывод программы mode2.


2019-03-15 14:20:27 | Евгений
Андрей, доброго дня!
Сравниваю команды KEY_POWER с родного пульта и от MEGAD.

Родной пульт:
root@evgeny-AOA150:/etc/lirc irw
0000000000ff38c7 00 KEY_POWER /etc/lirc/coship_DVB_C.conf
0000000000ff38c7 01 KEY_POWER /etc/lirc/coship_DVB_C.conf

Команда 192.168.11.214/sec/?pt=12&ir=00FF38C7&irp0=606&irp1=532&irp2=604&irp3=1633&irp4=527 от MEGAD:


root@evgeny-AOA150:/etc/lirc irw
0000000000ff38c7 00 KEY_POWER /etc/lirc/coship_DVB_C.conf

Видно, что от MEGAD команда поступает только один раз.
Просим повторить команду дважды.

/192.168.11.214/sec/?pt=12&ir=00FF38C7&irp0=606&irp1=532&irp2=604&irp3=1633&irp4=527&irp5=2

root@evgeny-AOA150:/etc/lirc irw
0000000000ff38c7 00 KEY_POWER /etc/lirc/coship_DVB_C.conf

Команда не повторяется. Что делаю не так?

Спасибо!


2019-03-14 18:12:22 | Евгений
header 606 532
one 604 1633
zero 604 527
ptrail 605
repeat 9035 2238
pre_data_bits 15
pre_data 0xFF
gap 108122
toggle_bit_mask 0x0

begin codes
KEY_POWER 0x38C7
KEY_OK 0xE01F
end codes

команда
/192.168.11.214/sec/?pt=12&ir=00FF38C7&irp0=606&irp1=532&irp2=604&irp3=1633&irp4=527

не работает - что делаю не так?


2019-02-27 15:55:30 | Сергей
Andrey_B, добрый день не поделитесь схемой передатчика в продаже у вас нет, хочу сам собрать.


2019-02-05 09:46:45 | Алексей
Andrey_B, спасибо за помощь немного разобрался, в WinLIRC создал фай conf и из него взял длительность импульса и команду как вы писали в сообщение на форуме, телевизор принял команды, но WinLIRC расшифровал только протокол nec а вот rc-5 расшифровывает и создает conf файл с другими параметрами неподходящими для отправки через megaD, у меня к счастью таких пультов дома нет.


2019-01-28 15:10:49 | Алексей
Ruslan, спасибо за помощь буду побывать, очень жаль что нет нормального метода считать команды своего пульта, и без танцев с бубном, использовать их в megaD.


2019-01-28 14:23:33 | Ruslan
Алексей, если вам это поможет, вот пример интеграции управления телевизором в систему УД (https:/www.ab-log.ru/forum/viewtopic.php?f=1&t=1328&p=30641p30641). Потребуется Мажордомо и коды LIRC от телевизора (ну еще Мега и ИК-передатчик, разумеется).


2019-01-28 14:09:30 | Алексей
Получается чтобы мне создать файл с расширением ir мне надо ставить линукс, по моему это лишние сложности.


2019-01-28 14:02:18 | Алексей
Вот это я и имел ввиду что неплохо бы иметь программу преобразующею коды пультов без использования еще 4 программ, линукса у меня к сожалению нет и ставить его и разбираться желания тоже нет, в WinLIRC есть mode2 она там реализована как в кладка если можно так сказать, вней отображаются коды как у вас в статье я их скопировал и создал файл в npp с расширением ir, но скрипт его не хочет видеть. На сайте /lirc-remotes.sourceforge.net/remotes-table.html все файлы в формате conf, как из них получить данные для отправки через megaD2561 я тоже не понял.


2019-01-28 13:44:50 | Andrey_B
Алексей, в статье же написано, да и в комментариях уже отвечал, что в файле содержится вывод программы mode2 из пакета lirc.
Вот только я не уверен, есть ли вообще mode2 в WinLIRC. Я использовал lirc в ОС Linux. Там эта программа для отображения Raw-данных с ИК-приемников имеется.


2019-01-28 13:38:50 | Алексей
Создал в WinLIRC файл condey с расширение ir, но скрип его не видит указывал полный путь до файла все равно ошибка, как вы создавали этот файл, если вам не сложно скинте мне свой для проверки.


2019-01-28 13:21:02 | Andrey_B
Алексей, все в ваших руках. В этом все преимущество.
Файл должен быть сохранен в области видимости скрипта. Например, в папке, откуда осуществляется запуск скрипта. Кроме того, вы можете отредактировать скрипт и указать полный путь к файлу.
Насчет "облегчения жизни". Машины тоже нужны для облегчения жизни тех, кто на них ездит. Но не тех, кто их проектирует, тестирует, собирает, ремонтирует.


2019-01-28 12:15:10 | Алексей
Затруднения есть но не все так плохо, но все же и тема умного дома про облегчение жизни, автоматизации, и неплохо было бы сделать попроще, но это ладно, то что скрипт не нашёл condey.ir это я понял но куда его вставить чтобы он его подхватил не разобрался.


2019-01-28 12:00:17 | Andrey_B
Алексей, если вы откроете код скрипта, то увидите, что скрипт пытается считать данные из файла condey.ir
Скрипт - это не готовое программное решение. Это лишь пример того, как можно обработать и интерпретировать вывод программы mode2 из пакета lirc.
Я понимаю, что вы пока сталкиваетесь с затруднениями, но все же у "простого человека" тоже должно быть желание опуститься на уровень ниже, понять, разобраться, как все работает. Это же все в конечном счете про "своими руками".


2019-01-28 11:36:44 | Алексей
Запустил php.net и ваш скрипт через командную строку, но я не могу понять куда вставлять мои коды кнопок, как я понял мне коды кнопок надо вставить до запуска вашего скрипта? Извините но вы не планируете написать программу понятную простому человеку, по типу ввел свой код кнопки а она тебе преобразовало и выдала значения.


2019-01-28 10:49:42 | Andrey_B
Алексей, для этого нужно скачать/установить PHP (php.net). В Unix-подобных системах PHP либо уже установлен, либо устанавливается из репозитория или Store.


2019-01-28 10:42:38 | Алексей
Здравствуйте. Расскажите поподробнее о скрипте преобразующем коды кнопок, на чем и как его запустить новичку.


2019-01-22 11:58:53 | Andrey_B
Сергей, такие исследования пока не проводились.


2019-01-22 11:55:44 | Овчинников Сергей
Здравствуйте. Сообщите, пожалуйста, максимальную длину проводов (и их сечение), на которую можно удалить передатчик от контроллера. Заранее благодарен за ответ.


2019-01-08 21:24:19 | Andrey_B
Коля, да, правильно.


2019-01-08 20:09:08 | Коля
Начиная с прошивки 4.16b6 функция "ИК" доступна для шести портов: P10, P12, P13, P25, P27, P28

Правильно ли я понимаю что можно подключить 3 независимых управления тв?


2018-11-23 14:32:15 | Andrey_B
Богдан, я не тестировал максимальное удаление передатчика от контроллера. Нужно пробовать.


2018-11-23 13:30:11 | Богдан Фролов
Подскажите какое максимальное расстояние допустимо между передатчиком и модулем MegaD-14-IN? 30м - это перебор или будет работать стабильно?


2018-08-14 20:21:36 | Иван Баталин
К сожалению свободных портов не осталось, контроллера два, подключены две ленты, симисторный и релейный модули плюс 14-in, на превом контроллере XP1 выведен под гребенку - шлейф раздербанен на отдельные входо-выходы. ИК планировалось посадить на P11, т.к. там отдельный таймер. Жаль.


2018-08-14 10:16:55 | Andrey_B
Иван, у портом P10, P12, P13 - один общий аппаратный таймер. Поэтому изменение параметров таймера для передачи ИК команды отражается на соседних портах. Не следует вешать ленту и ИК-передатчик вместе на эти порты. Работа ИК-передатчика с портом P11 пока не реализована. Можно перенести или ленту или ИК-передатчик на порты P25, P27, P28. У этих портов другой аппаратный таймер.


2018-08-14 07:14:59 | Иван Баталин
Здравствуйте, при подаче сигнала на ИК передатчик, одновременно мигает светодиодная лента (подключена к P11, P12, P13 XT1), с P11 команда не отправляется.
Есть ли у Вас прошивка и исправлением данной проблемы?


2018-08-09 10:20:46 | Евгений

Пример HTTP команды

Пульт: LG AKB73715601
Ссылка: https:/sourceforge.net/p/lirc-remotes/mailman/lirc-remotes-users/?viewmonth=201504

...
header 8960 4479
one 552 1688
zero 552 574

pre_data_bits 16
pre_data 0x20DF


KEY_POWER 0x10EF
....
/192.168.11.214/sec/?pt=12&ir=20DF10EF&irp0=8960&irp1=4479&irp2=552&irp3=1688&irp4=574

где ir = Pre_data & KEY_POWER


2018-08-09 10:13:12 | Евгений
Андрей, Большое спасибо!

ЗАРАБОТАЛО!

теперь приступаю к самой работе - программированию пульта ALOHA от TECH4HOME. проект МТС. Есть идея с Вашей помощью собрать стенд удаленного управления для тестировщиков телевизионных приставок. Вместо толпы молодых людей с пультами - одна МЕГАД. Решение на Broadlink сделано и работает, но дороже и не очень стабильно.
Еще раз СПАСИБО.
Совет от Чайника - подправьте описание... хорошее и доходчивое описание привлекает пользователей. ссылки на форум - отталкивают. В известных мне проектах Участники создают АЗБУКУ. И спасибо за скорую реакцию. Буду изучать и работать.


2018-08-08 19:38:20 | Andrey_B
Евгений, в моем сообщении на форуме, ссылку на которое я давал, написано насчет pre_data.
Вероятно, параметр ir должен иметь значение 20DF10EF.


2018-08-08 18:26:43 | Евгений
Андрей, доброго дня! Нашел коды пульта LG AKB73715601.

header 8960 4479
one 552 1688
zero 552 574

KEY_POWER 0x10EF

Собрал команду:

/192.168.11.214/sec/?pt=12&ir=10EF&irp0=8960&irp1=4479&irp2=552&irp3=1688&irp4=574

Полярность диода проверил. в разные порты подключал. красный диод моргает. Телевизор не реагирует. Что может быть не так?

СПАСИБО!


2018-08-07 15:44:22 | Andrey_B
Евгений, в MegaD-2561 в данный момент реализован протокол типа NEC. Реализация протокола типа Philips планируется.


2018-08-07 11:43:08 | Евгений
Андрей, спасибо! Буду копать. Как чайник имею идею, что параметры зависят от используемого протокола (например NEC). Возможно, что это бы упростило настройку. Еще нашел информацию, что в версиях ubuntu выше 10 не рекомендуют использовать lirc. там есть ir-keytable (возможно, что ошибаюсь). Еще раз спасибо! Буду держать в курсе опытов.


2018-08-07 09:41:12 | Andrey_B
Евгений, я не тестировал ИК-приемник с Windows. Кроме того, в WinLirc, насколько я знаю, нет программы mode2.
Что такое Ubuntu live? Запуск Ubuntu с носителя без установки? Ну тогда могу только порекомендовать все же установить полноценный Linux, а также пакет lirc. Наверное, в Live-версии его нет.
Вот здесь пример разбора файла из базы lirc.


2018-08-06 13:47:23 | Евгений
Андрей, подскажите чайнику где смотреть? проблема - Winlirk (Windows 10) не работает с ИК Приемником, который я у Вас купил. UBUNTU live не находит lirc. как перевести готовые коды с сайта lirc (например TV LG) в последовательность для MEGAD? СПАСИБО!


2018-04-25 12:19:30 | Andrey_B
Nort, неправильно. Одним ИК-передатчиком можно управлять несколькими приборами, если они в зоне доступности излучения ИК-диодов. А поскольку для подключения диодов используются клеммники, то диоды (до 3 шт) можно ориентировать в разные стороны, направляя на конкретное оборудование.


2018-04-25 10:31:08 | Nort
Правильно ли я понимаю, что один ИК передатчик на один прибор, то есть если управлять кондиционером и телевизоров нужно два ИК передатчика (телевизор и кондиционер находятся рядом в одной комнате)


2018-04-14 10:51:34 | Andrey_B
Евгений, временные интервалы всегда плавают. Вы не получите абсолютно одинаковых значений pulse и space при повторных нажатиях кнопки. Это нормально, когда значения меняются в районе 500 520 510 и т.д.
Ненормально, это когда один раз 500, а другой раз 1400.


2018-04-13 18:49:10 | Евгений
Добрый вечер, подскажите пожалуйста space и pulse для одной и той-же кнопки при повторных нажатиях должен быть одинаковый или разный? У меня при каждом нажатии разный.


2018-02-02 11:24:34 | Andrey_B
Сергей, размер буфера в последних версиях прошивки вроде бы позволяет принять и передать команду такой длины.


2018-02-01 23:28:41 | Сергей
Это кондиционер Hitachi


2018-02-01 23:27:43 | Сергей
Правильно ли я понимаю, что если у меня команда получается такая: 7ff7fffd20ffcc33b64937c8e916ff0ff0ff0ff0ff0936c708fff0ff0ff03fc0, то мегой я не смогу ее послать? Команда у меня не дублируется и разделить на 2 части не получится.


2017-11-19 11:53:54 | Oleg
Андрей, стоило бы в Ваш скрипт добавить что-то типа этого
$count_values_arr = array_count_values($data_hex_a);
$data_hex = array_filter($count_values_arr, function ($elem) { return($elem > 1); });
$data_hex = $data_hex[0];
Т.к. чаще всего последняя ir пустая исходя из практики.


2017-09-16 10:39:46 | Andrey_B
Игорь, выложил на форуме прошивку с поддержкой подключения ИК-передатчика к 3 портам: P10, P12, P13.


2017-09-15 22:15:39 | Игорь
Для меня реализация ИК на других портах была бы очень полезной: нужно управлять 7 блоками кондиционеров (тоже планировал выкручиваться через 1-2 шим-ик порта с выбором конкретного ик-передатчика подачей на него питания), но еще мне нужны ик-порты для управления сервоприводами спуска унитазов ;) где возможные задержки одновременног использовпния одного ик-порта нежелательны...


2017-09-15 16:39:35 | Andrey_B
Vadim, есть только нюанс. ШИМ порты распределены по разъемам XP1/XP2.
На XP1 - 4 порта, на XP2 - 3 порта. То есть, чтобы задействовать все 7 каналов, нужно два модуля MegaD-14-IN. Ну или подключать непосредственно к 34-контактному разъему.


2017-09-15 13:43:01 | Vadim
Андрей,
"Но также возможно реализовать поддержку подключения ИК-передатчика к другим ШИМ-портам, а их в контроллере всего доступно 7."
Если увеличите количество портов для 14-IN для возможности подключения IR-передатчиков, будет замечательно (можно все 7).
Спасибо.


2017-09-15 11:13:24 | Andrey_B
Vadim, конечно, можно коммутировать питание. Это должно работать. Но также возможно реализовать поддержку подключения ИК-передатчика к другим ШИМ-портам, а их в контроллере всего доступно 7.


2017-09-14 16:09:15 | Vadim
Андрей,
1.Можно ли параллельно подключить несколько ИК-передатчиков к 12 порту 14-IN, выбор передатчика (через какойкакие слать комманду) производить через подачу на негоних напряжения +3,3В (питание)?
Задача управлять 5 кондиционерами. 5 отдельных блоков 14-IN - не очень бюджетное решение.
2. Есть ли ограничения на удаленность ИК-Передатчика от контроллера?
Образно, на витой паре ~20-30м предположительно работать будет?
Спасибо.


2017-05-24 16:56:28 | Andrey_B
mp0wer, в текущий момент размер буфера 32 байта, но его теоретически можно увеличить. Кстати, как описано в статье, в моем кондиционере команда повторяется два раза, поэтому общая длина пакета вдвое меньше, а для дублирования используется параметр irp5.


2017-05-24 16:12:50 | mp0wer
Есть задача - управлять кондиционером хитачи - длина пакета там 595 бит. Исследовал пакеты других брэндов - panasonic 439 бит, mitsubishi - 583. Так что увеличение размера буфера, я думаю, актуально.


2017-05-24 15:35:32 | mp0wer
Какой максимальной длины можно отправить ИК пакет в Mega2561? В Mega328 я так понял это 259 бит - для управления кондиционерами мало.


2017-05-21 08:49:33 | captain
Было бы интересно использовать это совместно с IK приемником чтобы можно было отдавать комманды с обычного пульта управления.


2017-04-07 08:16:58 | Евгений
Андрей, могли бы вы посоветовать какой-нибудь уже готовый LIRC ИК-приемник для считывания команд, который доступен на рынке?


2017-03-30 20:23:47 | Ivan
Андрей, огромное вам спасибо! Давно хотел реализовать эту функцию, а теперь это можно воплотить с мегой! Отличная новость!