Домой / Faq / ИК приемник для PC - как сделать самому, программы, настройки, схемы

ИК приемник для PC - как сделать самому, программы, настройки, схемы

Домой в качестве HTPC (для просмотра фильмов из интернета), был куплен сломанный, без экрана, нетбук Asus Q200E с Windows8. Установленный на него Ace Stream Player со своей задачей справляется на отлично, единственное что было не удобно, так это управлять этим компьютером через беспроводную мышь (особенно когда функции мыши в основном это – пауза/проигрывание и перемотка назад/вперед). Рассмотренные варианты покупки специальных пультов для управления HTPC меня не устроили (по цене, и потому что это еще один лишний пульт дома). Было решено использовать пульт от телевизора, для этого….

Был куплен FLIRC на официальном сайте на распродаже по $12.95, доставка в Россию $6.9 – итого $20 - около 1500 рублей по курсу на день покупки. Из СШП до Екатеринбурга посылка доехала за 20 дней. Трекинг номер сначала трекался на сайте USPS, после пересечения границы на сайте почты России. В мелком пакете было только само устройство, и бланк заказа.

фото 1.
После распаковки.

фото 2.

Подготовка к работе.

FLIRC – это универсальный программируемый USB приемник IR диапазона, заточенный под работу с любыми пультами дистанционными управления.
Так, как это USB устройство – то перед началам его использования необходимо скачать с официального сайта (www.flirc.tv/downloads) и установить драйвера и программное обеспечение для его использования и программирования.

рис.1
После установки необходимо перезагрузить компьютер.
После подключения устройства к компьютеру оно определяется как несколько HID – совместимых устройств управления USB, а так же как HID – клавиатура. Устройство не содержит индикаторов своей работы (лампочек и т.п.)

рис.2
Первое что нужно сделать после подключения устройства к компу – это обновить его прошивку (FirmWare) (т.к. новое ПО не корректно работает с устройствами не его версии). Для этого запустите программу FLIRC (GUI) и через меню «File» -> «Advanced» -> кнопкой «Force FW Upgrade» - прошейте устройство.

Рис.3

Подготовка к программированию FLIRC. (я сам не ожидал, что будет так все не просто).
1. Замените батарейки на новые (желательно качественные) в пульте ДУ который будет использоваться для программирования FLIRC.

2. Вычислите все кнопки пульта ДУ которые НЕ задействованы в управлении телевизора при подключенном HTPC. (например у меня цифровые кнопки пульта ДУ оказывается используются для переключения канала даже при подключенном HTPC). Только НЕ используемые кнопки пульта ДУ могут быть запрограммированы FLIRC.

3. Оберните устройство FLIRC – фольгой (пищевой, алюминиевой в 2 слоя), и кончик фольги закоротите на металлическую часть разъема USB устройства. (На форуме сайта flirc.tv - рекомендовали выключить свет (лампы накаливания), вместо оборачивания устройства фольгой)

фото 3.

За фига? – не знаю как будет у Вас, но я два дня потерял пока не понял этой фишки – IR приемник в устройстве FLIRC очень чувствительный и реагирует на очень слабый сигнал (улавливает IR излучение чуть ли не от ладони руки, что приводит к не возможности его программирования), а включении галки в меню File -> Advanced settings -> Noise Canceler – переводит его в режим бесчувственной болванки. Мой пульт ДУ в легкую пробивает двойной слой фольги с расстояния в 10-30 см.

Программирование (обучение командам) FLIRC.

Суть программирования – записать IR сигнал с пульта ДУ и ассоциировать с ним HID команду (эмуляция нажатия клавиши на клавиатуре ПК). То есть фактически FLIRC преобразовывает нажатия кнопок на пульте ДУ в нажатия клавиш клавиатуры. Поэтому программировать FLIRC можно на одном компе, а использовать на другом, так как команды записаны внутри самого устройства.

1.Необходимо очистить все команды которые были записаны в устройство. Через ПО FLIRC (GUI) меню File -> Clear Configuration.

рис.4

2.Необходимо задать режимы работы устройства, через ПО FLIRC (GUI) меню File -> Advanced settings – убрать галку «Builtin Profiles» (нужна только для МСЕ), в общем сделать как на рисунке 3.

рис.3

3.Запись команды через ПО FLIRC (GUI) .

3.1.На клавиатуре нажать Win+R ввести CMD.EXE, перейти в папку cd “C:\Programm Files (x86)\Flirc\” , выполнить команду “flirc_util.exe keys”

рис.5
Должна появится надпись “No Keys Found” – если этой надписи нет, то повторите пункты 1 и 2. И обратите внимание на то, что после “flirc_util“ необходимо набирать.EXE
“No Keys Found” – означает, что никаких команд в память устройства не записано и можно начинать их запись.

3.2. В программе FLIRC (GUI) через меню «Controllers» выбрать «Full Keyboard».

3.3.1. На экране появится изображение клавиатуры, внизу будет надпись «Click a key to start recording»,

рис.6

3.3.2. на появившейся на экране клавиатуре, мышкой выбрать кнопки левый “Ctrl”, левый “Alt” и “1” – снизу появится надпись «Press the button to be prepared with ‘lconrol+lalt+1’»

рис.7

3.3.3.Направить пульт ДУ на устройство и нажать на пульте кнопку «1», надпись «Press the button to be prepared with ‘lconrol+lalt+1’» - исчезнет и появится «Recorded successfully».

рис.8

Вот собственно и записали команду в устройство, при нажатии на пульте кнопки «1» устройство FLIRC в компьютер будет посылать одновременное нажатие клавиш на клавиатуре левый “Ctrl”, левый “Alt” и “1”.

3.3.4.Для проверки записанной команды, нажмите на пульте ДУ кнопку «1», на экранной клавиатуре должны подсветиться зеленым левый “Ctrl”, левый “Alt” и “1”.

рис.9

