FLIRC - Универсальный USB приемник для пультов дистанционного управления (ДУ телевизоров). ИК приемник для PC - как сделать самому, программы, настройки, схемы

FLIRC - Универсальный USB приемник для пультов дистанционного управления (ДУ телевизоров). ИК приемник для PC - как сделать самому, программы, настройки, схемы

Если есть СОМ-порт (RS-232), то простейшая схемка «пятидеталька» отлично подойдет для нашей цели: управление ПК с дистанционного пульта. Собирается схема, в буквальном смысле, из пяти деталей. Не нужно никакого микроконтроллера, ни программирования.

Конечно, Bluetooth-мышки и клавиатуры хорошо, но не у всех они есть. А пульт от телевизора или видеомагнитофона, музыкального центра, кондиционера уж точно есть у каждого.

Устройство для приема инфракрасных сигналов собирается из пяти деталей:

  1. Компенсационный стабилизатор напряжения на 5 В, 100 мА: типа 78L05 или отечественный аналог КРЕН5.
  2. Инфракрасный приемник, на несущую частоту в 38 кГц: TK-19 или его аналоги SFH506-38, TSOP1138, TSOP2238, TSOP4838. Проверяйте распиновку выбранного ИК приемника .
  3. Диод выпрямительный на 150 мА: 1N4148, КД522, КД521 или другой, небольшого размера.
  4. Резистор 0,125 Вт, сопротивлением 4.7 кОм.
  5. Конденсатор емкостью 4.7 мкФ, на напряжение 6, 10, 16, 25, 50 В.

Дополнительно может быть понадобиться приобрести:

  • Штекер COM-разъема на 9 или 25 контактов.
  • Трехжильный кабель.
  • Конденсатор емкостью 100 пФ, на напряжение 6, 10, 16, 25 В.

При правильной сборке схема компьютерного ИК-приемника в наладке не нуждается.

Диод нужен для предотвращения попадания отрицательного напряжения на вход стабилизатора.

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

Распиновка COM-поров на 9 и 25 контактов для подключения трехжильного кабеля в таблице.

Все детали напаиваются на контакты купленного COM-разъема навесным монтажом. Все вместе они идеально помещаются внутри корпуса COM-штекера.

Без использования печатной платы собранная конструкция получается очень аккуратной и компактной.

Чтобы все было красиво и не было висячих проводов снаружи, собранную на COМ-разъеме конструкцию можно разместить внутри системного блока. Снимаем пластмассовую заглушку с неиспользуемого отсека для CD-ROM или Floppy-диска, и сверлим в ней отверстие диаметром 8 мм для инфракрасного приемника. Сам ИК-фотодатчик закрепляем с внутренней стороны заглушки с помощью термоклея.

Когда компьютер выключен, втыкаем вилку с собранной конструкцией в соответствующее COМ-гнездо.

Теперь остается только обзавестись подходящим программным обеспечением для обработки сигналов с пульта. Наиболее удачным софтом для управления компьютером с ПДУ является: драйвер WinLIRC, клиентская консоль Girder или IREX.

Можно и установить из него программы:

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

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

К используемому ИК-датчику подойдет не каждый пульт. Был выбран ИК-приемник, функционирующий на самой распространенной для пультов управления частоте в 38 кГц. Но есть ПДУ использующие частоты 36 или 40 кГц.

Если обстоятельства заставят вас пользоваться именно этими редкими моделями пультов, то могут возникнуть проблемы с передачей сигнала. Придется слишком близко подносить дистанционный пульт к ИК-приемнику, и батарейки здесь ни причем.

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

Устройство резистивного сенсорного экрана

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

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_USERSoftwareIRServerCOM_PORT параметр Baud_Rate.

В ветке HKEY_CURRENT_USERSoftwareIRServerOther можно изменить 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 использован в малогабаритном исполнении. Обратите внимание, что цоколевка у него отличается от обычного.

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

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

