USB универсальный компьютерный повторитель команд ИК пультов

Gourmand
Offline
Зарегистрирован: 27.12.2011

Если такой проект обсуждался, пожалуйста, дайте ссылку, сам здесь не нашел. Наверняка кто-то что-то подобное делал. Хочу сделать USB свисток, чтобы с его помощью в компьютере можно было запомнить команды любого ИК-пульта, и с компьютера управлять устройствами в комнате, в том числе, по времени. Не хочу изобретать велосипед, поэтому если такие устройства уже делались, тоже буду благодарен за ссылки. Собрать могу сам, интереснее всего на Arduino Nano или Uno - аналоги того, и другого можно очень дешево купить в Китае. Прошивку тоже могу написать, но если есть готовая, то было бы неплохо сэкономить время. Фронтенд для PC точно напишу сам, у меня большой опыт программирования с использованием Qt 4.7, поэтому софт будет мультиплатформенным (Windows, Linux, Mac OSX - потенциально даже Андроид, на него есть порт Qt). Всё, что мне нужно - схема. Если кто поделится схемой и прошивкой - будет очень здорово, это сэкономит мне много времени, и тогда можно будет быстрее сделать фронтенд, который я хочу распространять в открытых исходниках.

Я знаю, что такие коммерческие устройства существуют. У меня есть идея сделать такое устройство и софт в виде Open Source. Личная мотивация - еще одна работающая и полезная программа на Qt в моём личном портфолио, и заодно получение устройства, которое давно нужно в хозяйстве.

 

Mastino
Offline
Зарегистрирован: 03.12.2011
carduino.ru
Offline
Зарегистрирован: 06.12.2011

Программу можно скачать здесь  http://www.compcar.ru/forum/showthread.php?t=4959

Gourmand
Offline
Зарегистрирован: 27.12.2011

Спс, правда, это не совсем то, что я имел в виду. Там управление компьютером с пульта, а это меня совершенно не интересует. И фронтенд для этого не нужен. Хотя там 28 страниц, и возможно, есть именно то, что нужно - запоминание на компьютере команд разных пультов от бытовой аппаратуры, и потом управление этой аппаратурой с компьютера, по сценарию. Для этого нужен фронтенд, для задания сценария, что в какое время включать.

Не думаю, что схема там подходящая, и прошивка тоже. Когда компьютер по USB запросит запись очередной команды пульта, мне надо с большой частотой просто считывать сигналы от пульта, и передавать их через USB на компьютер, где они сохраняются и используются в сценарии. А потом, когда от компьютера по сценарию придет команда управления, то надо через светодиод воспроизвести сигнал, получаемый с командой от компьютера. То, что в ветке описывается, работает по-другому, и не подходит.

 

carduino.ru
Offline
Зарегистрирован: 06.12.2011

Ну извини, я хотел помочь

Gourmand
Offline
Зарегистрирован: 27.12.2011

Если я просто подключу фотоприемник, к линии цифрового ввода, с какой максимальной частотой в программе для Nano я могу его опрашивать? 

step962
Offline
Зарегистрирован: 23.05.2011

 Просто опрашивать?

При работе МК на частоте 16 МГц - 8000000 (восемь миллионов) раз в секунду:

- одна машинная команда чтения порта в РОН,

- одна машинная команда перехода на первую команду.

Если сгенерите HEX-файл, в котором будет 30000 команд записи порта в РОН и в самом конце - прыжок в начало такой бессмысленной программы, то приблизитесь к теоретическому пределу 16 млн опросов в секунду.

Если в промежутке между опросами все-таки делать что-то осмысленное, то скорость снизится раз в 10-100-1000. Все будет зависеть от реализованного вами алгоритма.

Gourmand
Offline
Зарегистрирован: 27.12.2011

А таймер с прерыванием задействовать можно? Чтобы по прерыванию от таймера опрос производился?

 

step962
Offline
Зарегистрирован: 23.05.2011

 Почему бы и нет.

Главное - помнить о вышеприведенных прикидках и не загонять частоту прерываний/опросов слишком высоко. Иначе мк захлебнется.

Gourmand
Offline
Зарегистрирован: 27.12.2011