3.3.5.В открытом в пункте 3.1. окне повторить команду “flirc_util.exe keys”.

рис.10
На экране отобразится записанная команда под «Index»-ом – «0» будет «key» - «left_ctrl+left_alt+!».

3.4. Если при проверке в пункте 3.3.4 на экране не подсвечивались зеленым левый “Ctrl”, левый “Alt” и “1” – то это значить что вместо команды с пульта ДУ, устройство записало тепловой шум –это бывает довольно часто, даже не смотря на экранирование устройства фольгой. Записанную шумовую команду нужно удалить из устройства нажав кнопку «Erase» (либо командой «flirc_util.exe delete_index X» - где «X» - индекс последней записанной команды.)

рис.11

3.5. Повторяя пункты 3.3.1. – 3.3.5. и перебирая все незанятые на пульте ДУ кнопки, для полного программирования устройства FLIRC. Не рекомендую использовать для клавиатурных сокращений буквенные клавиши на клавиатуре, так как при переключении языка ввода с «EN» на «RU» - они работать не будут. Используйте цифры от «0 до 9» и функциональные клавиши «F1- F12», в месте с различными комбинациями клавиш «Ctrl, Alt, Shift»

Вот примерное видео пунктов 3.3.1-3.3.4


копия:
копия: h8x.ru/online/video262023.html

4. Запись команды через ПО flirc_util.exe .
Для управления курсором мыши на экране с пульта ДУ телевизора, можно также использовать устройство FLIRC, для этого воспользуемся специальными возможностями Windows.

4.1. Через «Панель управления» зайдите в «Центр специальных возможностей» в «Облегчение работы с мышью»

рис.12
Выберите «Настройка управления указателем», выставите галки и бегунки (на максимум), как на следующем рисунке.

рис.13
Нажмите кнопку «Применить» и теперь можно управлять курсором мыши по средством цифрового блока клавиатуры, отключив клавишу NumLock.

4.2.Найдите на пульте ДУ девять (3х3) расположенных рядом кнопок, их нужно запрограммировать на нажатия клавиш на цифровом блоке клавиатуры

4.3. На клавиатуре нажать Win+R ввести CMD.EXE, перейти в папку cd “C:\Programm Files (x86)\Flirc\”

4.4. Выполните команду “flirc_util.exe record_api 0 89”, и нажмите на пульте ДУ кнопку отвечающую за движение мыши вниз-влево. Команда будет записана.

рис.14
4.5. Нажмите на пульте ДУ еще раз на эту копку, курсор мыши должен двигаться на экране вниз-влево.
4.6. Если курсор мыши не двигается, удалите последнюю записанную команду как в пункте 3.4 и повторите пункты 4.4.-4.5 пока не получите необходимого результата.

рис.15

4.7. В команде “flirc_util.exe record_api 0 89” - числа от 89 до 97 - соответствуют клавишам от 1 до 9 на цифровом блоке клавиатуры, код 93 соответствует клавише 5 - то есть нажатию на кнопку мыши. Повторите пункты 4.4. - 4.6. для всех девяти кнопок пульта ДУ, соответственно.

Настройка Ace Stream Player для работы с пультом ДУ.
Выберите в настройках Ace Stream Player горячие клавиши, и просто прощелкайте на пульте ДУ необходимые кнопки. Перезапустите Ace Stream Player.

Включение компьютера от кнопки с пульта ДУ.
Для устройства FLIRC заявлена функция кнопки пробуждения из сна «WAKE», но для ее работы необходимо чтобы через BIOS компьютера можно было разрешить функцию пробуждения от USB, Я использовал netbook и в нем такой функции я не нашел, то есть при засыпании отключается питание на USB и устройство FLIRC просто не работает.

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

Плюсы:
Устройство работает и выполняет заявленные функции.
Минусы:
Отсутствовала инструкция на русском языке (уже исправлено:)

Награждение не причастных:

фото 4.

Планирую купить +38 Добавить в избранное Обзор понравился +37 +74

К настоящему времени разработано достаточно много самых разных решений для ДУ персональным компьютером. Все они имеют разную сложность и функциональность. Для радиолюбительских устройств можно условно провести разделение:

1. Приемный модуль не совмещен с декодирующей частью. Декодирование ИК посылок осуществляется на ПК специальной программой. Как правило, схема приемника предельно проста. Подключение может быть реализовано через COM или LPT порты.
2. Прием и декодирование сигнала происходит в устройстве аппаратно. На ПК отправляется уже распознанная посылка. Распознавание может быть выполнено в виде реального кода, либо некого условного кода, который хоть и не является реальным для данного пульта, но обеспечивает однозначную идентификацию нажатой кнопки.

Обеим способам присущи достоинства и недостатки. Например, недостатки для первого типа: такие порты как COM и LPT встречаются в компьютерах все реже и реже, а в ноутбуках уже практически перевелись. Декодирование на ПК требует реалтаймового доступа к портам, что не гарантируется, в результате чего не всегда верно принимается посылка. Достоинства: простота, отсутствие необходимости программировать железо, существование программ способных распознать большинство протоколов. К плюсам второго подхода следует отнести возможность использовать интерфейс USB, не обязателен реалтайм. Недостатки – более сложная аппаратная часть, необходимость ее программирования.

Вашему вниманию предлагается приемник-декодер, подключаемый по интерфейсу USB, позволяющий управлять приложениями на ПК по инфракрасному каналу. В устройстве происходит распознавание реальных кодов, таких протоколов как: NEC, SAMSUNG, JVC, RC5, SONY SIRC (15 bit). Этого достаточно для подавляющего большинства используемых пультов. В компьютер отправляется последовательность вида:
(toogle,device_low,device_high,command:system). Например, в случае посылки по протоколу NEC, где младшая часть адреса устройства 134, старшая –107, код команды -18: в ПК будет отправлена строка (0,134,107,18:NEC_CODE).
Значение toogle будет либо 0, либо 1 – чередование от нажатия к нажатию. При удержании кнопки значение данного параметра не будет меняться. В стандарте RC5 это штатная функция. В других форматах этого нет, поэтому приемник программно определяет удержание для протоколов, отличных от RC5.
Приемник может работать используя один из классов USB устройств – CDC или HID, в зависимости от прошивки. Это сделано из-за того, что имеются определенные преимущества и недостатки в работе этих классов друг перед другом.

Преимущества CDC:
Поскольку CDC это виртуальный COM порт, то принципы работы с ним простые и ничем не отличаются от работы с обычным COM портом. Не требуются специальные драйвера со стороны ПК (используются inf-файлы для разных ОС). Работает в XP, Vista, Win7. Можно увидеть посылки устройства обычным терминалом, в случае необходимости. Не загружает процессор – посылки отрабатываются только во время приема.

Недостатки CDC:
Как и с реальным портом, требуется постоянное соединение устройства. Отсоединенное устройство придется вручную присоединять в приложении на ПК (переоткрывать порт) – в некоторых случаях это может быть неудобно.

Преимущества HID:
Можно отсоединять и присоединять устройство "на горячую", программа на ПК будет автоматически его отслеживать и по цвету значка в трее, возможно определять состояние подключения.

Недостатки HID:
Для работы приложения требуется специальный драйвер. Был использован драйвер libusb-win32-filter-bin-0.1.12.1, который работает пока только на WinXP 32 bit. Если у вас другая операционная система, то остается CDC. Программа периодически опрашивает устройство, поэтому мизерная загрузка процессора в простое все же есть.

Схема устройства:

Контроллер – Atmega8 16AI (без индекса V, это важно). Светодиод D1 применен для снижения напряжения питания контроллера (5В), чтобы улучшить согласование уровней напряжения от МК с интерфейсными линиями USB (3.3В). Его переход обладает также стабилизирующими свойствами. Я применил яркий смд светодиод, выпаянный из ленты. Падение напряжения на диоде должно быть около 1.5В. В тоже время ИК приемник IR1 питается от 5В, поэтому диод D2 (лучше взять германиевый или Шоттки – с малым падением напряжения на переходе) защищает вход контроллера от перенапряжения. Переключатель SW1 применяется для переключения в режим программирования устройства. Об этом ниже.

Монтаж выполнен преимущественно смд элементами, вариант конструкции:

Для того, чтобы в последующем было удобно перепрограммировать устройство, в первый раз следует прошить бутлоадер (см. архив проекта, папка tools) по интерфейсу ISP любым удобным программатором. Прошивка рабочей программой далее выполняется по USB. Для этого следует замкнуть переключателем SW1 пин PB1 микроконтроллера на землю и присоединить устройство к порту USB. После этого запустить программу Upload.exe (оболочка для BootloadHID.exe) из папки default (или папки в которой находится hex-файл) соответствующего проекта. Откроется окно:

В строчку Firmware необходимо внести имя файла прошивки (без расширения). После этого нажать CMD Flash и подтвердить выбор. В окне:

Нажать кнопку CONFIRM и начнется процесс загрузки прошивки в контроллер. Остается только извлечь устройство, отключить PB1 от земли выключателем SW1и подключить снова к USB порту. Если был выбран класс устройства HID, то запроса на установку драйверов не последует. В диспетчере устройств можно увидеть новое оборудование. Для CDC класса в запросе на установку драйвера, необходимо указать нужный inf файл из папки inf (см. проект), в зависимости от ОС. После этого в системе появится виртуальный COM порт, в который будут приходить распознанные посылки.

Приложение для ПК находится в папке IRServer_WinLircCompatible. Выходные данные этой программы идентичны данным известной программы WinLirc. Поскольку являются, де-факто, стандартом для управляемых посредством сокетов приложений. Это означает, что с помощью данной программы можно управлять всеми приложениями, которыми позволяет управлять WinLirc. Многие из мультимедийных программ имеют встроенные средства или плагины для работы – LightAlloy, Aimp, KMPlayer, WinAmp и др. Остальными приложениями или функциями ПК можно управлять с помощью программ, которые также являются клиентами WinLirc, но реализуют отсылку управляемым приложениям WM-сообщений или посылку горячих клавиш (Girder, Device Control, MKey и многие другие).

Рассмотрим настройку программы, которая, в отличие от других приложений, достаточно проста. Главное окно программы:

Номер COM порта выбирается в зависимости от того, какой номер был присвоен устройству CDC. TCP порт установлен по умолчанию стандартным для WinLirc. Его можно изменять. Соответствующими кнопками можно управлять портами и сервером. Чекбокс "Use HID…" предназначен для устройства класса HID. В этом случае параметр Time HID Rq задает время опроса устройства в миллисекундах. В группе Info будут видны пришедшие и отправленные посылки, последнюю из которых (либо введенную вручную) можно отправить кнопкой Send. Также видно количество присоединенных к серверу клиентов (не более 16). Строки отправляются клиентам в виде Hash Counter Command Name. Где Hash составлен, для уникальности из кодов адреса и команды данного пульта и его вид нельзя изменить. Counter – переменная отражающая порядковый номер посылки при удержании. После прихода следующей посылки счетчик сбрасывается. Остальные два параметра задают команду (не обязательно в числовой форме) и имя пульта.

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

Для этого устанавливаем переключатель в положение Naming (Именование) и нажимаем любую кнопку на пульте. Если для этого пульта (его адреса) нет соответствующего файла настроек, то появится запрос на введение имени пульта:

Вводим имя (например, MSI) и жмем ОК. После вторичного нажатия на кнопку, программа определит, что имя данного пульта уже ассоциировано и предложит поименовать команду:

Вводим имя команды и жмем ОК (или Enter). Таким образом, можно ассоциировать все нужные кнопки пульта. Настройки сохраняются в папку с исполняемым файлом сервера. Имя файла состоит из частей адреса устройства, расширение irs. При необходимости файл ассоциаций можно редактировать блокнотом. В итоге, получается следующее:

В данном случае видно, как отличается принятая и отправленная строки, а также реакцию управляемого клиента (Mkey), настроенного на команду right от пульта MSI (регулировка громкости).

Остальные настройки:
-Use only named: Передаваться клиентам будут только именованные команды от именованного пульта. Сделано для исключения реакции на посторонние пульты или ненастроенные/ненужные команды.
-Unnamed enable: помимо именованных команд будут переданы и неименованные (если таковые примет приемник).
-Naming disable: будут передаваться посылки напрямую, без именования.
Как правило, наиболее комфортна работа с включенной опцией Use only named после задания соответствия имен.
Кнопка ОК сворачивает приложение в трей, Cancel – закрывает приложение.

Общие замечания:
-По умолчанию COM порт настроен на скорость 9600 бод. Изменить, в случае необходимости, можно в ветке реестра:
HKEY_CURRENT_USER\Software\IRServer\COM_PORT параметр Baud_Rate.
-В ветке HKEY_CURRENT_USER\Software\IRServer\Other можно изменить VID/PID для устройства (класс HID) с которым работает сервер. Данные идентификаторы предоставляются разработчиком драйвера V-USB (AVR-USB) OBJECTIVE DEVELOPMENT Software GmbH бесплатно для некоммерческих устройств. Подробнее читайте в лицензионном соглашении.
-При использовании класса HID, необходимо установить библиотеку libusb-win32-filter-bin-0.1.12.1 из папки tools.
-Фьюзы МК следует настроить для работы от внешнего кварцевого резонатора 12 МГц, с включенным BOD на 2.7В (иначе возможно периодическое повреждение бутлоадера), с включенным загрузчиком размером 1024 байта (конфигурация фьюзов приведена в архиве)
-Переключатель SW1 на линии PB0 может быть использован для дополнительной конфигурации устройства (при соответствующем изменении программы). Либо на вывод PB0 можно подключить светодиод, индицирующий прием посылку. Для этого в файле nec_ir_module.h нужно раскомментировать строку #define LED_USE и пересобрать проект. После этого, разумеется, не следует устанавливать на пин PB0 переключатель, с риском повреждения МК. Переключатель на PB1 при этом следует сохранить.
-Приемник ИК излучения TSOP1736 использован в малогабаритном исполнении. Обратите внимание, что цоколевка у него отличается от обычного.

В архиве проекта присутствуют все необходимые файлы и исходные коды

Проект предоставляется "как есть". Все работы по подключению данного устройства к ПК проводятся на ваш риск. Автор ответственности не несет.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК AVR 8-бит

ATmega8

1 В блокнот
D1 Светодиод 1 В блокнот
D2 Диод Шоттки 1 В блокнот
С1 Конденсатор 104 пФ 1 В блокнот
С2, С3 Конденсатор 22 пФ 2 В блокнот
С4 Электролитический конденсатор 4.7 мкФ 1 В блокнот
R1, R2 Резистор

68 Ом

2 В блокнот
R3 Резистор

1.5 кОм

1

IgorPlugHID или самоопределяющийся ИК приемник для управления компьютером с пульта ДУ

Введение

Представляю USB инфракрасный (ИК) приемник IgorPlugHID . Данное устройство не требует драйверов (самоопределяется в ОС Windows), совместимо с USB 2.0 и обеспечивает управление компьютером посредством пульта дистанционного управления (ДУ). Оно поддерживает огромный список пультов (от телевизоров до иной различной техники) работающим по наиболее известным протоколам (RC5, NEC, Panasonic и пр.). Для работы с ним необходим плагин IgorPlugHid и программа (Girder, Перехватъ, SlyControl, IRlink и пр.).

В интернете полно сайтов со схемами данного устройства. Но схем очень много и найти нормальное, четкое и полное описание крайне сложно. Я же представляю упрощенную и, на мой взгляд, более надежную схему.

Назначение элементов

Сердцем является микроконтроллер (МК) Atmel - Atmega8A (ни в коем случае не Atmega8L). ИК приемник TSOP1736 принимает сигналы и передает на Atmega8, который обрабатывает и отсылает по USB. Резисторы R3, R4 и конденсатор С5 нужны в качестве обвязки TSOP для его стабильной работы. R2 подтягивает ногу Reset Atmega8A для стабильной работы (если не подтянуть, контроллер может периодически перегружаться). Внешний кварц нужен для задания частоты, на которой будет работать Atmega8A. 2 конденсатора С1 и С2 по 22пФ для стабильной работы кварца (если не поставить, кварц может вообще не запуститься). Резистор R11 нужен для того, чтобы «сообщить» компьютеру тип устройства USB (низкоскоростное). R8 и R9 в 68 Ом нужны для защиты шины данных USB от короткого замыкания и высоких токов (можно поставить и R=100 Ом). Электролит С3=10мкФ и керамический конденсатор С4=0.1 мкФ нужны для стабилизации питания всей схемы. 2 выпрямительных диода 1N4007 осуществляют падение напряжение до 3.8 В, которым питается МК. Это необходимо для согласования логических уровней USB 2.0 - на шине данных логическая 1 будет около 3.6В.

Бывают случаи, когда компьютер выключен и при случайном приеме данных устройство подвисает - т.к. ожидает, когда USB обработает данные (приходилось раньше доставать устройство и обратно вставлять). Для этого в схему введен транзистор, который открывается при наличии питания +5В на молекс разъеме (разъем ищите на блоке питания персонального компьютера). Есть второй вариант решения - в BIOS выключить опцию “Питание USB при выключенном компьютере “- это отлично подходит для ноутбуков. У меня же устройство отлично работает при наличии постоянного питания на USB и без «проводов от молекса», но я иногда наблюдаю этот глюк из-за софта на компе… тогда я просто перегружаю саму программу и все работает.