У меня нет телевизора. Совсем. На антресолях где-то лежит старый маленький пузатик, но кабель антенны давно свернут, а телевизор этот - скорее издевательство, разве что на кухне поставить и то маловат.
Поэтому в качестве музыкального центра и телевизора я использую свой ПК. И все бы хорошо, но лень - это не только двигатель прогресса, но и фактор, который портит удовольствие, заставляя встать с дивана, на котором уютно устроился с кружкой чая, чтобы запустить программу или выключить колонки после просмотра фильма перед сном.
Существует множество ИК приемников, практически все они могут управлять компьютером и даже могут его выключить, но не могут его включить . И вот в этот момент компьютер перестает быть столь же удобным сколь телевизор или музыкальный центр. Но и проект 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 и подключаем:
Коричневый провод - фаза - подаем на реле, на тот конец, что в нормальном состоянии разомкнут (на плате нарисовано).
Синий провод - ноль, подаем напрямую на розетки, на один из контактов.
Желто-зеленый - защитное заземление, подключаем к контуру заземления розеток.
(Расцветку поправил , у меня в описании коричневый и синий были перепутаны, хотя в данном случае это большой роли не играет).
Средний контакт реле, который будет замыкаться с фазой при переключении реле, выводите каждый к своей розетке (тут нам и понадобится тот медный провод из пункта 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 - изготовление с нуля и программный интерфейс.

Теги:

  • diy
  • atmega168
  • electronics
  • ir rc
Добавить метки Рассказать в:
Эта разработка является продолжением темы ИК-приемник USB
Сайт команды разработчиков, работающих над проектом: http://mindrunway.ru

Вступление

После покупки DVB платы SkyStar2 автор с удивлением обнаружил, что она комплектуется не USB HID устройством управления, а морально устаревшей версией DCD адаптера на порт RS-232 (в народе COM порт), который в моей машине занят под программатор и модем...
Немного поискав в Интернете была найдена ссылка на интересное устройство IgorPlug , которое обрабатывало принятый с монолитного IR приёмника сигнал средствами встроенного микропроцессора, преобразовывало его и передавало отцифрованный результат измерений длительности фронтов сигнала по окончании принимаемой посылки в буфер своего драйвера по интерфейсу USB.
При попытке повторения выяснилось, что устройство
обладает набором существенных недостатков:

A) Нет возможности установить устройство без прав администратора.
Не работает на большинстве материнских платах от АТИ и Нвидеа.
C) Не работает на 50% дорогих USB хабов. И на 90% дешевых.
D) Из-за небольшой памяти микросхемы* устройство не воспринимает
кодировки с длинными посылками (кнопки определяются одинаково).

* - Имелось в виду малое количество ОЗУ микропроцессора.

Недолго думая, я открыл прошивку и начал её изучать. С первого взгляда выяснилось, что прошивка очень сырая, с многочисленными ляпами и багами.
После исправления багов, удалось привести исходник к нормальному виду, а в последствии исправить все найденные выше недостатки. В результате чего получилась самостоятельная конструкция - IgorPlug2.

Особенности схемотехники IgorPlug-2

В качестве замены был выбран более мощный процессор ATMega8, который на данный момент намного дешевле и доступнее раритетных AT90S2313 и AT90S2323.
Светодиоды были перенесены на порт "C", а два не поместившихся старших бита на порт "D".


Универсальный вариант - перевёртыш: IgorPlugU_A4.pdf
А для любителей всё упрощать - минимальная версия: IgorPlug_A4.pdf или
Вы спросите: "Почему перевёртыш"?

Просто плата разрабатывалась с учётом практически всех возможных реализации, т.е. в зависимости от конкретной прошивки, а так же количества и типа установленных деталей устройство приобретает разный набор функций (можно подключать: ИР передатчик, одно или несколько реле, задействовать периферию и многое другое)... Если искать аналогию, то можно сравнить с материнской платой компьютера т.е. в зависимости от текущей задачи - выбирается конфигурация...

Прошивки для переработанного варианта USB_Infrored под ATMega8/88.

Прошивка на базе 6 версии IR блока с USB модулем v0.3A.
Оставлена для частичной совместимости со старыми системами и имеет старую систему анализа. То есть, первые 7 байт (с 4 по 10, т.к. 1-3 служебные) имеют в 8 РАЗ МЕНЬШИЙ масштаб, а все последующие имеют в 4 РАЗА МЕНЬШИЙ масштаб по сравнению с постоянным масштабом последующих версий (от 8 выше).
Для исправления найденных недостатков USB части и повышения стабильности системы в целом проводилось несколько пересборок прошивки с применением последних USB модулей для ATMega8 и ATMega88 процессоров.

Прошивка на базе 9min версии для Mega8
Прошивка на базе 9min версии для Mega88 для IR блока с USB модулем v0.3A.
Это не обучаемая, урезанная 9 версия. Создана для создания файлов обучения полных 9 и как замена 8 версии. (полная, обученная 9 заменяет в режиме совместимости версию 6).
По сравнению с 6 версией IR блока 8 версия имеет в 4 раза более крупный масштаб, псевдо 2х байтовую посылку с интеллектуальным сжатием данных, что позволило отказаться от переменного масштаба.
В добавление к масштабу. В оригинальной конструкции время отмерялось 12 MHz / 1024, а в IgorPlug2 отмеряется 12 MHz / 256. Соответственно цена деления для оригинала будет 85,3(3) микросекунды (причём первые 7 бит по 170,6(6) микросекунды) и 21,3(3) микросекунды для IgorPlug2.

Данное устройство может управлять внешними нагрузками с помощью реле. Базовая конфигурация поддерживает одно реле (причём есть возможность работы с реле автономно от компьютера). Расширенная конфигурация ШТАТНО поддерживает четыре реле. А теоретический максимум - 128 реле (при подключении до 16 дешовых и доступных сдвиговых регистров с защёлкой - 74HC595 на встроенный SPI интерфейс).



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows