ИК приемник для компа.

Три способа управления компьютером через любой ИК пульт

Три способа управления компьютером через любой ИК пультДанный материал содержит в основном теоретическую информацию относительно использования инфракрасных пультов от телевизоров и прочей бытовой техники для управления компьютером. Найти реальное применение такой возможности не так уж и сложно. Можно управлять запуском программ; движением курсора мыши и имитировать нажатие ее кнопок; имитировать нажатие клавиш клавиатуры; управлять WinAmp-ом; выключать и перезагружать компьютер.

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

Начнем с самого простого варианта – работы через обычные инфракрасные адаптеры, которые продаются во многих магазинах по цене от 15 до 40 долларов. Подключаются они посредством шины USB или последовательного порта RS-232 (обычный COM-порт). Последний вариант для нашей затеи выглядит предпочтительнее, т.к. рассмотренный софт скорее всего не будет работать с USB версиями адаптеров. Кроме того, они стоят дешевле. В нашем случае мы использовали адаптер TEKRAM IRmate IR-210B, подключенный через COM-порт. Сразу нужно предупредить о том, что найденные и описанные нами программы не требуют установки драйверов для каких-либо адаптеров. Программы сами напрямую работают с COM-портом. Установленные драйвера будут мешать нормальной работе. Если использовать USB версии адаптеров, то тут ситуация обратная – драйвера необходимы но, как уже упоминалось ранее, в настройках всех программ не значилась поддержка устройств такого рода.

Программа распространяется на условиях Shareware. В демонстрационном режиме возможно использование только четырех команд с пульта. Поддерживает различные адаптеры, в том числе и работающие через WinLirc (об этом будет рассказано отдельно). Поддерживаются напрямую пульты AVerMedia TV-tuner. Полный список поддерживаемых устройств можно найти на сайте разработчиков.

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

Они располагаются в меню “Файл”. Изначально, нужно указать к какому порту подключен адаптер. Для нашего IRMate 210 была ремарка в описании программы: работает только на скорости порта 2400 бит/с. Подчиняемся указаниям, в остальном, все настройки вполне оптимальны. Логика работы с этой программой, впрочем, и с остальными тоже, подразумевает, что Вы должны завести в программе сначала источник – пульт управления. В нашем примере мы назвали его “Samsung”. Затем к источнику добавляются команды, они располагаются под именем пульта. При их добавлении программа присваивает их значениям сигналы с пульта ДУ. Что бы назначить кнопке ПДУ действие, достаточно перетащить мышкой нужную команду в окошко “Срабатываемые команды” и в закладке “Список действий” указать все, что необходимо. Не зарегистрированная версия программы не даст создать более четырех действий на одной схеме.

Описание работы с этой программой начнем с ее настройки. При первом запуске программы Вы попадаете в раздел основного меню “General Config”. В нем необходимо выбрать тип используемого адаптера. В нашем случае это Generic Serial IR Receiver. Далее перемещаемся в пункт “Hardware Setup”.

Аналогично предыдущей программе, щелкаем в пустом поле правой кнопкой мыши и выбираем из меню пункт “New Remote Control”. Мы назвали его Samsung. Далее с помощью правой кнопки мыши начинаем добавлять клавиши с ИК пульта (“New remote Button”). В процессе определения кнопок пульта возникла проблема – программе все коды кнопок казались одинаковыми. Код кнопки отображается справа в окошке “Signature” и является простым набором данных, прочитанных из COM-порта. Решилось все просто: на скриншоте рядом с указанием порта есть кнопочка “Setup”. Она вызывает окно настроек, где нужно выбрать вторую закладку с названием “Device Settings”. В нем в значении параметра “IR code length” поставить большее значение, например, 32 байта.
Для назначения уже определенным кнопкам пульта действий нужно перейти в третий раздел “Actions”. Добавить наш пульт и добавить кнопки, которые мы определили в предыдущем разделе, только теперь выбор будет из ниспадающего меню, вызываемого правой кнопкой мыши. Действия к командам добавляются в правом окошке.

Выставив галочку в пункте “Disable OSD” Вы избавитесь от окна, которое будет выскакивать на экран при нажатии этой кнопки на пульте.

Субъективно, uICE пришлась мне по вкусу больше, чем PCRemote. Но лучше попробовать обе, т.к. у них есть несколько отличий. Кроме того, если Вы собираетесь пользоваться незарегистрированными версиями, то uICE через 30 дней полностью потеряет свою работоспособность, в то время как PCRemote будет работать с вышеупомянутыми ограничениями.

Работа с самодельными ИК-приемниками

Рассмотренный выше способ подойдет тем, у кого уже есть ИК-адаптер или приобретение такового не вызывает каких либо затруднений. В ином случае простейший ИК-приемник, подключаемый через стандартный RS-232 порт, соорудить самому совсем не сложно. Более того, существует намного больше программ, работающих именно с самодельными ИК-приемниками. Самой популярной такой программой является WinLirc. Правильнее ее будет назвать не программой, а интерфейсом работы с COM-портом. Этим интерфейсом пользуются все остальные программы, которые будут описаны далее.

WinLirc (winlirc.sourceforge.net) подразумевает работу с простейшим ИК-приемником, схема которого выглядит так:

Ее основой служит фотомодуль IC1 – TSOP1836. Аналоги: IS1U60L, GP1U52X, SFH506-36 или наш отечественный TK1833. IC2 – интегральный стабилизатор напряжения 78L05. У него три ноги: вход любое напряжение; выход +5в; земля. Отечественный аналог КРЕН5A.
C1 – 4.7µF
R1 – 4k7
D1 – 1N4148

Схему можно еще упростить, убрав из нее стабилизатор:

Еще один вариант, который подразумевает подключение к COM-порту стандартного ИК-приемника от ТВ тюнера (AverTV):

На этих вариантах можно остановиться. Для тех, кто не ищет легких путей можно порекомендовать заглянуть на эти сайты:

  • Universal Infrared Receiver (www.geocities.com/SiliconValley/Sector/3863/uir/) – еще один вариант более продвинутого ИК-приемника с прилагающимся софтом.
  • Remote Control (ln.com.ua/

thccc/rc/) – схема очень похожа на рассмотренную нами, но имеет незначительные отличия. Также прилагается “фирменное” ПО.

  • Схемы передатчиков (www.lirc.org/transmitters.html) – страничка расположена на сервере Lirc.
  • Теперь самое время перейти к рассмотрению программ, работающих с нашим ИК-приемником.

    Это интерфейс для устройств, описанных выше. Работает он под управлением Windows 95/98/ME/NT/2000. Изначально создавался для Unix, так что поклонники этой операционной системы найдут все, что им нужно на этом сайте www.lirc.org. Сама по себе эта программа способна только принимать и обрабатывать сигналы, принятые из COM-порта от нашего устройства. Для того, что бы с помощью пульта ДУ совершать какие либо действия на компьютере необходимы другие программы, которые в свою очередь будут получать все данные от WinLIRC. Все уже вышеописанные программы способны работать с WinLIRC.

    Версия 2.0 вышла буквально на днях. Программа распространяется на условиях Shareware, но для граждан бывшего СССР есть бесплатная регистрация. Возможности у программы достаточно широки: начиная эмуляцией клавиатуры и управлением WinAmp-ом до управления внешними устройствами. Все эти возможности появляются только после установки соответствующих плагинов. Все они распложены на сайте автора.

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

    Sonique IR Control 0.1
    Программа работает через WinLIRC и создана для управления одноименным проигрывателем МР3 файлов.

    Remote Control plugin for Winamp 1.23
    Работает через WinLIRC и другие программы. Появляется в настройках плагинов в самом WinAmp. Признаться, у меня так и не получилось его нормально настроить. Кроме всего прочего программа является Shareware, т.е. со временем она потеряет свою функциональность.

    Fast Remote 2.0
    Эта программа работает напрямую только с ИК пультами от ТВ-тюнеров. Разумеется, ТВ-тюнер должен присутствовать в системе.

    Ссылки приводятся на сервер Download.com, поскольку к указанным программам мы не смогли найти их домашние страницы или в момент поиска они были не доступны.

    Есть еще один способ без всяких лишних схем управлять с помощью ИК пульта компьютером. Суть его состоит в подключении ИК приемника к линейному входу звуковой карты. Далее настройку и управление этим можно осуществлять с помощью все той же SlyControl. Версия 1.1 ( slycontrol1.zip – версия со базовыми плагинами

    2 Мб) с помощью специального плагина это поддерживает.

    Дистанционное управление для компьютера

    Необходимость дистанционной работы с компьютером появилась давно, но сначала беспроводное управление и обмен данными не выходили за пределы цифровой сферы — беспроводных сетей, обмена данными между двумя компьютерами, компьютером и принтером и т.д. Затем, с появлением и активным развитием мультимедийных возможностей компьютеров, возникла потребность управлять ими так же, как обычной бытовой аппаратурой, то есть с дешевого инфракрасного пульта дистанционного управления (ИК-пульта).

    Принципы реализации

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

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

    Таким образом, необходимо решить две задачи:

    1. Управлять компьютером так же, как бытовым устройством типа телевизора или видеомагнитофона при помощи недорогого ИК-пульта.

    2. Управлять бытовыми устройствами (теми же телевизорами и магнитофонами) с компьютера так же, как со стандартного ИК-пульта.

    Однако, к сожалению, первая задача решается совсем не так просто, поскольку ни стандартный компьютерный порт IrDA (встроенный в ноутбук или реализованный на материнской плате настольного компьютера), ни внешний сенсор, подключенный к порту USB, не могут принимать сигналы ИК-пульта из-за проблем с синхронизацией. Дело в том, что данные, передаваемые по интерфейсу IrDA, как и через COM-порт компьютера, кодируются в дискретном цифровом виде: наличие импульса — это логический нуль, а длительность импульса строго задана по времени (3/16 bit time). Для передачи единицы информации обычно используется режим из восьми таких равномерных импульсов (бит) без контроля четности, и при этом к ним добавляется еще один стоповый импульс (бит). Первый импульс рассматривается как стартовый, а далее, в зависимости от выбранной скорости передачи (максимально 115 200 бит/с), наличие или отсутствие импульса в заданный момент времени определяет значение очередного бита информации (0 или 1). Единица информации (байт) считается успешно принятой, если правильно принят стоповый бит, то есть если в строго заданный момент времени не будет никакого импульса.

    В принципе, у IrDA- и COM-портов есть некоторые различия, но можно получить доступ к IrDA как к обычному COM-порту, если приемник подключается в COM-порт или в IrDA-разъем на материнской плате. Методы же кодирования команд бытового пульта дистанционного управления на инфракрасных лучах совершенно иные, причем они могут быть разными, а самое главное различие состоит в том, что каждый информационный импульс, посланный с ИК-пульта, — это на самом деле некий непрерывный ИК-фон заданной длительности с частотой от 30 до 56 кГц.

    Конечно, существуют программы анализа команд, посланных с ИК-пульта (например, широко известная программа WinLIRC), но очень мала вероятность того, что для одной и той же команды ИК-пульта IrDA-интерфейс будет давать одинаковые байты. Результат, например, может меняться от расстояния между IrDA-приемником и ИК-пультом. И наоборот, для разных команд пульта могут быть получены одинаковые байты информации. Однако в случае использования некоторых моделей ИК-пультов с дистанционно-пульсовой модуляцией (pulse-distance) при относительно коротких импульсах IrDA-интерфейс работает довольно уверенно.

    Все вышесказанное относится к работе IrDA-интерфейса как COM-порта, что иногда требует дополнительных настроек, а использовать, например, USB IrDA-устройство для работы в таком режиме вообще невозможно. Кроме того, IrDA нельзя использовать для приема команд от ИК-пультов с другими типами модуляции, а также если в командах присутствует длинный первый информационный импульс, что встречается довольно часто.

    Вторая задача, то есть генерирование команд ИК-пульта по IrDA-интерфейсу, — не такая сложная. И если знать точный формат команды для данного ИК-пульта, то можно сформировать несколько пакетов и посылать их по IrDA через заданное время, имитируя длительный импульс. При этом на скорости передачи 38 400 бит/с (наиболее близкой к частоте большинства ИК-пультов) получается очень близкий к оригиналу сигнал, который успешно управляет бутовыми устройствами. Однако и здесь не бывает без сбоев, и принимающая аппаратура может воспринимать цифровой сигнал неправильно. В частности, стоповый бит может восприниматься как короткая пауза между информационными импульсами, что приводит к неправильному декодированию посылаемой команды.

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

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

    Готовые решения

    ИК-приемник в COM-порт

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

    Сегодня на нашем рынке есть как импортные, так и отечественные разработки, причем существует три типа устройств:

    • подключаемые к COM-порту;

    • со сквозным подключением к разъему клавиатуры.

    К COM-порту подключается большое количество устройств по цене от 5 до 30 долл. Например, инфракрасный приемник InfraCom (http://www.infra.com.ru) способен принимать сигналы с любого ИК-пульта (и импортного, и отечественного) и посылать команды компьютеру. Подключение не вызывает никаких трудностей, а все необходимое для работы устройства программное обеспечение находится на одной дискете. InfraCom работает под любой операционной системой и не вызывает конфликтов с остальными устройствами (только не надейтесь вместе с ним получить еще и цифровой приемопередатчик IrDA, ибо InfraCom работает только как приемник сигналов с ИК-пульта). Стоит он всего 10-15 долл., а за 150 руб. к нему можно докупить универсальный пульт управления.

    Все устройства из этого семейства, как правило, не требуют драйверов (подключение происходит аналогично подключению мыши, то есть устройство подсоединяется к любому свободному COM-порту), а конфигурируются и работают со специальными программами или с дополнительными модулями (plug-ins) к известным программам (таким, например, как Winamp или DivX-плеер).

    Возможности данного типа устройств таковы:

    • запуск проигрывателей аудио- или видеокомпакт-дисков;

    • управление громкостью, воспроизведением, перемоткой, поиском и т.д.;

    • управление программами просмотра фильмов в формате DivX (MPEG-4) или DVD (MPEG-2);

    • осуществление запуска или остановки любой программы;

    • управление указателем мыши и нажатием ее кнопок;

    • возможность использовать ИК-пульты дистанционного управления в качестве джойстика;

    • программирование любых кнопок на ИК-пульте на выполнение определенных функций.

    Кроме того, модули для таких программ, в частности Winamp MP3 Player, позволяют управлять прослушиванием музыки независимо от того, какая программа запущена на компьютере.

    Не следует забывать и о возможности управления мышью с клавиатуры (а значит, и с пульта ДУ), реализованной в системах Windows: для этого нужно выполнить команды: Пуск ® Настройка ® Панель управления ® Специальные возможности ® Мышь ® Управление с клавиатуры. Если пункта Специальные возможности в панели управления нет, его следует установить (Установка и удаление программ ® Установка Windows ® Специальные возможности).

    ИК-приемник в порт PS/2

    Более дорогие специализированные устройства, работающие через клавиатурный разъем PS/2, позволяют создавать многофункциональные мини-клавиатуры и работают более надежно, но при этом они используют пульты, которые входят в комплект. Так работает, например, дистанционная программируемая мини-клавиатура (http://midiman.msk.ru/pult.htm): приемник инфракрасных сигналов подключается к клавиатурному разъему компьютера (для клавиатуры, работающей параллельно, предусмотрен специальный вход в приемнике). Дальность уверенного приема — не менее 7 м.

    Такое устройство более удобно и имеет больше возможностей. Если, например, BIOS вашего компьютера позволяет включать/выключать ПК с клавиатуры, то это можно будет реализовать с данного пульта. Если же у вас есть мультимедиаклавиатура, имеющая дополнительные мультимедийные клавиши, то все дополнительные функции, реализуемые с помощью этой клавиатуры, вы сможете запрограммировать напрямую на пульт дистанционного управления (то есть все, что можно делать с клавиатуры, можно будет делать и с него). У подобного устройства весьма широкие возможности по управлению компьютером, однако его стоимость составляет уже 25-30 долл., а кроме того, пользователь привязан к тому пульту управления, который идет в комплекте с этим устройством. Тем не менее разработчики петербургской фирмы «Скорпион» (http://www.keys.da.ru/) уверяют, что в случае поломки или утраты фирменного пульта с ИК-приемником сможет работать любой другой пульт стандарта RC-5 (RC6-3, RC6-2, RC6-5, RC-500 и пр.). Этому стандарту соответствуют пульты к телевизорам Philips и большая часть телевизионных пультов корейских производителей LG и Samsung.

    ИК-приемник в USB

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

    USB-пульты выпускает компания Shuttle, известная линейкой миниатюрных компьютерных платформ XPC и самыми разнообразными устройствами для этой платформы. И хотя эти фирменные пульты дистанционного управления персональным компьютером ориентированы на применение только с платформой XPC, ничто не мешает использовать их и с другими персональными компьютерами, оснащенными интерфейсом USB.

    На пульте Shuttle есть масса стандартных кнопок, присутствующих на обычной клавиатуре, таких как Enter, ESC, Del, Back Space, клавиши цифр и др. Кроме них, имеются и более специфичные, например: громкость правого и левого каналов, кнопка Mute (приглушение звука), а также 19 кнопок, которые пользователь может назначить по своему усмотрению. В принципе, новинка любопытная, но ее применение пока явно ограничено прослушиванием музыки и просмотром видео, так как поддерживающих ее программ еще крайне мало.

    Управление компьютером с ИК-пульта ТВ-тюнера

    Некоторые современные компьютерные платы ТВ-тюнеров поставляются вместе с ДУ-пультом. Детальное рассмотрение программ дистанционного управления к таким пультам показывает, что они способны запускать и приложения, описанные в файле конфигурации. Конечно, просто запустить такую программу, как Winamp, было бы неинтересно, но на сайте http://www.winamp.com/ имеется комплект небольших программ, позволяющих управлять этим плеером и с ДУ-пульта ТВ-тюнера. К тому же применение такого пульта будет ограничено прослушиванием музыки, просмотром видео и телевизионных программ.

    Подробнее о ТВ-тюнерах с пультами управления можно прочитать в специальном разделе сайта IXBT (http://tuner.ixbt.com/), посвященном TV- и FM-тюнерам. Там же есть и утилиты для дистанционного управления компьютером с этих пультов.

    Для наиболее распространенных у нас ТВ-тюнеров компании AVerMedia (TVCapture98 и TVPhone95/98 с/без VCR, AVerTV Studio (модели 103, 107, 203), Phoebe TV Master + FM и др.) существует специальная программа RC4WA (http://rc4wa.boom.ru/index_ru.html), основное назначение которой — управлять плеером Winamp с пультов ТВ-тюнеров.

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

    Многие современные мультимедийные проекторы подключаются к компьютеру и имеют удобный пульт дистанционного управления. Входящий в комплект ИК-пульт позволяет управлять различными функциями проектора, а встроенная функция мыши point-and-click («направь и щелкни») обеспечивает простое управление компьютером, подсоединенным по интерфейсу USB. Конечно, такое решение подойдет не для всех домашних пользователей, поскольку проекторы пока еще слишком дороги, но о такой возможности забывать не следует.

    Программы и утилиты для дистанционного управления вы можете найти на нашем CD-ROM.

    Дистанционное управление компьютером через USB порт

    Мы слушаем mp3 и смотрим xvid или x264, и компьютер служит центром развлечений как минимум в одной комнате большинства домов. Если только у вас нет мультимедийного ПК (HTPC), довольно проблемно использовать клавиатуру чтобы поставить на паузу, изменить громкость, или прокрутить раздражающие кадры. Модельный ряд приемников дистанционного управления для PC начинается конструкциями для старых последовательных портов (у вас есть такой?) и заканчивается USB устройствами, которые не поддерживаются популярным программным обеспечением. Мы хотим представить вам инфракрасный USB приемник, который имитирует общий протокол, поддерживаемый программным обеспечением Windows, Linux и Mac. У нас есть полное описание протокола, плюс схема и список деталей.

    Пульты дистанционного управления передают данные модулированным инфракрасным пучком. Интегральная микросхема инфракрасного приемника выделяет из модулированного пучка незашумленный поток 0 и 1. Поток данных декодируется микроконтроллером и отправляется на компьютер посредством USB порта. Программное обеспечение обрабатывает коды и совершает необходимые действия на компьютере.

    Инфракрасные приемники для компьютера

    В самой старой конструкции инфракрасного приемника для ПК микросхема переключает один из контактов разъема последовательного порта, обычно DCD. Эта конструкция, возможно, возникла в Usenet, и до сих пор является самой популярной в сети. Они не являются реальными устройствами для последовательного порта, потому что не посылают данные на компьютер. Вместо этого, компьютерная программа посылает импульсы на последовательный порт и демодулирует сигнал. Эта конструкция очень простая, но она завит от доступа к прямым прерываниям и точности синхронизации, так что больше недоступна в Windows. Пользователи Linux или Mac могут попытаться собрать такое устройство, если у них до сих пор имеется последовательный порт. Нам не удалось заставить такой приемник работать с последовательным портом современного ПК с Windows XP, и мы не уверены в точности синхронизации передачи данных с USB на преобразователь последовательного порта.

    Более продвинутые инфракрасные приемники являются реальными устройствами для последовательного порта, которые перед посылкой на компьютер измеряют или декодируют инфракрасный сигнал. UIR/IRMAN и UIR2 собраны на классическом pic 16f84, но не предоставляют пользователям программного обеспечения и/или исходного кода. Эти устройства будут работать на современном компьютере, но для них нужен преобразователь сигналов с USB на последовательный порт. Usbtiny и usbirboy являются «родными» для USB порта устройствами, но они не имеют широкой поддержки.

    Программное обеспечение для приемника

    Вне зависимости от типа приемника, чтобы воспринимать приходящие от дистанционного управления команды и превращать их в действия, компьютеру нужна программа. У пользователей Linux и Mac есть LIRC, которая поддерживает множество различных типов приемников. Пользователям Windows повезло меньше. WinLIRC – это портированная с LIRC для Windows программа для простых приемников последовательного порта основанных на прерываниях; ее последняя версия вышла в 2003. Girder первоначально была бесплатной утилитой для автоматизации ПК, но впоследствии она разрослась до дорогого проекта с 30-дневным демонстрационным режимом. К счастью, последняя бесплатная версия Girder (3.2.9b) до сих пор доступна для скачивания.

    Работа с протоколами инфракрасного дистанционного управления

    Декодирование ИК сигналов

    Дистанционные пульты управления кодируют команды в виде промежутков или импульсов определенной продолжительности на несущей частоте 38 кГц, объяснение принципов их работы можно найти здесь. Микросхема ИК приемника отделяет поток данных от несущей. Нам остается только расшифровать поток данных при помощи микроконтроллера. Имеются десятки протоколов, которые используются для дистанционного управления, но наиболее широко распространен и используется любителями RC5 от Philips.

    RC5 представляет собой поток из 14 битов одинаковой длины по 1,778 мс на бит. Импульс, приходящийся на первую половину этого времени представляет 0, а импульс, приходящийся на вторую половину – 1. Эта схема называется манчестерским кодированием.

    Мы использовали логический анализатор, чтобы протестировать выходной сигнал одного известного пульта дистанционного управления для WinTV, использующего протокол RC5. Диаграмма показывает два нажатия на кнопку 1 и два нажатия на кнопку 2; обратите внимание, что выходной сигнал инвертирован, и манчестерское кодирование относительно описанного выше выглядит наоборот.

    Первые два бита являются стартовыми, затем следует бит переброски. Бит переброски всякий раз изменяется при нажатии кнопки, поэтому приемник понимает разницу между удерживаемой кнопкой и несколькими повторными нажатиями кнопки. Следующие 5 битов это адрес (0b11110=0×1E), за ними следует команда (0b000001=0×01, 0b000010=0×02). Передача сигнала в обратном направлении по протоколу RC5 использует второй стартовый бит как командный бит 7.

    Представление кодов дистанционного управления на компьютере

    Рассмотрев предшествующие разработки, мы выделили три основных пути передачи данных с пульта дистанционного управления на компьютер:

    – Приемники конкретного протокола декодируют его и посылают на ПК реальные декодированные команды.

    – Приемник общего типа измеряет продолжительности каждого импульса и промежутки между ними и посылает форму сигнала на ПК для обработки.

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

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

    Протокол компьютерного интерфейса

    Мы не хотели писать свое собственное программное обеспечение или драйвер, поэтому поискали уже существующий, хорошо устоявшийся протокол связи. Приемник типа UIR/IRMAN/IRA/CTInfra/Hollywood+ поддерживается программами Girder и LIRC, и использует простой последовательный протокол с подтверждением связи

    • Устройство инициализируется контактами DSR и DTR последовательного порта. У нас всего этого нет, и мы не беспокоимся по этому поводу.
    • Компьютер посылает запрос с произвольной задержкой. Устройство подтверждает готовность. Наше устройство будет подтверждать готовность при любом радиоимпульсе.
    • Команды пульта дистанционного управления посылаются в виде уникального 6-байтового шестнадцатеричного кода. Мы будем декодировать сигнал RC5 и посылать действительные значения, но вместо этого можно использовать распространенный шестнадцатеричный код.

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

    Нажмите сюда, чтобы увеличить рисунок схемы (png). Наш приемник базируется на микроконтроллере PIC 18f2455, который может работать с USB портом и является меньшей и более дешевой версией 18f2550. Семейство 18f можно программировать при помощи универсального PIC-программатора, в котором чтобы понизить входное напряжение при программировании до безопасного уровня используется диод. Для обеспечения режима внутрисхемного программирования используются конденсатор (c1), диод(d1) и резистор(r1): http://www.instructables.com/id/Understanding-ICSP-for-PIC-Microcontrollers/ . Для согласования уровней напряжения последовательного порта и микроконтроллера или переходника USB-COM вам понадобится приемопередатчик MAX232.

    Периферийные устройства для USB требуют внешнюю частоту 20 МГц (Q1, C5-6), для чего используется конденсатор 220 мкФ. Чтобы получить эту емкость мы параллельно соединили 2 конденсатора по 1 мкФ. 3 мм светодиод (LED1) подключенный через ограничивающий резистор 330 ом (R2) показывает наличие USB соединения.

    Мы использовали микросхему инфракрасного приемника TSOP-1738, которой нужен задающий конденсатор 4,7 мкФ (C4). Если вы не можете найти эту конкретную микросхему, работать должна любая приведенная здесь. TSOP-1738 инвертирует принимаемый сигнал, при приеме 1 она дает 0, так что при отсутствии сигнала подтягивающий резистор (R3) выдает на выходе 1. Проверьте, не используете ли вы другой приемник, тогда вам потребуется заземляющий резистор и возможность декодирования инвертированного манчестерского кода в программном обеспечении.

    Устройство питается от шины USB, и нам не нужен дополнительный источник питания.

    Нажмите сюда, чтобы увидеть полноразмерную диаграмму размещения компонентов. (png) Печатная плата 100% односторонняя, и все отверстия на ней сквозные. Расположение элементов и печатная плата разработаны на Cadsoft Eagle, свободно распространяемые версии которого доступны для большинства платформ. Все файлы включены в архив проекта (zip).

    28 контактный .300 разъем

    конденсатор 27pF (15pF может быть лучше)

    резистор 10K Ом

    резистор 330 Ом

    TSOP1738 (устаревший, попробуйте TSOP1138)

    USB ‘B’ разъем, мама

    .1″ штырьковый разъем

    .1″ штырьковый разъем

    Программное обеспечение написано на С с использованием свободной демонстрационной версии компилятора C18 от Microchip. Программа и исходный код включены в архив проекта (zip).

    Мы использовали версию 2.3 стека протоколов для USB от Microchip, чтобы создать последовательный USB порт, использующий уже установленные во многих системах драйверы. Стек протоколов USB имеет простые функции чтобы перечислять USB устройства и передавать данные между устройством и хостом. Чтобы заставить демонстрационную версию маршрута сообщения работать на нашем обычном оборудовании, пришлось поменять всего лишь несколько контактов.

    Наша реализация протокола UIR/IRMAN/IRA/CTInfra/Hollywood+ просто отвечает ‘OK’ на букву ‘R’. Это должно удовлетворять всем требованиям подтверждения связи любой реализации этого протокола.

    Мы решили особым образом декодировать RC5 (и RC5x), потому что это широко используемый протокол, и еще у нас был пульт дистанционного управления, работающий только с этим протоколом. Большая часть декодирования производится в обработчике прерывания:

    • Первое изменение сигнала производит прерывание, которое запускает 889us таймер (с периодом полбита).
    • По каждому прерыванию таймера выбирается половина закодированного манчестерским кодом бита.
    • При каждом другом прерывании измерения сравниваются, и значение бита приравнивается к 0, 1, или ошибке. Ошибки сбрасывают декодирование.
    • В конце каждой передачи адресный и командный биты декодируются и посылаются на хост с 4 резервными битами (0). Мы убираем бит переброски, потому что он заставит программное обеспечение компьютера думать, что каждое другое нажатие имеет уникальный код. Для совместимости с RC5x к командному биту добавляем второй стартовый бит; это просто добавляет 0×40 к кодам для пультов не использующим RC5x.

    Можно сделать более общую версию, если убрать шаг манчестерского кодирования (3) и посылать 48 выборочных битов (все 6 байтов) на компьютер.

    Установка инфракрасного USB приемника

    Большинство операционных систем уже имеют драйверы, которые поддерживают устройства, вроде приемника, для виртуального последовательного порта. Windows XP имеет нужные драйверы, но чтобы правильно ассоциировать их с нашим устройством ей нужна помощь .inf файла.

    В первый раз когда вы подключаете приемник, Windows покажет диалог установки нового оборудования. Выберите использование стандартного драйвера и направьте его на .inf файл, включенный в архив проекта (zip). Это связывает устройство с уже включенным в Windows драйвером и добавляет приемник как COM порт. На панели управления вы можете проверить номер COM порта.

    Пользователи Mac и Linux могут использовать приемник с LIRC, а пользователи Windows столкнутся с выбором использования либо старой, свободно распространяемой версии Girder, либо новой условно-бесплатной версии с 30-дневным демонстрационным режимом. Мы использовали свободную версию Girder, но надеемся, что вы, ребята, сможете предложить альтернативу – хороший программный продукт с открытым исходным текстом который мы просмотрели.

    Безотносительно к используемому вами на компьютере программному обеспечению, настройте его для приемника типа UIR/IRMAN/IRA/CTInfra/Hollywood+ и введите COM порт или назначенный ему порядковый адрес. Наш приемник также совместим с любыми опциями протокола вроде ‘Fast UIR Init’ и ‘Skip UIR Init Check’ (‘Быстрая инициализация UIR’ и ’Пропустить проверку инициализации UIR’), которые укорачивают или исключают подтверждение связи “IR”->”OK”. Теперь испытайте приемник и добавьте дистанционное управление соответственно с документацией к вашему программному обеспечению.

    Ручной интерфейс с терминалом и отладка

    Если у вас возникли проблемы с приемником или вам просто интересно, попробуйте управлять им через последовательный терминал. Нам очень нравится последовательный терминал на Hercules. Установите верный COM порт, а установки скорости и конфигурации игнорируются драйвером последовательного USB порта.

    ‘R’ пригласит приемник ответить ‘OK’. Коды RC5 возвращаются как необработанные байты, так что будьте уверены, что ваш терминал установлен на прием шестнадцатеричных значений и интерпретацию их как ASCII текст. Первый байт – это адресный байт RC5 (0×1E), за ним следует байт команды (0×41), и затем четыре резервных 0 чтобы соответствовать протоколу UIR/Irman. На рисунке показано установление связи и короткое нажатие на кнопки 1, 2 и 3.

    Свободно распространяемая утилита под названием Portmon, ведет запись активности COM порта. Это полезно для выяснения используемых приемником протоколов и отладки взаимодействия имеющегося у нас оборудования и программами с закрытым исходным кодом. На рисунке показано как Girder посылает строку инициализации ‘IR’ (0×49,0×52), и приемник отвечает ‘OK’ (0×4F,0×4B).

    Наш совместимый с RC5x приемник поддерживает широко распространенный протокол интерфейса. Инфракрасному приемнику с открытым исходным кодом можно добавить кучу дополнительных свойств:

    • Поддержка всех дистанционных пультов управления через общий генератор шестнадцатеричного кода, как у первоначального устройства UIR/Irman.
    • Добавка дополнительных декодеров протоколов, как например RC6.
    • Поддержка множественных протоколов с настраиваемым интерфейсом.
    • Реализация ввода/вывода последовательного порта.
    • Хранение в EEPROM вариантов конфигурации, включающих протокол, тип интерфейса, настройки таймера, последовательного порта и т.д.

    Перевод: Piyavka, по заказу РадиоЛоцман

    Советы / Подключение ИК-порта к ПК и работа с ним

    Подключение ИК-порта к ПК и работа с ним.

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

    Для чего нужен ИК-порт? Такое устройство позволяет без применения проводов создать устойчивое соединение между компьютером и другими устройствами (оборудованными ИК-портами). Например, это может быть сканер или принтер. Хотя сейчас большинство пользователей приобретает такое устройство для связи настольного компьютера с карманным компьютером или, что бывает значительно чаще, сотовым телефоном. Последние два устройства имеют достаточно примитивную систему ввода и, безусловно, ее расширение увеличивает комфорт работы с информацией.

    Мобильный телефон стал не только атрибутом “новых русских”, но и нормальным и вполне доступным устройством для большинства пользователей компьютеров. ИК-порт, которым оснащены многие модели телефонов, позволяет редактировать содержимое записной книжки аппарата через обыкновенный компьютер. Можно без особых проблем сменить логотип на дисплее или поставить мелодию вызова. Достаточно интересная функция, которая появляется у владельца мобильного аппарата, это сетевой мониторинг, который даст самую исчерпывающую информацию по сети. Не могу не сказать о такой услуге практически всех сотовых операторов, как мобильный Интернет. В этом случае, вы можете выходить во всемирную сеть через ваш мобильный телефон. Другими словами, вы становитесь пользователями Интернет в любой точке, где работает необходимый Вам оператор. Это достаточно дорого, но альтернатив решения этой проблемы в некоторых случаях нет.

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

    Начнем с фотографии, на ней изображен внутренний ИК-порт IR210L. В продаже можно достаточно легко приобрести ИК-порты двух типов (по подключению): на стандартный 9-пинный разъем Com или на IRDA разъем материнской платы. Устройства первого типа являются универсальными. Другими словами, если вы купите такой ИК-приемопередатчик, то он без всяких осложнений встанет на ваш компьютер. Если же вам приглянулся ИК-порт, который подсоединяется к материнскому разъему IRDA, то могут возникнуть проблемы. Внимательно читайте инструкцию и консультируйтесь с продавцом. Например, ИК-порт компании ASUS работает только на материнской плате этого же производителя. Очень удобные ИК-порты делает одна из китайских компаний (на полиэтиленовом пакетике нет названия фирмы изготовителя). Коннектор для подключения к IRDA выполнен по схеме “собери меня сам”. С одной стороны, ему явно не хватает механической прочности, и вставить его в разъем материнской платы очень сложно. Но с другой стороны, вы можете с легкостью, не прибегая к помощи паяльнику и пинцета, собрать нужный коннектор, тем самым обеспечить необходимую “пинную” совместимость. Такая гибкость решения делает его очень привлекательным для покупки. Хотя качество китайских ИК-портов. Давайте не будем о плохом, в дальнейшем мы поговорим о характеристиках подобных устройств.

    По непроверенным слухам в магазинах можно приобрести ИК-порты, имеющие USB интерфейс. Не буду врать, сам таких ни разу не видел. Сделать такой никаких проблем не составляет. Попробуйте поискать, может быть вам повезет.

    Устройства ИК-связи нельзя назвать очень капризными, но все же нужно немного рассказать об условиях их эксплуатации. Прежде всего, стоит знать, что длина волны работы ИК-портов лежит в диапазоне от 850 до 900 нм. Чаще всего это значение равно 880 нм. Так что организовать сильные помехи дело достаточно простое.

    Начну с примеров:

    1. Окна моей квартиры, находящийся на пятом этаже, выходят на западную сторону. Ближе к вечеру ИК-приемник/передатчик перестал видеть сотовый телефон, оборудованный подобной системой. Эта связка находилась на столе и не была ничем прикрыта. Причина помех была найдена без особых проблем. Яркое весеннее солнышко стало виной всему. При работе с ИК-устройств остерегайтесь прямых солнечных лучей.

    2. Вечером я включил лампу дневного света и ситуация повторилась. Однако, стоит заметить, что связь все же была, но очень часто обрывалась. Лампа дневного света должна быть прикрыта или выключена во время работы ИК-устройств.

    3. Телевизор, который находится в непосредственной близости от моего рабочего стола, где я проводил все свои эксперименты, оборудован пультом дистанционного управления. При переключении каналов или любых других манипуляциях с “ленивчиком” рабочая программа исправно выдавала сообщение о том, что в прямой близости работает постороннее ИК-устройство и требовало выключить его. Мешало это передачи данных или нет, я не знаю, но пока я не убрал пульт дистанционного управления (можно читать “выключил”), мне не удалось ничего сделать с программой. При работе с ИК-устройством уберите все посторонние ИК-передатчики в зоне действия ИК-порта.
    Исключите все источники ИК-волн диапазона 850 – 900 нм из зоны прямой видимости. Отраженные волны могут принести проблемы, но гораздо в меньшем виде. Одним словом, всех помех не предусмотреть, но убрать их причину всегда можно.

    Рабочее расстояние между двумя ИК-устройствами не должно превышать одного метра. В противном случае система будет работать нестабильно. Диаграмма направленности работы ИК-порта, которая указана в инструкции к нему, мягко говоря, не выдерживает никакой критики. Старайтесь разместить устройства прямо напротив друга. Посторонние предметы, помещенные между ИК-портом и рабочим устройством, не будут способствовать лучшей работе.

    Несколько раз сталкивался с проблемой, когда сотовый телефон в чехле пытались подключить через инфраред к компьютеру. У ребят ничего не получалось, пока не снимали полупрозрачный чехол. Многие из них удивлялись почему? Ведь телефон работает.. 🙂

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

    При подключении ИК-порта к COM порту просто возьмите и воткните стандартный разъем в коннектор. Будьте внимательны: запомните номер COM порта – это пригодиться вам в дальнейшем.

    При подключении ИК-порта к IRDA разъему материнской платы раскрутите корпус Вашего системного блока и, ознакомившись с описанием вашей материнской платы, вставьте в нужное гнездо коннектор (четырех пинная линейка). Первый провод помечен на плате цифрой “1” или указан в описании материнской платы. Первый провод коннектора ИК-порта имеет цветовую метку. Выведите заднюю заглушку на свободное место и можете собирать корпус. Подсоедините коннектор гибкого провода с ИК-приемником/передатчиком к новой скобке. Гнездо и коннектор очень похожи на PS/2 разъем.

    Я опишу программное подключение для операционной системы Windows98. Для остальных операционных систем от Microsoft оно аналогичное. Подключать ИК-порт к компьютерам с другими операционными системами, судя по всему, возможно (по крайней мере, я не вижу ограничений к этому), но в описании ИК-порта сказано: “Предназначен для работы с операционными системами Windows95 и выше”. Поэкспериментируйте, может быть у вас все получиться.

    При установке ИК-порта на COM вас ждет счастливое плавание. В поставке к устройству идет CD диск, установить драйвера с которого не составляет никаких проблем. Отмечу одно: правильно установите номер порта, к которому подключен ИК-порт. Посмотрите, не занят ли COM порт другим устройством, например, внутренним модемом.

    При установке внутреннего ИК-порта стоит сделать несколько больше манипуляций руками. Прежде всего, войдите в BIOS и включите второй COM порт. Как правило, ниже находится опция по включению IRDA. Активизируйте ее. Далее установите полудуплексную связь. Если ваш BIOS содержит другие настройки, то поставьте их в режим “по умолчанию”. Будут проблемы – читайте инструкцию и экспериментируйте с настройками. Вреда или физической порчи вашему компьютеру вы не сможете принести.

    Загрузите операционную систему. Если вы сделали все правильно, то новое устройство само будет обнаружено системой. Далее Вам предложат выбрать тип устройства. Для надежности сделайте это вручную. Выберите “ИК УСТРОЙСТВА”, а затем стандартный тип устройства. Установите виртуальный порт и запомните его номер. Он будет нужен вам для конфигурирования большинства программ. Меню “Свойства: Система” обретет еще один пункт – “Устройства ИК-связи”.

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

    Среди всех настроек я бы выделил только “Режимы”. Здесь вы сможете включить ИК-связь и установить время, через которое ИК-порт будет искать своих друзей в прямой зоне видимости. Параметр “Ограничение скорости обмена до:” можно отключить. Вот при каких настройках мой ИК-порт прекрасно работает:

    Теперь, если поместите в зону видимости вашего ИК-порта другое активизированное ИК-устройство, то услышите звук и увидите на экране такую табличку:

    Все, ваш ИК-порт полностью настроен, теперь вы можете пользоваться им. Предлагаю Вам посмотреть на самое модное и популярное применение устройства ИК-порт в связке с мобильным телефоном – Мобильный интернет.

    Большинство операторов сотовой сети, работающих в стандарте GSM 900/1800, предлагают такую услугу как “Мобильный интернет”. Что это такое? При помощи сотового телефона, оборудованного ИК-приемником/передатчиком и модемом (таких телефонов достаточно много, например, SIEMENS 25/35, Nokia 6250 и другие), вы можете входить во всемирную паутину и пользоваться ей как при обыкновенном dial-up. Плюсы подобного входа в сеть очевидны. Прежде всего, вы отвязываете себя от надоевших телефонных проводов и становитесь мобильным (если вы используете ноутбук). Но сеть через мобильник имеет свои минусы. Рекомендую заранее узнать, во сколько, в денежном эквиваленте, выльется вам такое развлечение. Например, в Санкт-Петербурге абоненты NWGSM платят 6 центов за минуту или около 100 рублей в час. Дорого. Но если вы нуждаетесь в этом, то что делать? Второй минус заключается в скорости мобильного интернета. Она составляет 9600 и не битом больше. Правда, эти 9600 стабильные.

    Настройка мобильного интернета не занимает много времени. Опишу порядок ваших действий. Убедитесь, что ваш сотовый телефон оборудован ИК-портом и модемом. Включите на мобильнике ИК-порт. После этого поместите его в зону действия подключенного к компьютеру ИК-порта (около 1 м).

    Теперь надо настроить работу встроенного в телефон модема. Для это необходимо войти в меню “Настройка”, далее “Модем” и вручную установить “стандартный модем 19200” (если у вас есть специальный драйвер, для вашего сотового модема, то поставьте его). При инсталляции не забудьте указать правильный виртуальный порт, который был создан при подключении ИК-порта к вашему компьютеру. Все, настройка модема закончена. Перегрузите систему.

    Для установки соединения нужно создать обыкновенное “Новое соединение” (параметры для него вы можете узнать у вашего сотового оператора). Интернет через сотовый телефон в вашем распоряжении.

    Мобильный интернет – это достаточно важное и интересное дополнение к вашему компьютеру. Но это еще не все. С помощью ИК-связи вы можете заливать в телефон новые логотипы и мелодии вызова. Благо и тех и других сейчас очень много на специализированных сайтах. Очень интересная возможность – мониторинг сети. Некоторые телефоны с помощью специального программного обеспечения могут вести детальный мониторинг сети. Для вас откроются очень интересные возможности. Но об этом я расскажу в следующей статье.

    ИК-связь компьютера с другими устройствами действует на сравнительно небольшом расстоянии. Однако ее возможности широко используются среди мобильной техники. Скорее всего, в ближайшем будущем она уступит свое место более совершенным видам связи (Bluetooth – несколько десятков метров). Но пока никто из производителей материнских плат не отказывался от IRDA. Вы можете со спокойной душой покупать ИК-порт. Хотя, прежде чем сделать покупку, убедитесь, что ваш телефон и компьютер могут передавать данные в инфракрасном диапазоне.

    Надеемся, что вы, ознакомившись с этой статьей, без особых проблем сможете выбрать и включить ИК-порт. Успехов!

    Также на сайте имеется огромное количесво схем инфракрасных портов для самостоятельного изготовления.
    Имеется схема переходника, позволяющая подключить ИК-порт к COM порту.

    AVRLIRC: ИК приёмник для компьютера

    Как всё начиналось

    Когда-то давно, когда пульт управления, подключаемый к компьютеру считался не более чем чудачеством, я решил, что мне такая штука не помешает. Я перепробовал кучу самодельных ИК-приёмников из тех, которые предлагал мне SlyControl и в итоге просто добавил соответствующие возможности к уже завершённому на тот момент проекту Serial LCD Graph, заодно немного его переработав. Так получилась вторая версия индикатора, которая и стояла у меня в системнике не один год.

    Но время шло, и однажды я понял, что хочу поставить Linux в качестве своей основной ОС. Пришлось задуматься и о поддержке своих устройств в Linux. Проблему я решил отложить — индикатор мне срочно не был нужен, а вот к дистанционному управлению я настолько привык, что рука то и дело тянулась к временно попавшему в немилость пульту. Я уже слышал о LIRC, но при более близком знакомстве был поражен огромным количеством поддерживаемых ИК-приёмников. Их было ещё больше, чем поддерживал в своё время SlyControl.

    Пришлось немного подумать. Во-первых, я сразу отбросил все приёмники, которые подключались на дополнительные линии COM-порта (DCD, например). У меня COM-порта просто не было, а преобразователи USB-COM были не в состоянии обеспечить необходимые тайминги, да и компьютер грузить этим не хотелось. Использовать вход звуковой карты тоже казалось не очень красивым решением (а вдруг буду подключать микрофон и петь караоке?). Единственным вариантом стали устройства на базе микроконтроллеров, подключаемые к USB, как к самой распространённой шине.

    Из них я решил выбрать только те, которые были собраны на базе микроконтроллеров AVR фирмы Atmel (ну просто они мне нравятся), отбросив IgorPlug и все, которые были сделаны с использованием программного USB (они у меня даже в идеальных условиях почему-то периодически подвисали). В итоге остался только один вариант. Имя ему — AVRLIRC. Оригинальный проект находится здесь, автор — Paul Fox. Я просто добавил USB-COM преобразователь, сделал под него более-менее культурную печатную плату и убрал из исходников отладочные фрагменты кода. Впрочем, вы можете использовать и оригинальный проект, просто плату сделаете самостоятельно.

    Схема и плата

    Рисунок 1 — Схема AVRLIRC с подключением по USB.

    Поз. Обозн.НаименованиеКол-воПримечание
    C1..C30.13SMD 0805
    C4,C512p2SMD 0805
    C6,C710.0×6.3V2SMD тантал
    R1,R22SMD 0805, в качестве предохранителя
    R35101SMD 0805
    R410k1SMD 0805
    R5681SMD 0805
    DD1FT232RL1
    DD2ATtiny2313A-20SU1SMD
    X1PLS4-R1Каждый второй вывод развёрнут на 180º
    HL1RED1SMD 0805
    ZQ114.74561HC49-S

    Схема очень простая и практически не нуждается в комментариях. Схема включения FT232RL стандартная, схема включения ATtiny2313 тоже ничем необычным не выделяется, справа внизу на схеме точки подключения ИК-приёмника (например, TSOP4838). Контроллер программируется прямо в схеме, для этого предусмотрены точки подключения программатора. Светодиод индицирует приём ИК-сигнала. Плата сделана односторонней, с другой стороны только 3 небольшие перемычки.

    Рисунок 2 — Печатная плата AVRLIRC.

    Печатная плата в формате Gerber лежит здесь, исходники, бинарники и прошивка тут. При прошивке надо указать, что контроллер тактируется от внешнего кварца. Если вы всё собрали и прошили правильно, светодиодик при включении должен три раза мигнуть и погаснуть. Приёмник готов принимать 🙂 команды с вашего пульта. Пора переходить к программной части.

    Запускаем железо

    Для начала проверим, определяется ли в принципе наша железка в системе. Для этого достаточно выполнить команду

    Мы увидим все устройства вендора FTDI, среди которых должно быть и наше. Если всё нормально, наш пульт в итоге должен подключиться в , вместо звёздочки — порядковый номер последовательного порта USB. У меня это . Вы можете совсем обнаглеть, попробовать ввести и понажимать кнопки на пульте. В консоль при этом синхронно с нажатиями должен идти какой-то мусор. Значит, всё в порядке, можно двигаться дальше. В LIRC нет стандартного драйвера для нашей железки, поэтому Paul Fox написал небольшую программку, которая называется avrlirc2udp и которая скомпилировалась вместе с прошивкой. Вы не компилировали прошивку, а взяли готовую из архива? Ну и ладно, программку можете взять там же. Положите её куда-нибудь, она нам сейчас понадобится. Вообще я у себя завёл в домашней папке папку “scripts” и всякие небольшие скрипты и такие программки держу там, поэтому в дальнейшем буду указывать пути на своей машине.

    Запустите avrlirc2udp командой

    Приведённая строка означает, что мы запускаем нашу программу для устройства на скорости 115200 (флаг -H), LIRC будет работать на нашем (localhost) компьютере на порту под номером 5000. Вы можете выбрать любой другой порт, либо даже управлять удалённым компьютером.

    Запускаем LIRC

    Предполагается, что LIRC и irexec у вас уже установлены. Если нет — сделайте это немедленно, мы переходим к настройке LIRC! Для правильной работы LIRC надо указать только две вещи: драйвер (udp) и порт, который он будет слушать (5000). Это нужно прописать в конфиге LIRC, находящегося в , параметры REMOTE_DRIVER и REMOTE_DEVICE соответственно. Там же можно и задать название своего пульта (у меня по умолчанию — ). Сохраняем конфиг и переходим к прописыванию кнопок. Для этого существует программка irrecord. Более подробную информацию о ней вы всегда сможете прочитать, введя . Для начала записи кнопок запустите avrlirc2udp (если она у вас не запущена), как вы делали это ранее, и введите

    Внимательно читайте всё, что вам говорит программа. Обычно всё, что требуется — это пару раз нажать на Enter, затем понажимать разные кнопки на пульте, пока две линии на экране не заполнятся точками (таким образом программа определяет временные интервалы вашего пульта), затем вводите имя для новой кнопки, нажимаете её на пульте, переходите к следующей, и так до тех пор, пока у вас кнопки не закончатся :). Перед самым выходом программа попросит вас понажимать много раз подряд одну и ту же кнопку. Не подумайте, это не с целью заставить вас позаниматься физическими упражнениями. Таким образом определяется, есть ли в вашем пульте так называемый “toggle bit”, бит, который переключается после каждой переданной посылки. Закончив записывать кнопки, ложим полученный файл (lircd.conf) в . Вы ещё не устали? Уже практически всё. На этом этапе вы уже можете запустить LIRC командой , затем запустить irw и, нажимая на кнопочки, смотреть, как их названия весело мелькают в консоли.

    Насмотрелись? Сделаем ещё одно чёрное дело и потом перейдём к настройке программ. Напишем небольшой скрипт, который будет мониторить, запущены ли программы и при необходимости из запускать. Назовём его avrlirc_check.sh

    Добавьте этот скрипт в список заданий cron c запуском с интервалом в одну минуту. Вот теперь если вы вдруг переподключили приёмник или USB по какой-то причине переинициализировался, пульт максимум через минуту будет работать.

    Настраиваем программы

    Все действия при нажатии на кнопки пульта прописаны в файле .lircrc, который по умолчанию ищется в домашней папке текущего пользователя. Это обычный текстовый файл с простым синтаксисом следующего вида:

    Как мне кажется, эта куча строк всё-таки нуждается в некоторых комментариях. Во-первых, пару слов о xdotool. Это небольшая консольная программка, которая позволяет эмулировать ввод с клавиатуры или мышки и даже управлять окнами в системе. Второй пример – запуск clementine. Но почему в секции PROG опять написано irexec? Дело в том, что ни clementine, ни xdotool, ни многие другие программы, с которыми вам придётся столкнуться, не поддерживают LIRC сами по себе. Чтобы передавать им команды и нужен irexec. И даже для того, чтобы запустить vlc, у которого есть встроенная поддержка LIRC, всё равно нужен irexec. Именно поэтому он всегда должен быть запущен, как настоящий демон. Помните, раньше мы написали скрипт, который мониторит наличие irexec среди запущенных процессов? Так вот, это ещё одна причина, по которой мы его и писали.

    Это описание синтаксиса файла .lircrc не претендует на полноту, однако его достаточно для того, чтобы вы могли понять простейшие вещи. В LIRC можно описывать группы действий, которые будут выполняться только после нажатия какой-либо кнопки и делать некоторые другие вещи, но для этого вам нужно будет уже подробнее изучать формат файла, который достаточно подробно описан здесь. Мне, например, хватило и минимального функционала, хотя я и поигрался с различными конфигурациями.

    Заключение

    В заключение не могу не сказать ещё раз: этой статьи не было бы, если бы не автор проекта AVRLIRC – Paul Fox. Спасибо ему за его разработку! На момент написания этой статьи приёмник уже полгода жил и работал у меня в системнике и, честно говоря, мне пришлось проделать весь путь, всё, о чём я написал, с нуля — настолько я уже всё успел позабыть. Это как нельзя лучше свидетельствует или о моей плохой памяти, или о надёжности устройства. Хочется верить, что с памятью у меня всё в порядке :).

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

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

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

    Читайте также:  Как просто оцифровать фотоплёнку в домашних условиях
    Ссылка на основную публикацию