Если у вас USB выключается при выключении компа или вообще не наблюдается «зависания», то провод от молекса +5В и транзистор с резистором можно просто выкинуть из схемы, оставив ногу D3 Atmega8A висящей в воздухе.

Назначение светодиодов:

С0 - Во встроенной таблице найдено совпадение

С1 - Кодировка опознана

С2 - Прием посылки

Я считаю светодиоды излишеством, т.к. в диагностике они мне никогда не помогали. Поэтому я их выкинул вообще. :)

Перечень элементов

Atmega8A (в SOIC или в DIP корпусе, но ни в коем случае не Atmega8L)

Кварцевый резонатор на 12 МГц (именно на 12!!! и никакой другой)

USB коннектор типа «папа»

5R=68 Ом (или 3, если без светодиодов)

3R=1.5 кОм (или 1, если не использовать внешний буфер с молекс разъемом)

- *электролитический конденсатор С=4.7 мкФ 16В (вольтаж любой выше 5В)

-* электролитический конденсатор С=10 мкФ или выше (до 220 мкФ) 16В (вольтаж любой выше 5В)

2 керамических конденсатора С= 22пФ (можно 27 пФ)

1 керамический конденсатор С= 0.1мкФ

2 выпрямительных диода 1N4007 с падением напряжения по 0.6В каждый (можно любой другой тип - важно общее падение напряжения около 1.2В)

3 светодиода (я их вообще не использовал)

Предохранитель на 0.25А (к примеру стеклянный)

Любой биполярный транзистор npn типа (к примеру…..BC547-корпус TO92, BC847 - корпус SOT23 -smd вариант)

* можно поставить 2 электролита по 10мкФ >5В (на TSOP больше 10 мкФ не советую)

Прошивка

Кроме того, как собрать устройство, нужно запрограммировать МК Atmega8A. Есть большое количество программаторов способных на это (AVR910, STK200, STK500, AVRisp и пр.) и программ (ChipBlaster,PonyProg CodeVisioAVR, AVRstudio и пр.). Советую либо попросить запрограммировать МК у знакомых, если нет под рукой необходимого или, если есть LPT порт, то в интернете найдете простую схему «5 проводков», которая отлично подходит для наших целей. Для программирования нужны определенные выводы МК (Reset, MISO, MOSI, SCK, Gnd - на схеме подписаны фиолетовым).

Во FLASH память заливаете файл с прошивкой Main.hex, в Eeprom - Main.eep.

Также важно правильно запрограммировать фьюз биты. Если программируете через ChipBlaster или CodeVisionAvr, то нужно поставить галочку только в BODEN=0 (и CKOPT=0, если к кварцу не паяли конденсаторов или кварц все равно плохо запускается) и нажать Program>Fuse (cо всех остальных пунктов галочки нужно снять!)

Запуск

В окне настроек IgorPlugHID можно сразу проверить работу устройства - во вкладке Совместимость можно увидеть код кнопки нажатой на пульте ДУ.

В некоторых программах есть проблема (Girder, SlyControl ) - не работает настройка звука в Windows7. Для устранения проблемы нужно в файле программы поставить "совместимость с Windows XP" .

Мне понравилась программа Перехватъ - она проста в настройках и имеет приятный интерфейс.

Диагностика, если что-то не работает

2 прошивки для проверки работоспобности

Что не говори, а человек существо ленивое. Иногда так не хочется вставать с кровати чтобы отрегулировать громкость во время просмотра фильма или еще чего. Сейчас конечно есть куча всяких девайсов вроде мышек и клавиатур соединенных с компом по радиоканалу, но меня дико душит жаба при виде негуманных цен. Да и зачем покупать все это если в доме есть не нужный ик пульт и в загашнике завалялся tiny2313. Итак, будем ваять usb ик приёмник.

Было решено не изобретать свой велосипед, а повторить довольно удачную разработку некого Игоря Чешко. Повторить решил главным образом из-за того, что этот приемник поддерживается несколькими удобными программами вроде IrLink. Схема в оригинальном варианте мне очень не понравилась и я ее немного допилил. Доработка заключается в добавлении стабилитронов в цепи D+ и D-. Это сделано для того чтоб не спалить USB порт. Логическая единица у usb порта около 3.6 вольт и превышение этого напряжения крайне не желательно.

Сигнал с пульта принимается ик приёмником демодулятором TSOP17xx или TSOP21хх. ХХ — это несущая частота пульта в килогерцах. Как правило это 36 или 38 кГц. У меня например дома пять пультов и все пять работают на частоте 36 кГц. У ик приёмника очень хорошая чувствительность. Уверенно принимается даже сигнал отраженный от стен комнаты. Хотя тут еще многое зависит от пульта. Например с моим самодельным результаты чуть похуже (стоит крошечный 3мм светодиод). Сам приёмник после сборки в настройке не нуждается, а вот с софтом придётся немного повозиться. Из всех программ для работы с этим приёмником, самая прикольная на мой взгляд — IrLink. Прога умеет распознавать всевозможные кодировки, а следовательно можно заюзать почти любой пульт! Разумеется IrLink не знает всевозможных кодов кнопок, поэтому программу нужно обучать. Для начала работы с программой нам нужно установить драйвера на ик приёмник. Их можно скачать с сайта автора или у меня. Драйвер есть двух версий — платная и бесплатная. У бесплатной версии есть один маленький неприятный момент. Когда какая либо программа начинает работать с ик приёмником — выпрыгивает окно с кнопкой ок в котором написано что мы используем бесплатную версию. Это почти не мешает, однако если кого-то это сильно будет раздражать, то можно купить полную версию за семь баксов у автора. Кроме этого окна ни каких различий в функциональности нет. Драйвер успешно заработал как на WinXP так и на Windows 7. После установки драйверов нужно скачать самую новую версию программы с сайта www.irlink.ru . При первом запуске появится окно настроек в котором нужно указать что у нас используется самодельный приёмник IgorPlugUSB. Если всё работает как надо то на вкладке «Ик приёмник» должно быть написано что «приёмник сигналов обнаружен и запущен». Теперь можно обучать программу. Начинается обучение с создания нового пульта. Для этого переходим на вкладку «Пульт ДУ» и на пульте слева расставляем кнопки точно так же как они расположены на вашем пульте. Когда кнопки расставлены тыкаем по очереди на каждую и нажимаем на пульте соответствующие кнопки. После завершения обучения можно легко проверить результат, жмем кнопки пульта и видим как они подсвечиваются в окне программы. Присвоить кнопкам действия дело не хитрое, но на всякий случай покажу как настроить две кнопки на управление громкостью в проигрывателе Winamp.

