Управление компьютером по usb
За основу схемы взяты сдвиговые регистры 74hc595 которые управляются микроконтроллером PIC18F252. Выхода схемы логические, т.е. лог "1" или лог. "0". Они маломощ ные, по этому для управления какими нибудь устройствами нужны усилители (ключи). Не забывайте про гальваническую развязку управляемых устройств со схемой ! Контроллер управляется по протоколу USART непосредственно с компьютера. Способы реализации протокола рассмотрены ниже.
Рассмотрим два способа получения USART.
1-ый, самый простой способ:
Это преобразователь уровня RS232 в USART. Схема которого приведена ниже.
Думаю здесь рассказывать нечего. 7,8 выводы подключаются к СОМ порту компьютера, а 9,10 к основной схеме устройства.
2-ой способ: Преобразователь USB - COM
Практически на всех новых компьютерах нет последовательного COM порта, а большая часть старой техники, работает именно через этот интерфейс, так называемый RS232. На новых компьютерах появилась последовательная шина USB, но протокол обмена данными через USB сложнее, чем по RS232.
Благодаря разработкам английской компании FTDI (Future Technology Devices International) появилась возможность преобразовать USB в "виртуальный" последовательный порт, обмен данными с которым ведут привычными хорошо известными методами.
Это преобразователь интерфейсов USB to COM предназначен для подключения к USB шине модема, сканера, различную измерительную аппаратуру, т.е. фактически любое устройство, ранее использовавшее интерфейс RS-232. Причем пользователю не требуется никаких знаний об устройстве и работе USB. Поставляемые компанией FTDI программные драйверы создают впечатление, что обмен идет через обычный COM порт. Разумеется, это справедливо только в том случае, если программное обеспечение использует COM порт в стандартном режиме.
Принципиальная схема преобразователя интерфейса показана на рисунке. Его основа - микросхема DD1 FT232BM включена по стандартной схеме, рекомендованной изготовителем.
Микросхему ЭСППЗУ DD2 AT93C46 можно не устанавливать. В ней хранятся идентификаторы изготовителя (VID) и персональный (PID), заводской номер изделия и другие данные. Это необходимо, если по USB с компьютером одновременно связаны несколько устройств на микросхемах FT232BM. Особенно важен серийный номер, так как программный драйвер полагается на его уникальность, ассоциируя тот или иной виртуальный COM-порт с конкретным устройством. Если ПЗУ отсутствует, к компьютеру можно подключить только одно образующее виртуальный COM порт устройство. Вместо AT93С46 можно использовать AT93C56 или AT93C66. Программируется ПЗУ непосредственно в устройстве с помощью специальной утилиты, поставляемой FTDI.
Я немножко подукоротил схемку и сделал вот так. Питание сделал от общей схемы устройства.
Выводы RX и TX к основной схеме устройства. Драйвер к этой МС можно скачать на оф. сайте под конкретную ОС.
Работа устройства представляет из себя двухстороннюю связь с ПК на скорости 115200 Кбит/сек. с проверкой контрольной суммы команды. Т.е. исключены ошибочная передача данных. При запуске программы происходит опрос наличия подключенного устройства и если оно обнаружено или утеряно в процессе, программа даст знать.
Управляется это устройство, специально мною написаной, программой и лежит в архиве. В принципе программа как бы демонстрационная, может только управлять выводами. Так что за индивидуальной программой, для конкретного случая, обращайтесь.
В архиве лежит программа для ПК и демо прошивка для МК устройства. Прошивка на PIC18F252 для конкретного ПК оригинальна, для её получения , пишите мне. Демо прошивка работает 10 минут, затем МК надо заново перепрошивать.
Клюшников А. Опубликована: 2008 г. 0 0
Вознаградить Я собрал 0 0
Мы слушаем 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 приемник будет притворяться виртуальным последовательным портом и программа не заметит разницы.
Аппаратное обеспечение
Периферийные устройства для 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).
Привет, друзья. В этой публикации будем предметно разбираться в тонкостях дистанционного управления компьютером. Какие существуют способы дистанционного управления компьютером на базе Windows? С помощью каких устройств можно оперировать функциями операционной системы и её отдельных приложений на расстоянии от экрана, если компьютер подключён к телевизору, большому монитору или проектору? Нет чётких стандартов, какое устройство лучше подойдёт с учётом специфики конкретной ситуации - используем ли мы компьютер дома как Smart TV или игровую платформу, либо же мы задействуем его в обществе в качестве техустройства для вывода презентаций, аудио, видео, фото и прочего типа конференц-контента. Всё, ребята, решают наши личные предпочтения. Рассмотрим ниже различные устройства, которыми можно управлять компьютером на базе Windows дистанционно.
Дистанционное управление компьютером на базе Windows
2. Аэромышь для ПК
Аэромышь - более предпочтительный вариант для дистанционного управления компьютером. Т.е. это тот же пульт ДУ, только с гироскопом. Стоимость таких устройств с гироскопом начинается примерно с $6. С помощью аэромыши можно управлять компьютером на расстоянии движением руки по типу лазерной указки. Базовый функционал аэромышей: управление курсором, навигацией, громкостью, выключение компьютера. Более функциональные модели предлагают, соответственно, большие возможности, есть модели раздвижного типа с клавиатурой.
Аэромыши обычно являют собой тип универсальных устройств, с помощью которых можно управлять компьютером, Smart TV, Android TV, прочими медиаприставками, даже игровыми приставками. Управление курсором Windows в пространстве отличается от привычного нам управления курсором обычной мышью на поверхности. Потребуется какое-то время на привыкание к специфике такого управления.
Примечание: при покупке пульта ДУ или аэромыши для ПК, друзья, необходимо внимательно читать характеристики и отзывы. Это должно быть устройство, предусматривающее управление компьютером (отдельно или в числе прочей поддерживаемой медиатехники). И должна быть завялена поддержка конкретно вашей версии Windows. При выборе аэромыши обязательно нужно смотреть в характеристиках, чтобы она была с гироскопом. Недостаток дешёвых пультов и аэромышей с ИК-подключением – проблематичность этого типа беспроводного подключения. Оно может тормозить и не работать при наличии помех между пультом и воткнутым в компьютер донглом. Пульт ДУ или аэромышь лучше брать с радиоподключением.
3. Беспроводная мышь
По удобству дистанционного управления курсором Windows с обычной беспроводной мышкой не сравнятся ни пульты для ПК, ни аэромыши, ни виртуальные тачпады на смартфонах. Большинство современных мышек могут работать практически на любой поверхности, даже если это постель, диван, наше колено или живот. Более того, сейчас на рынке есть эргономичные беспроводные мышки вертикального типа, возможно, с их использованием дистанционное управление компьютером в определённых условиях типа при лежании на диване или в постели будет более удобным, чем при использовании мышек с обычной формой. Но здесь всё сугубо индивидуально. Стоят вертикальные мышки точно так же, как и обычные. Их стоимость определяет качество продукта и функциональность.
Увеличить функциональность беспроводной мыши можно, если взять геймерскую модель с дополнительными боковыми кнопками – с двумя слева или с четырьмя по обоим бокам. Эти кнопки настраиваются в среде Windows с помощью специальных программ. Например, одна из таких программ – бесплатная X-Mouse Button Control. Она позволяет изменить стандартные действия в среде Windows и в отдельных приложениях для правой, левой кнопки, колеса мыши, а также настроить действия для дополнительных боковых клавиш. Это могут быть такие действия как: увеличение/уменьшение громкости, настройка яркости экрана, увеличение/уменьшение лупы, системный поиск и поиск в Интернете, операции навигации вперёд/назад, медиафункции, запуск представления задач Windows 10, активация переключения окон и пр.
X-Mouse Button Control позволяет создавать несколько слоёв и профилей настроек, благодаря чему можем гибко настроить действия мыши, соответственно, под каждую нужную нам ситуацию и для каждого отдельного приложения Windows.
1. Пульт для ПК
Управлять компьютером на расстоянии можно с помощью пульта ДУ. Есть специальные пульты, заточенные только под управление системой Windows. А есть пульты универсальные, предусматривающие управление несколькими типами устройств – компьютерами на базе Windows, приставками Android TV, умными телевизорами. Такие пульты, например, на AliExpress стоят дёшево, стоимость моделей с базовыми возможностями обычно не превышает $5. Из базовых возможностей пультов ДУ для ПК: управление навигацией, громкостью, курсором мыши, выключение компьютера. Есть модели с большей функциональностью, в частности, с голосовым вводом, мультимедийными кнопками, клавиатурой.
Но такие недорогие пульты идут без гироскопа, их не нужно путать с аэромышью. Кстати, продавцы на том же AliExpress любят этим устройствам приписывать тип аэромыши. Если в составе устройства нет гироскопа, это не тип устройства аэромышь, этой обычный пульт ДУ. Обычные пульты с медиакнопками хороши при дистанционном управлении медиаконтентом на компьютере. Но управлять курсором Windows с помощью таких устройств крайне неудобно – это будет долгое топорное перемещение по экрану в направлениях вверх-вниз и из стороны в сторону путём многократного нажатия навигационных кнопок.
4. Смартфон или планшет как пульт ДУ для управления компьютером
iOS- или Android-гаджет как устройство дистанционного управления компьютером, друзья, чрезвычайно удобен возможностью использования различных конфигураций виртуальных пультов, предлагаемых специальными приложениями. Любое такое приложение управление курсором мыши реализует по принципу виртуального тачпада на сенсорном экране. Обычно ещё и с возможностью скролить пальцами, а также масштабировать щипками. Но это способ управления строго на любителя, не каждый может приспособиться работать даже с физическим тачпадом ноутбука. Тем не менее если в наличии есть смартфон или планшет, мы ничего не потеряем, если попробуем такой способ дистанционного управления компьютером. Большинство мобильных приложений, реализующих пульт ДУ для компьютера, не бесплатные в части использования всех возможностей, но условно-бесплатные в плане доступности базового функционала. Что, соответственно, позволит нам, друзья, понять, насколько такой способ дистанционного управления нам подходит.
Для использования этого способа необходимо, чтобы были соблюдены условия подключения приложения-пульта: связь должна установиться либо посредством Bluetooth, если таковым оборудован компьютер, либо посредством локальной сети. Реализующие пульт ДУ приложения работают по принципу установки в среду Windows серверной части ПО - специальной программы, которая сообщается по Bluetooth или по сети с управляющим мобильным приложением. Найти такие приложения можно по запросу «remote pc» в магазине соответствующей мобильной платформы – App Store или Google Play. Вот, например, некоторые из таких приложений.
Remote Mouse – это условно-бесплатное приложение-пульт для iOS и Android. Из бесплатных возможностей здесь: настройка и использование виртуального тачпада, запуск окон активных программ, ввод с клавиатуры мобильного устройства, функции электропитания. Фишка Remote Mouse – гироскопическая кнопка. Удерживая её зажатой, можем водить гаджетом в пространстве и управлять курсором как аэромышью. Из функций платной версии приложения: медиапульт, управление браузером, специальные пульты для YouTube и Netflix, компьютерный блок клавиатуры (кнопки Win, Alt, Ctrl, NumPad) и пр.
Unified Remote – ещё одно условно-бесплатное приложение для iOS и Android, реализующее дистанционное управление Windows-компьютером. Из бесплатных его возможностей: виртуальный тачпад, ввод текста с клавиатуры мобильного устройства, запуск Windows-программ, пульт управления питанием компьютера, универсальный пульт для презентаций. Также бесплатно нам будут доступны стандартный медиапульт и медиапульты, заточенные под программы Windows Media Center, Windows Media Player, VLC Media Player. Фишка Unified Remote – доступный в бесплатной версии приложения файловый менеджер, позволяющий запускать отдельные операции для данных на дисках компьютера, в частности, открывать файлы.
В платной версии приложения нам откроются возможности как то: голосовой ввод, пульты управления браузерами, заточенные под конкретные программы пульты управления презентациями и фотопросмотрщиками и т.п. Также нам будет предложен огромный перечень медиапультов, заточенных под различные медиапроигрыватели и медиасервисы.
CRC Remote – это полностью бесплатное приложение, реализующее функциональный пульт ДУ для компьютера. Оно существует только для Android. Перечень возможностей CRC Remote огромен: виртуальный тачпад, ввод с клавиатуры Android-устройства, голосовой ввод, открытие отдельных программ и веб-сервисов в окне браузера, пульты для презентаций и медиаприложений универсальные и заточенные под отдельные программы, управление питанием компьютера, управление браузером, различные конфигурации виртуальных джойстиков.
Фишка CRC Remote – возможность создавать самостоятельно свои конфигурации виртуальных пультов и геймпадов.
Такие вот есть возможности по дистанционному управлению компьютером. Друзья, если вы часто используете компьютер в качестве телевизора или медиаплатформы, можете глянуть статью на нашем сайте «Превращаем старый компьютер в Smart TV на базе Windows 10». В ней есть несколько лайфхаков по использованию компьютера в качестве медиаустройства. И также детально рассматривается одна из моделей пультов ДУ для ПК.
К настоящему времени разработано достаточно много самых разных решений для ДУ персональным компьютером. Все они имеют разную сложность и функциональность. Для радиолюбительских устройств можно условно провести разделение:
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 порт, в который будут приходить распознанные посылки.
Рассмотрим настройку программы, которая, в отличие от других приложений, достаточно проста. Главное окно программы:
Для того чтобы в клиенте было удобней задавать соответствие команд управляющим воздействиям, предусматривается задание командам и имени пульта информативных имен.
Для этого устанавливаем переключатель в положение Naming (Именование) и нажимаем любую кнопку на пульте. Если для этого пульта (его адреса) нет соответствующего файла настроек, то появится запрос на введение имени пульта:
Вводим имя (например, MSI) и жмем ОК. После вторичного нажатия на кнопку, программа определит, что имя данного пульта уже ассоциировано и предложит поименовать команду:
Вводим имя команды и жмем ОК (или Enter). Таким образом, можно ассоциировать все нужные кнопки пульта. Настройки сохраняются в папку с исполняемым файлом сервера. Имя файла состоит из частей адреса устройства, расширение irs. При необходимости файл ассоциаций можно редактировать блокнотом. В итоге, получается следующее:
В данном случае видно, как отличается принятая и отправленная строки, а также реакцию управляемого клиента (Mkey), настроенного на команду right от пульта MSI (регулировка громкости).
Остальные настройки:
-Use only named: Передаваться клиентам будут только именованные команды от именованного пульта. Сделано для исключения реакции на посторонние пульты или ненастроенные/ненужные команды.
-Unnamed enable: помимо именованных команд будут переданы и неименованные (если таковые примет приемник).
-Naming disable: будут передаваться посылки напрямую, без именования.
Как правило, наиболее комфортна работа с включенной опцией Use only named после задания соответствия имен.
Кнопка ОК сворачивает приложение в трей, Cancel – закрывает приложение.
В архиве проекта присутствуют все необходимые файлы и исходные коды
Проект предоставляется "как есть". Все работы по подключению данного устройства к ПК проводятся на ваш риск. Автор ответственности не несет.
У меня нет телевизора. Совсем. На антресолях где-то лежит старый маленький пузатик, но кабель антенны давно свернут, а телевизор этот — скорее издевательство, разве что на кухне поставить и то маловат.
Поэтому в качестве музыкального центра и телевизора я использую свой ПК. И все бы хорошо, но лень — это не только двигатель прогресса, но и фактор, который портит удовольствие, заставляя встать с дивана, на котором уютно устроился с кружкой чая, чтобы запустить программу или выключить колонки после просмотра фильма перед сном.
Существует множество ИК приемников, практически все они могут управлять компьютером и даже могут его выключить, но не могут его включить. И вот в этот момент компьютер перестает быть столь же удобным сколь телевизор или музыкальный центр. Но и проект Igor HID не порадовал своим софтом. Вроде все умеет, а неудобно. И не влезешь в него, исходников нет. Вот поэтому я собрался и сделал свой проект, открытый и доступный всем.
Сделал я его с нуля до законченного комплекта. А поскольку мой опыт в разработке и программировании электронных девайсов до него можно сказать был нулевым, то я считаю, что повторить это сможет каждый, кому это интересно.
Называется он USB-IRPC (USB Infrared Remote Personal Computer Control — «Юэсби-ИРПиСи» или ИРПЦ, кому как больше нравится :). Буква R на самом девайсе — просто сокращение от моего ника.
Важным преимуществом девайса является то, что он программно совместим с Arduino и в случае отсутствия уверенности в своих силах в ЛУТ может быть сделан на основе Arduino на макетной плате. Это, конечно, не так компактно и аккуратно, не так дешево, но зато доступно практически всем, даже навыки пайки особые не потребуются.
Если стремление к комфорту вам не чуждо и идея превратить свой компьютер в медиацентр, а заодно поуправлять электророзетками с пульта вам интересна, тогда вперед.
Просьба, если соберетесь делать устройство после прочтения статьи, задавайте вопросы в комментариях. По опыту предыдущих статей: вас довольно много и вопросы вы задаете одинаковые :)
Я лучше один раз отвечу всем, добавив в статью или в комментариях. Уведомления о комментариях с вопросами я просматриваю и стараюсь отвечать.
Итак, идея устройства
- Включать и выключать компьютер с пульта от телевизора или любого другого ИК пульта.
- Включать и выключать розетки, в которые воткнуты настольная лампа и колонки (две розетки, управляются отдельно).
- Управлять розетками с ПК программно, чтобы не искать пульт, оставленный на диване, когда сидишь перед компом или включать колонки для работы ПК в качестве будильника по расписанию с утра :)
- Запускать программы на ПК по нажатию кнопки на пульте.
- Выполнять custom задачи по нажатию кнопок — какие запрограммирую.
- Устройство не требует драйверов, работает и под Win7 х86, Win7 x64, Win 8 x64.
- Не требует прав администратора при подключении и использовании.
- В системе определяется как HID устройство (USB Input Device).
- Никаких дополнительных .dll типа lubusb тоже не потребуется.
- Под Linux не проверял, но не думаю, что будут проблемы. Правда написать софт я не смогу — под Linux я этого не умею.
Недостатки
- Пока на мой взгляд распознавание нажатий кнопок пультов не идеально. Можно сделать лучше, уверен. Но это исправляется программно.
- Вшитые функции, работающие и без ПК, можно поменять только перекомпилировав прошивку, а для этого придется скачать AVR Toolchain — писать прошивку в Arduino IDE сплошное мучение для меня, поэтому я пользуюсь Code::Blocks. Но залить прошивку в Arduino не составляет никакой проблемы. Даже в консоль лезть не придется. Позже можно будет и программно назначить эти функции любым кнопкам пульта.
- Программа на английском. Я знаю, что у подавляющего большинства проблемы с английским и знаю привычку все и вся русифицировать.
- Русские надписи почти всегда длиннее английских либо имеют уродливые сокращения.
- В русском языке не сложилось однозначной терминологии для ИТ и надписи на элементах интерфейса часто больше путают чем проясняют.
Я расскажу сначала как сделать на основе Arduino, затем расскажу как сделать самому с нуля, а если найдутся желающие, напишу отдельно как с этим устройством работать программно с ПК.
USB-IRPC на основе Arduino
На самом деле я и начинал устройство на основе Arduino. Я использовал дешевую Arduino Pro Mini и кусочек макетной платы:
«IRPC v1»
Эта версия не имела связи с ПК, умела только управлять розетаками и питанием ПК, но проработала у меня больше 9 месяцев — с ноября 2011го.
Как обычно, начинаем с закупки деталей.
Нам понадобится:
1. Arduino (любая с питанием от 5В) — примерно от $7
Модуль управления розетками:
2. Плата с реле на 220В, управляемая сигналом 5В. Если хватает опыта, можете сделать сами. У меня была в хозяйстве вот такая, давно думал, куда ее приспособить:
Да, релешек на ней 4, а используется только 2, потому что во-первых — у меня был только 4проводный кабель под рукой, а для 4 реле жил нужно 6 (+- и 4 сигнальных), а во-вторых под рукой было только 2 одинарные розетки, а удлинителей не на общей шине, а с проводами к каждому гнезду отдельно я не нашел на рынке. Мне она досталась за дикие $17, но купил я ее давно. Сейчас она есть на ebay по $3.82, более того, советую вам взять для этого проекта с двумя реле — дешевле и компактнее:
Недостаток реле в том, что они щелкают при переключении. И если бы у меня не валялись без дела, я бы сделал на симисторах BT138 с гальванической развязкой на MOC3063 примерно вот по такой схеме (не моя, дернул кусок из найденной гуглом картинки):
3. Кабель 4-проводный (можно использовать UTP, если есть, тогда розеток можно сделать больше). Длина — чтобы хватило от ПК до места где будет лежать блок розеток.
4. Коннектор PBS-4 для окончательного варианта или вилка PLS-4, если будете делать на Arduino.
5. Кабель медный для подключения розеток к реле — 2 куска примерно сантиметров по 20.
6. Кабель электрический с вилкой Schuko (CEE 7/4) или любой другой, имеющийся под рукой, который выдержит нагрузку:
7. Две настенные накладные розетки (или больше, если релешек больше и кабель UTP) — примерно 30 рублей штука.
8. Кусок фанеры и коробочка для крепления платы с реле и розеток.
Я смонтировал в обычную картонную коробку, прикрепил к куску пластика болтиками и закрепил кабели стяжками. получилось вот так:
«USB-IRPC 2-sockets 220v module»
Под столом это смотрится довольно аккуратно. Розетки разные, да, других не было :) Одну купил, вторая осталась от апгрейда настенной розетки на двойную.
«RPC-2PWR»
Оформительские изыски оставляю на ваше усмотрение.
Модуль ИК приемника
9. ИК приемник TSOP1738, TSOP1736 или IRM_3638. Найдете аналог — попробуйте его. У меня IRM3638 работает лучше всего.
10. Резистор на 10кОм
11. Светодиод + резистор на 100-390 Ом (какой есть такой и берите), на крайний случай можно обойтись встроенным в Arduino на Pin 13 если под рукой ни резистора ни светодиода нет, будет без выносной индикации.
12. 2 Коннектора PBS-4 для окончательного варианта или вилка PLS-4, если будете делать на Arduino.
13. Четырехпроводный кабель такой длины, чтобы хватило от системного блока ПК (девайс установим внутрь) до места, где приемник удобно закрепить, чтобы он был на прямой видимости с дивана (я закрепил на ножке монитора).
Модуль управления питанием ПК
14. Коннектор PBS-2 для подключения к материнской плате вместо кнопки питания.
15. Коннектор PLS-2, для подключения кнопки питания от корпуса параллельно, чтобы не терять возможность ей пользоваться. (можно просто купить одну линейку пинов PLS-40 и откусить кусачками от нее куски с нужным количеством пинов).
16. Оптопара PC817 или ее аналог. По идее стоит 4-8 рублей, но на Царицынском радионыке барыги за нее потребовали 40 рублей.
Можно и реле использовать, но это совсем изврат получится, хотя работать будет :)
17. Токоограничительный резистор на 100-150 ом любой мощности, что найдется под рукой.
Интерфейс с ПК (V-USB)
18. USB кабель, нас интересует только USB A вилка для подключения к ПК, на другом конце может быть что угодно, мы его все равно отрежем. Так что можно использовать любой ненужный кабель. Лишь бы целый был со стороны компа.
19. 2 стабилитрона на 3.6В желательно 0.25 Вт, но можно больше.
20. 2 резистора на 68 Ом.
21. 1 резистор на 2.2 кОм. К мощности особых требований нет.
Паяльник, припой, флюс (канифоль сойдет), немного монтажного провода (да любые проводки, какие есть под рукой).
Какой-нибудь пульт с кодировкой RC-5 типа такого:
«IR RC»
У меня также отлично работает пульт от AverMedia.
Если будете собирать на макетной плате, то понадобятся она и немного проводов, нечто в этом роде :)
Это только кажется что всего много, но на самом деле затраты невелики. Разве что будете покупать все в Чип и Дипе :)
Разбираемся как собрать и как это работает
Если у вас Arduino Pro Mini или Arduino nano, устанавливаем ее на макетную плату типа Breadboard или как в моем случае на кусочек макетки с пятачками для пайки, припаяв ее туда напрямую или с помощью коннекторов, чтобы можно было снять:
Обычную придется подключать к макетной плате проводками.
Подключаем ИК приемник.
Сигнальную ножку напрямую к пину 8 (D8). Между сигнальной и ножкой питания включаем резистор на 10к, ну и оставшуюся ножку заземляем:
у TSOP 1738 сигнальная ножка на фото справа:
Средняя — питание (+5В), левая — земля (GND).
Это три провода, четвертый — для выносного светодиода, я его поставил рядом с приемником, чтобы показывать, что нажатие кнопки принято. Подключаем его через резистор анодом к пину D9, катодом к земле.
Подключаем плату с реле
- VCC к +5 Arduino
- GND к GND Arduino (земля)
- IN1 к пину 6
- IN2 к пину 5
Подключаем управление питанием ПК
Кнопка питания на корпусе просто замыкает два контакта, мы сделаем то же самое с помощью оптопары PC817.
Когда подаешь 5В на вход светодиода, сопротивление между ножками фотодиода падает почти до нуля (на самом деле не до 0 но для наших целей сойдет). Для того, чтобы выход микроконтроллера не спалить, включаем последовательно токоограничивающий резистор.
Резистор подключаем к выходу А2 Arduino, второй контакт резистора к 1й ножке PC817 (отмечена точкой). Вторую ножку на землю. К 3й и 4й подключаем двумя проводами с двухконтактным разъемом те два пина на материнской плате, что обозначены как PWR + и PWR-, сюда же параллельно подключаем кнопку от корпуса ПК, чтобы она тоже могла замыкать эти контакты.
Подключаем к USB
В моем проекте используется программная реализация USB для AVR известная как V-USB.
Берем USB кабель, отрезаем конец, который подключался к устройству
Красный — VCC (пин 1 на схеме справа)
Черный — GND (пин 5 на схеме справа)
Зеленый — D+ (пин 3 на схеме справа)
Белый — D- (пин 2 на схеме справа)
D+ подключаем к пину 2 через резистор 68 Ом, D- подключаем к пину 4 через резистор 68 Ом.
резистором на 2.2 кОм соединяем ножки D3 и D4 (подтяжка).
Стабилитроны включаются в обратном направлении катоды (сторона с черной полоской на корпусе) к — D2 и D4 соотвественно, аноды — на землю.
VCC и GND подключаем соответственно к таким же пинам Arduino — питаться она будет от USB.
Все, наша схема собрана.
Внимательно проверьте все по шагам, чтобы не спалить при подключении ничего.
Если все проверили — прошиваем с помощью AvrDudeR. Дело в том, что писал я прошивку на С, компилировано с помощью AVRToolchain. Проект в Code::Blocks. Исходники проекта выложу чуть позже на странице проекта
Настройки такие:
COM порт указываем тот, который назначился для Arduino, для Duemillanove скорость 57600, для UNO 115200.
Файл прошивки берем этот.
Если прошилось все успешно, можно отключить Arduino от компа, подключаем теперь нашим USB проводом, который мы развели на плате через стабилитроны и резисторы. Одновременно лучше не подключать и хвостом самой Arduino и коннектором проекта.
Если все сделали правильно, в системе определится USB Input Device.
Управление с помощью плагина к MKey
Плагин позволяет назначать кнопкам пульта любые функции MKey.
Качаем MKey, устанавливаем, мой плагин к нему кладем в папку Plugins.
Запускаем MKey, на вкладке настроек включаем плагин R USB-IRPC.
Настройка простая. Жмем Add, открывается окошко, где предлагают нажать кнопку, жмем ее на пульте, даем ей название как на пульте и назначаем для нее действие.
Для того, чтобы управлять реле программно, понадобится моя программа:
- управлять реле и выносным светодиодом
- программно «нажать» кнопку питания на ПК
- автоматически отключается от устройства при засыпании ПК
- автоматически подключается при пробуждении ПК.
- опрашивает устройство каждые 300 мс по умолчанию (настраивается)
- выводит состояние реле и индиакторного светодиода, код последней нажатой с момента опроса кнопки пульта
- включить/отключить прием нажатий кнопок ИК пульта.
- сохранить в EEPROM состояние реле и считать его оттуда. При включении USB-IRPC считывает из EEPROM состояние реле и устанавливает их.
- соответствие названий кодам кнопок пульта считывается из простого текстового файла, выбранный файл конфигурации пульта загружается при старте программы автоматически.
- запуска программ по нажатию кнопки
- передачи нажатий кнопки в запущенную программу
- назначения устройству самостоятельной реакции на выбранные кнопки пульта одной из встроенных функций: переключение реле, нажатие кнопки питания ПК. (сейчас такая функциональность в прошивке встроена для одного конкретного пульта).
Я постарался рассказать максимально подробно для самых начинающих, потому что постоянно получаю множество простых одинаковых вопросов в почте, поэтому объем статьи получился большой.
Во второй части расскажу как сделать устройство, изображенное на самой первой фотографии самостоятельно с нуля, а не на основе Arduino.
Все исходники я немного причешу и выложу на страницу проекта, чтобы функционал можно было изменить под себя. Если будут желающие, отдельно расскажу что и как работает с программной точки зрения.
Часть 2 — изготовление с нуля и программный интерфейс.
Читайте также: