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

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

Как самому слепить ИК порт для компа.

Автор: Дмитрий Оленников
Опубликовано 11.07.2007

Это вторая версия статьи. На первую можно взглянуть вот тут.

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

1.ИК порт из шариковой СОМ мышки.

Ошеломленный идеей, я пошел в чулан и накопал несколько шариковых мышей, одна другой старее. У более старой от компа шло 6 проводов, у более новой — четыре. Ее и взял. По четырем проводам проходили линии: RTS (Request To Send, запрос на отправку. Использовалась для питания схемы мыши.), Rx (по ней комп принимает данные), Tx (по ней комп передает данные), и конечно GND, земля.

На фотке штекер провода мышки. В ходе прозвонки я установил, что оранжевый проводок — RX, зеленый проводок — TX, белый проводок — RTS и синий проводок — земля.
Далее, для простоты отрезал кусок пластика и приклеил на нее штыревой разъем мыши (тот, что впаян в плату):

Потом выпаял из той же мыши фотодиодный мост и инфракрасный светодиод. Взял резистор 4.7 кОм из своих запасов. Девайс к резистору не критичен — можете поставить от 2 до 7 кОм, но при меньшем сопротивлении уменьшается радиус работы приемника. Вот как выглядят деталюхи (слева направо: фотодиодный мост, ИК светодиод, резистор):

Вот и схема девайса:

После получаса паялинга и приклеинга получилось вот что:

Девайс вышел рабочий — уверенный радиус приема — 5 см, передачи — 20 см. Для проверки пульта ДУ этого оказалось достаточно: не работает.

2. Продвинутый ИК приемопередающий девайс.

Раз уж разбежались, надо рассказать и о более продвинутом девайсе.

Порт состоит из приемника (микросхема TSOP и обвеска) и передатчика (светодиод HL1 и токоограничивающий резистор R2).
В приемнике применена специализированная микросхема TSOPXXXX. Она принимает сигнал с определенной частотой. Этим достигается высокая помехозащищенность. Так как они выпускаются в нескольких вариантах — на разную частоту фильтрации сигнала, необходимо выбрать нужный под конкретный пульт. Обратимся к даташиту:

Как видим — есть выбор: от 30 до 56 килогерц. В даташите написано, что максимальная скорость принимаемого сигнала — 2400 бод/сек, поэтому трудно судить, будет ли работать микра например с мобильником. Так выглядит TSOP1736:

Резистор R1 подтягивает линию RX к питанию (ведь все сигналы СОМ порта инвертированы), диод VD1 защищает схему от переполюсовки во время инициализации портов, кондер C1 защищает приемник от помех. Ну а стабилизатор 7805 конечно подгоняет напругу ИК приемнику. Советую ставить в корпусе TO-92 — по размерам меньше.
Передатчик особо не продвинут, отличается лишь более мощным ИК диодом. Можно поставить, например, L-34F3C, L-54F3C. Резистор R2 ограничивает ток через диод. ИК диод выглядит так:

Данный девайс хорошо принимает и передает на расстоянии до 5 м.
Если хотите поэкспериментировать, то вот распиновка СОМ порта, распространенная в интернете:

3. Программы для работы с ИК портами.

Теперь поговорим о программах. Я для проверки использовал прогу WinLirc. Прибор показал довольно неплохие результаты: радиус приема 5 см, радиус передачи — 20 см максимум. Все зависит от типа фотоэлементов. Для примера я приведу работу пример работы с пультом управления от музыкального центра.
Поговорим о настройке.
Запускаем ВинЛИРК. Она пишет: конфигурация неудачна, переконфигурируйте. Напечатайте в поле Path путь и имя конфигурационного файла и потом выполните действия: (замечу: такие настройки только для данного девайса):
1. В поле Port ставим номер порта, куда подключен девайс
2. Поле Speed оставляем нетронутым, хотя можете поэкспериментировать — старинные компы не хотят думать быстрее, чем 115200 бит/с.
3. Во фрейме Receiver type ставим RX device, т.к. ИК-светодиод (TSOP) подключен к RX ножке порта COM. Вы, конечно, можете подключить к DTR, но это будет самодельный шнур, а не от стандартной мыши, как здесь.
4. В Transmitter settings ставим TX. Можете подключить к DCD — ваше право.

Дальше нажимаем Raw Codes. Подносим пульт к приемнику и жмем кнопки. Если там начиняет рябить, типа: pulse 200, pulse 400, то все хокей. Если нет, смотрим девайс на наличие ошибок.

Теперь надо обучить глупую прогу науке, — распознавать команды вашего пульта. Закрываем окно просмотра, и жмем Learn. А там дальше руководствуемся английским языком, ибо прога буржуйская.
PS: Там, где прога скажет «нажми кнопку на пульте, и держи, пока не скажу», нужно не держать кнопку, а тыкать ее как можно быстрее — из личного опыта.
После учебы, жмем Analyze. Прога проверит конфиг, и скажет ОК. Закрываем окно.
Вроде всё. Нажимаем ОК в главном окне настройки. Прога свернется в трей. Жмем кнопки на пульте — если прога понимает команды, то она отзывается — цвет индикатора меняется с серого на зеленый. Для этой программы можно найти плагины для управления WinAMP»ом, для работы с TCP/IP.
Для продвинутого управления компьютером рекомендую прогу uICE.
Да и вообще, сейчас появилось много программ для этого дела. Рекомендую поискать в интернете.
Эта программа уже для управления компом с дивана — к ней вы тоже можете найти плагины для WinAmp.

Источник

Дистанционное управление компьютером через 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, по заказу РадиоЛоцман

Источник

Читайте также:  Как расписать деревянную шкатулку своими руками
Оцените статью