1) Выбрать кнопку пульта
2) Выбрать программу и действие
3) Добавить действие

Вот и всё. Кстати, программа начнет откликаться на команды с пульта только после закрытия главного окна. Напоследок хочу сказать, что большие полигоны на плате очень хорошо лудятся с использованием флюса СКФ:

У меня нет телевизора. Совсем. На антресолях где-то лежит старый маленький пузатик, но кабель антенны давно свернут, а телевизор этот - скорее издевательство, разве что на кухне поставить и то маловат.
Поэтому в качестве музыкального центра и телевизора я использую свой ПК. И все бы хорошо, но лень - это не только двигатель прогресса, но и фактор, который портит удовольствие, заставляя встать с дивана, на котором уютно устроился с кружкой чая, чтобы запустить программу или выключить колонки после просмотра фильма перед сном.
Существует множество ИК приемников, практически все они могут управлять компьютером и даже могут его выключить, но не могут его включить . И вот в этот момент компьютер перестает быть столь же удобным сколь телевизор или музыкальный центр. Но и проект Igor HID не порадовал своим софтом. Вроде все умеет, а неудобно. И не влезешь в него, исходников нет. Вот поэтому я собрался и сделал свой проект, открытый и доступный всем.
Сделал я его с нуля до законченного комплекта. А поскольку мой опыт в разработке и программировании электронных девайсов до него можно сказать был нулевым, то я считаю, что повторить это сможет каждый, кому это интересно.

Называется он USB-IRPC (USB Infrared Remote Personal Computer Control - «Юэсби-ИРПиСи» или ИРПЦ, кому как больше нравится:). Буква R на самом девайсе - просто сокращение от моего ника.
Важным преимуществом девайса является то, что он программно совместим с Arduino и в случае отсутствия уверенности в своих силах в ЛУТ может быть сделан на основе Arduino на макетной плате . Это, конечно, не так компактно и аккуратно, не так дешево, но зато доступно практически всем, даже навыки пайки особые не потребуются.
Если стремление к комфорту вам не чуждо и идея превратить свой компьютер в медиацентр, а заодно поуправлять электророзетками с пульта вам интересна, тогда вперед.

Просьба , если соберетесь делать устройство после прочтения статьи, задавайте вопросы в комментариях . По опыту предыдущих статей: вас довольно много и вопросы вы задаете одинаковые :)
Я лучше один раз отвечу всем, добавив в статью или в комментариях. Уведомления о комментариях с вопросами я просматриваю и стараюсь отвечать.

Итак, идея устройства

Я хотел иметь следующие возможности:
  • Включать и выключать компьютер с пульта от телевизора или любого другого ИК пульта.
  • Включать и выключать розетки, в которые воткнуты настольная лампа и колонки (две розетки, управляются отдельно).
  • Управлять розетками с ПК программно, чтобы не искать пульт, оставленный на диване, когда сидишь перед компом или включать колонки для работы ПК в качестве будильника по расписанию с утра:)
  • Запускать программы на ПК по нажатию кнопки на пульте.
  • Выполнять custom задачи по нажатию кнопок - какие запрограммирую.
Все это на данный момент работает.
Функционал управляющей программы для ПК будет еще расширяться.
  • Устройство не требует драйверов , работает и под Win7 х86, Win7 x64, Win 8 x64.
  • Не требует прав администратора при подключении и использовании.
  • В системе определяется как HID устройство (USB Input Device).
  • Никаких дополнительных.dll типа lubusb тоже не потребуется.
  • Под Linux не проверял, но не думаю, что будут проблемы. Правда написать софт я не смогу - под Linux я этого не умею.
Также написан плагин для популярной программы настройки горячих и мультимедийных клавиш MKey , для тех, кто не хочет разбираться в моей программе, кто не хочет ставить еще одну программу или уже пользуется MKey. Плагин делает из ИК пульта набор мультимедийных кнопок. Назначайте им действия какие захотите. Как пользоваться, расскажу.

Недостатки
А куда без них:)
  • Пока на мой взгляд распознавание нажатий кнопок пультов не идеально. Можно сделать лучше, уверен. Но это исправляется программно.
  • Вшитые функции, работающие и без ПК, можно поменять только перекомпилировав прошивку, а для этого придется скачать AVR Toolchain - писать прошивку в Arduino IDE сплошное мучение для меня, поэтому я пользуюсь Code::Blocks. Но залить прошивку в Arduino не составляет никакой проблемы. Даже в консоль лезть не придется. Позже можно будет и программно назначить эти функции любым кнопкам пульта.
  • Программа на английском. Я знаю, что у подавляющего большинства проблемы с английским и знаю привычку все и вся русифицировать.
Я не люблю русифицированные интерфейсы по двум причинам:
  1. Русские надписи почти всегда длиннее английских либо имеют уродливые сокращения.
  2. В русском языке не сложилось однозначной терминологии для ИТ и надписи на элементах интерфейса часто больше путают чем проясняют.
Но, весь софт открытый, плагин к MKey вообще не требует ничего читать и настраивать в нем, а надписи в моей программе вы можете перевести, если 7 кнопок и 2 пункта меню вызывают проблемы с пониманием или запоминанием. Скомпилируйте и измените сами. Написано на Delphi 2010, проприетарных программных компонентов нет.

