HRP-N3 - серия источников питания с максимальной пиковой мощностью в 350% от MEAN WELL

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

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

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Описание проекта

Пульты дистанционного управления передают данные модулированным инфракрасным пучком. Интегральная микросхема инфракрасного приемника выделяет из модулированного пучка незашумленный поток 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).

Элемент/ Описание

IC1

PIC 18F2455

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

C1,2,3

конденсатор 0.1uF

C4

конденсатор 4.7uF

C5,6

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

D1

диод 1N4181

Q1

пьезоизлучатель 20MHz

R1,3

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

R2

резистор 330 Ом

TSOP

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

USB

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

SER

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

ICSP

.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, по заказу РадиоЛоцман

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Устройство действительно полезно, не только со стороны применения, но и со стороны изучения принципов построения аналогичных устройств (устройств сопряжения с компьютером), статья богата такой информацией. Единственное что для меня не очень - так это применяемый микроконтроллер. По мне так AVR.
  • Гораздо проще сделать самому для com порта, стоить однозначно будет меньше ([url]http://hamlab.net/?section=comp&page=com_ird[/url]).
  • Для СОМ-порта будет однозначно проще, но не во всех компьютерах сейчас есть СОМ-порты, и, поэтому, приоритетный порт для подобного класса устройств - USB
  • Статья полезна, скорее, как образовательная. А для практиков - при отсутствии в компьютере COM-порта можно воспользоваться промышленно выпускаемыми преобразователями RS-232/422/485 в USB.
  • Не соглашусь. Не все программы могут работать через драйвер виртуального COM-порта. К примеру у меня есть довольно "пожилой" программатор - ChipTurbo - так вот его программа хоть убейся не хочет работать через виртуальный порт.
  • Господа, я считаю, что если сделано и работает, то значит время потрачено не зря. По поводу СОМ порта, ну согласитесь, что на некоторых моделях, а особенно на ноутбуках их просто не ставят. Я по поводу Girder. Я в свое время делал для СОМ порта и применял slycontrol [url]http://slydiman.narod.ru/scr/slycontrol2.htm[/url]. Все прекрасно работало.
  • Это устройство (Дистанционное управление компьютером через USB порт) может работать с программой SLYControl?
  • Думаю, что работать будет, т.к. в SlyControl, если я не ошибаюсь и ничего не перепутал, есть поддержка плагинов. В статье как раз и говориться, что устанавливается плагин UIR/IRMAN/IRA/CTInfra/Hollywood+.
  • Меня вот заинтересовал такой момент, а возможно ли использовать как приемник встроенный в ноутбук IrDa порт. Например с тем же Girder.
  • Порт IrDA основан на архитектуре коммуникационного СОМ-порта, который использует универсальный асинхронный приемо-передатчик UART (Universal Asynchronous Receiver Transmitter) и работает со скоростью передачи данных 2400-115200 bps, обеспечивая устойчивую полудуплексную связь.
  • С этим понятно. А вот конкретно, проги эти (Girder, SlyControl и подобные), смогут с ним работать. Реально у кого-нибудь получалось ли...
  • ИК приемник для дистанционного управления компьютером.
  • SlyControl с чем угодно может работать, даже с фотодиодом подключенным к входу звуковой карты :eek: С COM портом обязательно сработается :)
  • Ладно, уговорили, появится свободное время - буду пробовать.
  • Больше всего мне понравилось работать с Girder- программа универсальная, а универсальная она засчёт плагинов. Хорошо рулит с Winampom - с пульта лежа на деване.
  • Вопрос после изучения [url=http://www.asrock.com/mb/Intel/B85M%20Pro4/index.ru.asp]материнки ASRock B85M Pro4[/url] - на плате присутствует колодка инфракрасного модуля (5-контактная, IR1). Эта колодка поддерживает дополнительную беспроводную передачу и прием сигналов инфракрасного модуля. Установил драйвер Nuvoton SIO CIR Device Driver, подключил датчик TSOP31236. Сам вопрос - как подключить к этому пульт (хочу от ресивера Yamaha RX-V657), какой софт нужен для настройки Win7x64? Это вообще возможно? И как? [IMG]http://img-fotki.yandex.ru/get/9807/52096682.0/0_10e9ea_742bd07c_L.jpg[/IMG] [IMG]http://pccar.ru/attachment.php?attachmentid=17&stc=1&d=1123057913[/IMG]
Полный вариант обсуждения »