Это всё понятно. Идея в том, чтобы "оцифровать" сигнал от фотоприемника с высокой частотой, чтобы максимально его не исказить. Например, в 10 раз чаще, чем скорость передачи. Правда, я не имею опыта работы с ИК-пультами, и не знаю, на каких частотах они передают сигналы. Но у Nano всего 1 кБ оперативной памяти, буфер невозможно завести, поэтому надо сразу полученный сэмпл отсылать в компьютер по USB. Есть сомнение, что оно будет успевать, если квантование пойдет на частоте в сотни кГц.

 

step962
Offline
Зарегистрирован: 23.05.2011

 "Оцифровать с максимальной частотой" в данном случае не самый удачный вариант. Ибо не универсальный: если в стандартах ИК-кодирования японских производителей (NEC/JVC и прочие Тошибы) длительность импульсов лежит в диапазоне нескольких мс (от 1 до 9), то тот же стандарт ITT оперирует 10-микросекундными пульсами. 

Таймеры/счетчики Arduino кроме всего прочего позволяют измерять интервалы времени от момента запуска счетчика до возрастающего/ниспадающего фронта сигнала.  8-битного счетчика может и не хватить для всех возможных стандартов кодирования, а вот 16-битный таймер/счетчик вполне справится со всеми мыслимыми стандартами ИК-кодирования. Запрограммировав соответствующим образом функцию обработки прерывания от соответствующего таймера/счетчика (который - в свою очередь - конфигурируется соответствующим образом), на выходе можно получить не последовательность состояний сигнала (как в "оцифровке с максимальной частотой"), а последовательность длительностей пульсов-пауз, которая, кстати, и покороче получится.

Рекомендую копать в этом направлении.

step962
Offline
Зарегистрирован: 23.05.2011

Gourmand пишет:

[...] Правда, я не имею опыта работы с ИК-пультами, и не знаю, на каких частотах они передают сигналы.

[...]

Есть несколько стандартов несущей частоты бытовых ИК-ПДУ - 36, 38, 40 кГц, более редкие - 56 и 455 кГц.

Gourmand
Offline
Зарегистрирован: 27.12.2011

step962 пишет:

Gourmand пишет:

[...] Правда, я не имею опыта работы с ИК-пультами, и не знаю, на каких частотах они передают сигналы.

[...]

Есть несколько стандартов несущей частоты бытовых ИК-ПДУ - 36, 38, 40 кГц, более редкие - 56 и 455 кГц.

от 36 до 56 легко побеждаются, таймер на 1/560000 секунды, и USB должно сработать

но вот на 455 кГц... да по идее, тоже должно без проблемЮ, если Arduino успеет в компьютер передавать по USB слова с частотой 4,55 Мгц...

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

carduino.ru
Offline
Зарегистрирован: 06.12.2011

Это частота несущей она отфильтровывается в ИК приемнике 

slbond86
Offline
Зарегистрирован: 28.03.2012

Если будет полезно есть програмка msevm.com/program/irstudio/ у нее очень приметивный интерфейс и мало возможностей но код кнопки пульта она считывает и воспроизводит

SkFire
Offline
Зарегистрирован: 08.03.2012

Я чуть чуть отойду от темы,но я не смог удержаться.Это действительно очень интересно)Вещь в чём,я вчера вечером,сидел,переключал канал на телевизоре и у меня пульт начал подлагивать. А я в это на Нетбуке писал одну программку на Ардуине и у меня возникла идея сделать чтобы через нетбук я смог б подавать сигнал на телевизор чтобы управлять им,даже не одним телевизором моим а вообще любим телевизором с помощью того что сначала прочитать всю информацию с пульта на ардуину,через ик приемник,а потом через ик светодиод подавать сигнал такой который нужен для телевизора, то что я узнал через приёмник передавать светлодиодом ик.Идея та же самая,только я с одним человеком обсуждал её.Действительно от темы я отбежал,но вот удивительная вещь,я нигде об этом не читал,просто так идея в голову взбрела и в то же время в другом городе,далеко от меня у кого-то точно та же идея,это невероятно не так ли?)))

std
Offline
Зарегистрирован: 05.01.2012

Если у пульта CIR-совместимый протокол, скажем NEC, RC5, RC6 или Sony (он же SCN), то прием делается на датчик TSOP1738, 1740 и т. п., передача - КТ315 с ИК светодиодом. Для этих вещей есть библиотека к Arduino под названием IRRemote. Подробнее здесь: www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html, но на англ. Схема там же. Устройство будет представлять собой приемник (какой-нибудь из TSOP'ов), передатчик (светодиод) подключенные к полноценной ардуине (но не атмеге с загрузчиком ардуины и собственным кварцем), а с программой на ПК взаимодействовать через FTDI-интерфейс. Под него я нашел библиотеки к FPC (он же Lazarus, то есть бесплатный паскаль), и обычный Delphi. Ща не помню где лежит в сети, если надо то потом выложу файл.

Возможные моментики и подводные камни:

- не работает на Atmega8, и не проверял на Atmega168 (но вообще должно работать). на Atmega328 точно работает.

- частота. неизвестно, поймет ли ЦОП рассчитанный на 38 кГц сигнал от 40 кГц передатчика.

В остальном проблем возникнуть не должно. Библиотека гарантированно понимает коды перечисленных выше CIR протоколов, то есть удастся и прочитать, и сэмулировать сигналы почти любых теликов, видеомагнитофонов пр-ва США, Японии, РФ (то есть Panasonic 100% читается, ибо в недрах Matsushita Electric и придумали коды RC5, RC6; также читаются коды от русских Evgo, Avest, и вроде даже Rolsen, хотя не экспериментировал). Могут быть проблемы с приемом кодов от техники пр-ва Китая, Кореи (т. е. Samsung, Hasee, Xunda tech HK corp. и т. п.), например я ловил сигнал с пульта Samsung на неизвестный датчик из китайского приемника (тоже со своим хитрым кодом), тот всегда ловил только нули. Однако тот же датчик коды от пультов Sony, Avest, Okari понимал с первого раза.

step962
Offline
Зарегистрирован: 23.05.2011

std пишет:

ибо в недрах Matsushita Electric и придумали коды RC5, RC6;

Честь ввода в обращение протокола RC-5 (а также RC-6, RC-MM, RECS80) - приписывается все же концерну Philips.

std
Offline
Зарегистрирован: 05.01.2012

step962

лишь бы работало, а кто придумал - не так уж важно ;)

Gourmand

Примеры прог обмена между Ардуино и компом по сериалу и библиотека для сопряжения драйвера FTDI с компилятором тут: www.ftdichip.com/Support/SoftwareExamples/CodeExamples.htm. там же и драйвера на FT232RL, применяемую в ардуине, но вообще они есть в среде разработки Arduino, лежат в каталоге drivers\FTDI USB Drivers.

скетч в атмеге должен действовать следующим образом:

1. поймать TSOPом ИК-код, отдать его программе на ПК по сериалу, или

2. принять из ПК по сериалу, затем этим кодом посветить ИК свеитодиодом.

При общении с ардуиной по сериалу через FT232 надо помнить про скорость, четность и т. п. у виртуального КОМ-порта, на паскале (любом, т. е. и FPC и Delphi одинаково) дефолтная настройка под скорость 9600 бод такая:

Reset_USB_Device;     // warning - this will destroy any pending data.
Set_USB_Device_RTS; // enable RTS, DTR flags
Set_USB_Device_DTR;
FT_Current_Baud := FT_BAUD_9600; // speed
Set_USB_Device_BaudRate; // store
FT_Current_DataBits := FT_DATA_BITS_8; // data bits: 8
FT_Current_StopBits := FT_STOP_BITS_1; // stop bit: 1
FT_Current_Parity := FT_PARITY_NONE; // no parity check
Set_USB_Device_DataCharacteristics; // store
FT_Current_FlowControl := FT_FLOW_NONE; // disable flow control
Set_USB_Device_FlowControl; // store
Set_USB_Device_TimeOuts(500,500); // read and write timeouts = 500mS

// FTDI data interfacing code here

ojakov
Offline
Зарегистрирован: 26.11.2015

Жаль что сдохла тема, вообще не плохая идея.

Чисто конкретно!

Работаю на кабельном, надо контролировать станции числом каналов до 200 на расстоянии до 250 км.

Самый простой способ это комп с таким устройством, тв тюнер не надежен, дорог, не поворотлив.

Плата захвата и простой тв вот решение проблем.

Сдох тв за час оборудование перестроил и в путь.