Я расскажу сначала как сделать на основе Arduino, затем расскажу как сделать самому с нуля, а если найдутся желающие, напишу отдельно как с этим устройством работать программно с ПК.

USB-IRPC на основе Arduino

На самом деле я и начинал устройство на основе Arduino. Я использовал дешевую Arduino Pro Mini и кусочек макетной платы:


«IRPC v1 »
Эта версия не имела связи с ПК, умела только управлять розетаками и питанием ПК, но проработала у меня больше 9 месяцев - с ноября 2011го.
Как обычно, начинаем с закупки деталей.
Нам понадобится:
1. Arduino (любая с питанием от 5В) - примерно от

Модуль управления розетками:
2. Плата с реле на 220В, управляемая сигналом 5В. Если хватает опыта, можете сделать сами. У меня была в хозяйстве вот такая, давно думал, куда ее приспособить:


Да, релешек на ней 4, а используется только 2, потому что во-первых - у меня был только 4проводный кабель под рукой, а для 4 реле жил нужно 6 (+- и 4 сигнальных), а во-вторых под рукой было только 2 одинарные розетки, а удлинителей не на общей шине, а с проводами к каждому гнезду отдельно я не нашел на рынке. Мне она досталась за дикие $17, но купил я ее давно. Сейчас она есть на ebay по $3.82 , более того, советую вам взять для этого проекта с двумя реле - дешевле и компактнее:


Недостаток реле в том, что они щелкают при переключении. И если бы у меня не валялись без дела, я бы сделал на симисторах BT138 с гальванической развязкой на MOC3063 примерно вот по такой схеме (не моя, дернул кусок из найденной гуглом картинки):


3. Кабель 4-проводный (можно использовать UTP, если есть, тогда розеток можно сделать больше). Длина - чтобы хватило от ПК до места где будет лежать блок розеток.
4. Коннектор PBS-4 для окончательного варианта или вилка PLS-4, если будете делать на Arduino.

5. Кабель медный для подключения розеток к реле - 2 куска примерно сантиметров по 20.
6. Кабель электрический с вилкой Schuko (CEE 7/4) или любой другой, имеющийся под рукой, который выдержит нагрузку:

7. Две настенные накладные розетки (или больше, если релешек больше и кабель UTP) - примерно 30 рублей штука.
8. Кусок фанеры и коробочка для крепления платы с реле и розеток.
Я смонтировал в обычную картонную коробку, прикрепил к куску пластика болтиками и закрепил кабели стяжками. получилось вот так:


« »
Под столом это смотрится довольно аккуратно. Розетки разные, да, других не было:) Одну купил, вторая осталась от апгрейда настенной розетки на двойную.


« »
Оформительские изыски оставляю на ваше усмотрение.

Модуль ИК приемника

9. ИК приемник TSOP1738, TSOP1736 или IRM_3638. Найдете аналог - попробуйте его. У меня IRM3638 работает лучше всего.


10. Резистор на 10кОм
11. Светодиод + резистор на 100-390 Ом (какой есть такой и берите), на крайний случай можно обойтись встроенным в Arduino на Pin 13 если под рукой ни резистора ни светодиода нет, будет без выносной индикации.
12. 2 Коннектора PBS-4 для окончательного варианта или вилка PLS-4, если будете делать на Arduino.

13. Четырехпроводный кабель такой длины, чтобы хватило от системного блока ПК (девайс установим внутрь) до места, где приемник удобно закрепить, чтобы он был на прямой видимости с дивана (я закрепил на ножке монитора).

Модуль управления питанием ПК

14. Коннектор PBS-2 для подключения к материнской плате вместо кнопки питания.

15. Коннектор PLS-2, для подключения кнопки питания от корпуса параллельно, чтобы не терять возможность ей пользоваться. (можно просто купить одну линейку пинов PLS-40 и откусить кусачками от нее куски с нужным количеством пинов).

16. Оптопара PC817 или ее аналог. По идее стоит 4-8 рублей, но на Царицынском радионыке барыги за нее потребовали 40 рублей.

Можно и реле использовать, но это совсем изврат получится, хотя работать будет:)
17. Токоограничительный резистор на 100-150 ом любой мощности, что найдется под рукой.

Интерфейс с ПК (V-USB)

18. USB кабель, нас интересует только USB A вилка для подключения к ПК, на другом конце может быть что угодно, мы его все равно отрежем. Так что можно использовать любой ненужный кабель. Лишь бы целый был со стороны компа.
19. 2 стабилитрона на 3.6В желательно 0.25 Вт, но можно больше.

20. 2 резистора на 68 Ом.
21. 1 резистор на 2.2 кОм. К мощности особых требований нет.

Паяльник, припой, флюс (канифоль сойдет), немного монтажного провода (да любые проводки, какие есть под рукой).
Какой-нибудь пульт с кодировкой RC-5 типа такого:

«IR RC »
У меня также отлично работает пульт от AverMedia.

Если будете собирать на макетной плате, то понадобятся она и немного проводов, нечто в этом роде:)


Это только кажется что всего много, но на самом деле затраты невелики. Разве что будете покупать все в Чип и Дипе:)

Разбираемся как собрать и как это работает

Если у вас Arduino Pro Mini или Arduino nano, устанавливаем ее на макетную плату типа Breadboard или как в моем случае на кусочек макетки с пятачками для пайки, припаяв ее туда напрямую или с помощью коннекторов, чтобы можно было снять:


Обычную придется подключать к макетной плате проводками.

Подключаем ИК приемник.
Сигнальную ножку напрямую к пину 8 (D8). Между сигнальной и ножкой питания включаем резистор на 10к, ну и оставшуюся ножку заземляем:


у TSOP 1738 сигнальная ножка на фото справа:


