USB универсальный компьютерный повторитель команд ИК пультов
- Войдите на сайт для отправки комментариев
Если такой проект обсуждался, пожалуйста, дайте ссылку, сам здесь не нашел. Наверняка кто-то что-то подобное делал. Хочу сделать USB свисток, чтобы с его помощью в компьютере можно было запомнить команды любого ИК-пульта, и с компьютера управлять устройствами в комнате, в том числе, по времени. Не хочу изобретать велосипед, поэтому если такие устройства уже делались, тоже буду благодарен за ссылки. Собрать могу сам, интереснее всего на Arduino Nano или Uno - аналоги того, и другого можно очень дешево купить в Китае. Прошивку тоже могу написать, но если есть готовая, то было бы неплохо сэкономить время. Фронтенд для PC точно напишу сам, у меня большой опыт программирования с использованием Qt 4.7, поэтому софт будет мультиплатформенным (Windows, Linux, Mac OSX - потенциально даже Андроид, на него есть порт Qt). Всё, что мне нужно - схема. Если кто поделится схемой и прошивкой - будет очень здорово, это сэкономит мне много времени, и тогда можно будет быстрее сделать фронтенд, который я хочу распространять в открытых исходниках.
Я знаю, что такие коммерческие устройства существуют. У меня есть идея сделать такое устройство и софт в виде Open Source. Личная мотивация - еще одна работающая и полезная программа на Qt в моём личном портфолио, и заодно получение устройства, которое давно нужно в хозяйстве.
http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
Программу можно скачать здесь http://www.compcar.ru/forum/showthread.php?t=4959
Спс, правда, это не совсем то, что я имел в виду. Там управление компьютером с пульта, а это меня совершенно не интересует. И фронтенд для этого не нужен. Хотя там 28 страниц, и возможно, есть именно то, что нужно - запоминание на компьютере команд разных пультов от бытовой аппаратуры, и потом управление этой аппаратурой с компьютера, по сценарию. Для этого нужен фронтенд, для задания сценария, что в какое время включать.
Не думаю, что схема там подходящая, и прошивка тоже. Когда компьютер по USB запросит запись очередной команды пульта, мне надо с большой частотой просто считывать сигналы от пульта, и передавать их через USB на компьютер, где они сохраняются и используются в сценарии. А потом, когда от компьютера по сценарию придет команда управления, то надо через светодиод воспроизвести сигнал, получаемый с командой от компьютера. То, что в ветке описывается, работает по-другому, и не подходит.
Ну извини, я хотел помочь
Если я просто подключу фотоприемник, к линии цифрового ввода, с какой максимальной частотой в программе для Nano я могу его опрашивать?
Просто опрашивать?
При работе МК на частоте 16 МГц - 8000000 (восемь миллионов) раз в секунду:
- одна машинная команда чтения порта в РОН,
- одна машинная команда перехода на первую команду.
Если сгенерите HEX-файл, в котором будет 30000 команд записи порта в РОН и в самом конце - прыжок в начало такой бессмысленной программы, то приблизитесь к теоретическому пределу 16 млн опросов в секунду.
Если в промежутке между опросами все-таки делать что-то осмысленное, то скорость снизится раз в 10-100-1000. Все будет зависеть от реализованного вами алгоритма.
А таймер с прерыванием задействовать можно? Чтобы по прерыванию от таймера опрос производился?
Почему бы и нет.
Главное - помнить о вышеприведенных прикидках и не загонять частоту прерываний/опросов слишком высоко. Иначе мк захлебнется.
Это всё понятно. Идея в том, чтобы "оцифровать" сигнал от фотоприемника с высокой частотой, чтобы максимально его не исказить. Например, в 10 раз чаще, чем скорость передачи. Правда, я не имею опыта работы с ИК-пультами, и не знаю, на каких частотах они передают сигналы. Но у Nano всего 1 кБ оперативной памяти, буфер невозможно завести, поэтому надо сразу полученный сэмпл отсылать в компьютер по USB. Есть сомнение, что оно будет успевать, если квантование пойдет на частоте в сотни кГц.
"Оцифровать с максимальной частотой" в данном случае не самый удачный вариант. Ибо не универсальный: если в стандартах ИК-кодирования японских производителей (NEC/JVC и прочие Тошибы) длительность импульсов лежит в диапазоне нескольких мс (от 1 до 9), то тот же стандарт ITT оперирует 10-микросекундными пульсами.
Таймеры/счетчики Arduino кроме всего прочего позволяют измерять интервалы времени от момента запуска счетчика до возрастающего/ниспадающего фронта сигнала. 8-битного счетчика может и не хватить для всех возможных стандартов кодирования, а вот 16-битный таймер/счетчик вполне справится со всеми мыслимыми стандартами ИК-кодирования. Запрограммировав соответствующим образом функцию обработки прерывания от соответствующего таймера/счетчика (который - в свою очередь - конфигурируется соответствующим образом), на выходе можно получить не последовательность состояний сигнала (как в "оцифровке с максимальной частотой"), а последовательность длительностей пульсов-пауз, которая, кстати, и покороче получится.
Рекомендую копать в этом направлении.
[...] Правда, я не имею опыта работы с ИК-пультами, и не знаю, на каких частотах они передают сигналы.
[...]
Есть несколько стандартов несущей частоты бытовых ИК-ПДУ - 36, 38, 40 кГц, более редкие - 56 и 455 кГц.
[...] Правда, я не имею опыта работы с ИК-пультами, и не знаю, на каких частотах они передают сигналы.
[...]
Есть несколько стандартов несущей частоты бытовых ИК-ПДУ - 36, 38, 40 кГц, более редкие - 56 и 455 кГц.
от 36 до 56 легко побеждаются, таймер на 1/560000 секунды, и USB должно сработать
но вот на 455 кГц... да по идее, тоже должно без проблемЮ, если Arduino успеет в компьютер передавать по USB слова с частотой 4,55 Мгц...
чтобы не разбираться с пультами, можно всё квантовать на одной частоте, но можно и запрашивать тип пульта, и под него подстраиваться, но это влом, я не знаю, и не хочу знать, на каких частотах пульты работают
Это частота несущей она отфильтровывается в ИК приемнике
Если будет полезно есть програмка msevm.com/program/irstudio/ у нее очень приметивный интерфейс и мало возможностей но код кнопки пульта она считывает и воспроизводит
Я чуть чуть отойду от темы,но я не смог удержаться.Это действительно очень интересно)Вещь в чём,я вчера вечером,сидел,переключал канал на телевизоре и у меня пульт начал подлагивать. А я в это на Нетбуке писал одну программку на Ардуине и у меня возникла идея сделать чтобы через нетбук я смог б подавать сигнал на телевизор чтобы управлять им,даже не одним телевизором моим а вообще любим телевизором с помощью того что сначала прочитать всю информацию с пульта на ардуину,через ик приемник,а потом через ик светодиод подавать сигнал такой который нужен для телевизора, то что я узнал через приёмник передавать светлодиодом ик.Идея та же самая,только я с одним человеком обсуждал её.Действительно от темы я отбежал,но вот удивительная вещь,я нигде об этом не читал,просто так идея в голову взбрела и в то же время в другом городе,далеко от меня у кого-то точно та же идея,это невероятно не так ли?)))
Если у пульта 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 понимал с первого раза.
ибо в недрах Matsushita Electric и придумали коды RC5, RC6;
Честь ввода в обращение протокола RC-5 (а также RC-6, RC-MM, RECS80) - приписывается все же концерну Philips.
step962
лишь бы работало, а кто придумал - не так уж важно ;)
Gourmand
Примеры прог обмена между Ардуино и компом по сериалу и библиотека для сопряжения драйвера FTDI с компилятором тут: www.ftdichip.com/Support/SoftwareExamples/CodeExamples.htm. там же и драйвера на FT232RL, применяемую в ардуине, но вообще они есть в среде разработки Arduino, лежат в каталоге drivers\FTDI USB Drivers.
скетч в атмеге должен действовать следующим образом:
1. поймать TSOPом ИК-код, отдать его программе на ПК по сериалу, или
2. принять из ПК по сериалу, затем этим кодом посветить ИК свеитодиодом.
При общении с ардуиной по сериалу через FT232 надо помнить про скорость, четность и т. п. у виртуального КОМ-порта, на паскале (любом, т. е. и FPC и Delphi одинаково) дефолтная настройка под скорость 9600 бод такая:
Жаль что сдохла тема, вообще не плохая идея.
Чисто конкретно!
Работаю на кабельном, надо контролировать станции числом каналов до 200 на расстоянии до 250 км.
Самый простой способ это комп с таким устройством, тв тюнер не надежен, дорог, не поворотлив.
Плата захвата и простой тв вот решение проблем.
Сдох тв за час оборудование перестроил и в путь.