Средняя - питание (+5В), левая - земля (GND).
Это три провода, четвертый - для выносного светодиода, я его поставил рядом с приемником, чтобы показывать, что нажатие кнопки принято. Подключаем его через резистор анодом к пину D9, катодом к земле.
Подключаем плату с реле
Тут все предельно просто:
  • VCC к +5 Arduino
  • GND к GND Arduino (земля)
  • IN1 к пину 6
  • IN2 к пину 5
Вот для этого нам и понадобится 4проводный кабель, на конце кабеля припаиваем PBS-4, чтобы аккуратно надеть на вилку платы с реле, конец к макетной плате удобнее сделать с вилкой.
Теперь разбираем розетки. Если вы взяли кабель питания для компа, отрезаем конец силового кабеля, оставив только вилку Schuko и подключаем:
Коричневый провод - фаза - подаем на реле, на тот конец, что в нормальном состоянии разомкнут (на плате нарисовано).
Синий провод - ноль, подаем напрямую на розетки, на один из контактов.
Желто-зеленый - защитное заземление, подключаем к контуру заземления розеток.
(Расцветку поправил Nickel3000 , у меня в описании коричневый и синий были перепутаны, хотя в данном случае это большой роли не играет).
Средний контакт реле, который будет замыкаться с фазой при переключении реле, выводите каждый к своей розетке (тут нам и понадобится тот медный провод из пункта 5) на второй контакт.
Можете прозвонить вилку - два штырька должны звониться на синий и коричневый провод, желтозеленый - на контакты заземления на корпусе вилки.
Помещаем все это в корпус (у меня просто коробочка):


« »
Подключаем управление питанием ПК
Кнопка питания на корпусе просто замыкает два контакта, мы сделаем то же самое с помощью оптопары PC817.
Когда подаешь 5В на вход светодиода, сопротивление между ножками фотодиода падает почти до нуля (на самом деле не до 0 но для наших целей сойдет). Для того, чтобы выход микроконтроллера не спалить, включаем последовательно токоограничивающий резистор.


Резистор подключаем к выходу А2 Arduino, второй контакт резистора к 1й ножке PC817 (отмечена точкой). Вторую ножку на землю. К 3й и 4й подключаем двумя проводами с двухконтактным разъемом те два пина на материнской плате, что обозначены как PWR + и PWR-, сюда же параллельно подключаем кнопку от корпуса ПК, чтобы она тоже могла замыкать эти контакты.
Подключаем к USB
В моем проекте используется программная реализация USB для AVR известная как V-USB.


Берем USB кабель, отрезаем конец, который подключался к устройству
Красный - VCC (пин 1 на схеме справа)
Черный - GND (пин 5 на схеме справа)
Зеленый - D+ (пин 3 на схеме справа)
Белый - D- (пин 2 на схеме справа)
D+ подключаем к пину 2 через резистор 68 Ом, D- подключаем к пину 4 через резистор 68 Ом.
резистором на 2.2 кОм соединяем ножки D3 и D4 (подтяжка).
Стабилитроны включаются в обратном направлении катоды (сторона с черной полоской на корпусе) к - D2 и D4 соотвественно, аноды - на землю.
VCC и GND подключаем соответственно к таким же пинам Arduino - питаться она будет от USB.

Все, наша схема собрана.
Внимательно проверьте все по шагам, чтобы не спалить при подключении ничего.
Если все проверили - прошиваем с помощью AvrDudeR . Дело в том, что писал я прошивку на С, компилировано с помощью AVRToolchain. Проект в Code::Blocks. Исходники проекта выложу чуть позже на странице проекта
Настройки такие:

COM порт указываем тот, который назначился для Arduino, для Duemillanove скорость 57600, для UNO 115200.
Файл прошивки берем этот .
Если прошилось все успешно, можно отключить Arduino от компа, подключаем теперь нашим USB проводом, который мы развели на плате через стабилитроны и резисторы. Одновременно лучше не подключать и хвостом самой Arduino и коннектором проекта.
Если все сделали правильно, в системе определится USB Input Device.

Управление с помощью плагина к MKey

Плагин позволяет назначать кнопкам пульта любые функции MKey.
Качаем MKey , устанавливаем, мой плагин к нему кладем в папку Plugins.
Запускаем MKey, на вкладке настроек включаем плагин R USB-IRPC.
Настройка простая. Жмем Add, открывается окошко, где предлагают нажать кнопку, жмем ее на пульте, даем ей название как на пульте и назначаем для нее действие.

Для того, чтобы управлять реле программно, понадобится моя программа:

Сейчас она позволяет:

  • управлять реле и выносным светодиодом
  • программно «нажать» кнопку питания на ПК
  • автоматически отключается от устройства при засыпании ПК
  • автоматически подключается при пробуждении ПК.
  • опрашивает устройство каждые 300 мс по умолчанию (настраивается)
  • выводит состояние реле и индиакторного светодиода, код последней нажатой с момента опроса кнопки пульта
  • включить/отключить прием нажатий кнопок ИК пульта.
  • сохранить в EEPROM состояние реле и считать его оттуда. При включении USB-IRPC считывает из EEPROM состояние реле и устанавливает их.
  • соответствие названий кодам кнопок пульта считывается из простого текстового файла, выбранный файл конфигурации пульта загружается при старте программы автоматически.
Чуть позже будет функционал:
  • запуска программ по нажатию кнопки
  • передачи нажатий кнопки в запущенную программу
  • назначения устройству самостоятельной реакции на выбранные кнопки пульта одной из встроенных функций: переключение реле, нажатие кнопки питания ПК. (сейчас такая функциональность в прошивке встроена для одного конкретного пульта).

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

Во второй части расскажу как сделать устройство, изображенное на самой первой фотографии самостоятельно с нуля, а не на основе Arduino.
Все исходники я немного причешу и выложу на страницу проекта, чтобы функционал можно было изменить под себя.
Если будут желающие, отдельно расскажу что и как работает с программной точки зрения.
Часть 2 - изготовление с нуля и программный интерфейс.

Теги: Добавить метки