081-Управление компьютером при помощи любого IR-пульта.

Автор: | 17.12.2011

1 Сомнения.

Я долго сомневался в необходимости написания программы для управления компьютером от IR-пульта. С одной стороны, существует много аналогичных устройств/программ (как платных, так и бесплатных) с хорошей функциональностью и ничего нового в эту область я добавить не смогу.
С другой стороны, раз уж аппаратная часть нами собрана (преобразователь IR-to-UART) почему бы не использовать ее еще и для управления компьютером? Мелочь, а приятно :). Кроме того, в разрезе развития 1W-IR сети и управления «умным домом» / «рабочим_столом», будет полезно обкатать некоторые идеи в жизни. В итоге решил написать небольшую программку и посмотреть, как она будет работать с различными пультами.

2 Задачи.

Итак, у нас есть готовая плата (даже несколько вариантов) преобразователя посылок бытовых IR-пультов в сообщения UART. Сигнал UART через преобразователь (для COM-порта это может быть MAX232, для USB — сделанный нами ранее USB-to-UART преобразователь или, если есть, готовый преобразователь, например шнурок от мобильного) нужно отправить в компьютер. Далее программная часть, в зависимости от поступившего сообщения (нажатой на пульте кнопки), должна выполнять заданные действия. Действия могут быть различными, например: управление мышью, запуск определенных программ, регулировка громкости и т.д. Вот так это должно работать в комплексе. Теперь разберем по частям.

3 Железо.

Как я уже писал выше, главная идея этой реализации использовать уже готовую плату преобразователя IR-UART. Я буду использовать преобразователь, собранный на ATtiny13,
Готовая плата IR driver
хотя можно взять и на ATtiny2313 – любая из плат или прошивок для них (а их уже скопилось достаточно, здесь и на форуме) будет работать корректно. У кого такой платки еще нет, быстренько ее делаем – статья >здесь<. Кстати, специально для этого устройства сделал апдейт однобайтовой прошивки, изменив алгоритм работы. Поэтому если есть какие проблемы со старой — попробуйте новую (или наоборот).

Идем дальше. У нас есть сигнал UART как нам его принять на компьютере? Тут вариантов несколько:
— первый, который напрашивается, отправлять сообщения через COM порт компьютера. Для этого нужно будет использовать преобразователь UART-to-COM (не забываем, напрямую UART к COM-порту не подключается – сгорит микроконтроллер). Можно купить уже готовый или собрать самому, например на MAX232 (смотрим даташит, там есть схемка как подключать).
— второй вариант немного посложней, но предпочтительней – подключиться через USB. Достоинства очевидны: в отличии от COM, USB порт есть в любом компе, кроме того, питание для преобразователя IR-UART можно брать прямо с USB порта (с COM порта тоже можно ухитриться взять 5в, но это будет намного сложней). Для подключения через USB можно купить готовый преобразователь UART-to-USB (они довольно дешевы) или собрать самому, например, на микросхеме PL-2303 или FT232, или на микроконтроллере (статья про преобразователь UART-to-USB), или, как сделал я для этой статьи, взять старый шнурок от мобильного и «прицепить» к нему платку IR-UART преобразователя – выбирайте сами.  Для подключения через USB в систему не забудьте поставить драйвер, который создаст виртуальный COM порт при подключении устройства.
С железом – все. Посмотрите что получилось:

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

4 Софт.

Вот теперь переходим к самой виновнице данной статьи – программе для управления компьютером при помощи IR пульта. Назначение программы — сопоставить любой клавише пульта действие на клавиатуре (нажатие клавиш или их сочетаний), действия мыши (движения указателя, нажатия кнопок, прокрутку колесика) или действия системы (запустить программу, отключить компьютер, регулировать громкость и т.д.). Программа умеет автоматически загружаться при запуске Windows и подключатся к нашему устройству. Достоинством программы считаю возможность работы с любыми пультами (причем можно работать одновременно с разными пультами). Прием сообщения от IR-to-UART в программе организован по особенному. Для того чтобы не привязываться к какому-то определенному типу или длине посылки программа из любой посылки вычисляет хэш-сумму и работает уже с ней. Это дает возможность работать с различными способами передачи сообщений как уже готовых устройств, так и тех которые будут сделаны позже.
IRControll.zip - Программа для управления компьютером IR-пультом
IRControll.sha - Исходник IRControll (HiAsm)

5 Работа.

Окно программы

Принцип работы программы очень простой.
— Для начала, в закладке «Работа с СОМ» выбираем COM-порт к которому подсоединено наше устройство (это может быть виртуальный COM-порт созданный при подключении через USB – разницы нет), нажимаем «Открыть» — теперь программа может принимать сообщения от нашего устройства. Если все нормально, то в области «Статус», при нажатии на кнопки пульта должен загораться зелененький значок «ОК» и появляться хеш-сумма принятого сообщения.
— Теперь открываем нужную нам закладку «Клавиши», «Мышка», «Система» заполняем поля и добавляем в таблицу действие (кнопочка с зеленым плюсиком). В окошко «IR-код» значения будут заноситься автоматически при нажатии клавиш пульта. После добавления в таблицу действия, оно автоматически становиться активным. Удалите из таблицы строчку и действие не будет производиться (возможно, стоит добавить переключатель активности в строчках таблицы?). На каждый код можно «вешать» любое количество действий (например, выбранное действие, Вы можете подтверждать звуковым сообщением, поставив на этот же IR-код запуск звукового файла с сообщением). Таблицы автоматически сохраняются при выходе из программы и загружаются при повторном входе.
Более детальное описание всех функций есть в хелпе программы. Вот отдельно файл помощи:
IRCHelp.pdf - Файл помощи программы IRControll

Видео по настройке и работе с IRControll:

 

Что еще можно сделать с программой?
1 Если Вам нужно управлять функциями различных программ (проигрыватели, презентации и т.д.) просто присвойте кнопке пульта комбинацию клавиш принятой в выбранной программе для нужного вам действия;
2 Если Вам нужны дополнительные действия в системе, как и в первом случае, назначьте кнопке соответствующее сочетание клавиш;
3 Если нужны более сложные действия, тогда в  закладке «Система» есть действие «02 Открыть файл» которое поддерживает bat-файлы;
4 Нетрадиционное применение! Я назвал это действие «Начальник идет!». Суть в следующем. На дверь кабинета ставиться концевичек, который «нажимает» кнопку пульта, по этой кнопке задействуется  команда «04 Закрыть активное окно/приложение». Догадываетесь зачем это нужно? 🙂 . Если тема будет востребована, сделаю маленький передатчик на одну-две IR-команды с питанием от батареек-таблеток который можно будет «поселить» на двери навсегда;
5 Еще одно нетрадиционное применение —  «Чревовещание». В  закладке «Система» есть действие «09 Проигрывание звука». Оно делает то-же что и «02 Открыть файл» со звуковыми файлами с одним отличием, звук проигрывается без открытия проигрывателя и без потери фокуса (переключения) активного окна. Применений несколько, например, можно подшучивать над друзьями, которые увлеченно рубяться в любимую игру, незаметно от них запуская звуки которые они не ожидают (записанные заранее звуки приближающихся врагов или смерти союзников, думаю, тут должна поработать Ваша фантазия…). Еще, если Ваше чадо нацепило наушники и валит фрагов налево и направо, потеряв связь с реальностью, можно ему отсылать сообщения , типа: » Милый, если ты не очень занят, можешь прийти к нам с Папой и покушать вместе с нами?», или такое —  «Бросай комп, лоботряс, иди учить уроки. Через пять минут не увижу тебя за уроками, полетишь с балкона вслед за компом!», ну Вы поняли о чем я :).

6 Выводы.

Программа не сможет Вас удивить чем-то оригинальным. Если Вы уже имели опыт работы с подобными вещами, то ничего нового для себя не откроете. В противовес к этому, программа позволяет себя гибко настраивать и, если Вам чего не хватает, Вы всегда можете попросить меня это добавить (в пределах моих возможностей, конечно :). Большим плюсом, считаю, возможность работы программы не только с преобразователем IR-to-UART, а с любым, Вами собранным устройством — это открывает новые возможности для использования уже готовых устройств. Для вновь создаваемых устройств нет необходимости придерживаться правил отправки сообщений.

7 Аналогичные устройства.

Не могу не дать ссылки на подобные устройства (не коммерческие варианты). Их существует довольно много, вот некоторые, наиболее удачные:
http://www.ir-max.ru
http://winlirc.sourceforge.net
http://www.mediatexx.com
http://www.pcremotecontrol.com

(Visited 11 128 times, 1 visits today)

081-Управление компьютером при помощи любого IR-пульта.: 113 комментариев

  1. timias

    здравствуйте, ко мне попала звуковая карта creative 5.1 live sb0060 на ней есть контакты UART out и UART in. Могу ли я собрать на них управление пультом.
    P.S. этот вход используется для подключения дополнительных выводов на переднюю панель оснащенную приемником и пультом
    хотелось бы чтобы схема была без контроллера. спасибо

  2. GetChiper Автор записи

    Я так понимаю это входа-выхода преобразователя. Если так, то да — должно работать. Проверьте напряжения на этих выводах, должно быть не больше 5 вольт.

  3. rustam__1994

    а кабель от чего ??и где взять приемник с картинки ??

  4. pino24

    НАРОД ПУДТЕ БДИТЕЛЬНЕ IRControll КАК ТО НЕ ПРАВЕЛЬНО РАБОТАЕТ С ATtyny 2313, если ее прошить Расширенной прошивкой – трехбайтовый(«*хх») ((

  5. pino24

    @rustam__1994
    IR приемник я взял стелика у которого было дистанционное управление)) или с дивиди,ТАМ ТОЧНО ЕСТЬ))

  6. pino24

    @rustam__1994 извеняюсь ошибся((

  7. nochnoi_pytnik

    подскажите , канал «B» и «C» на плате остаются пустыми или можно им присвоить команду с пульта?, хотелось бы повесить на этот канал реле и комп включать с пульта.

  8. ElectroMaX

    Сделайте пожалуйста возможность включения компьютера с пульта.

  9. GetChiper Автор записи

    Давнишняя идея сделать для компа устройство включения-выключения (в том числе и с пульта)… Как нибудь соберусь сделать.
    http://youtu.be/6uLpS1HgVOI

  10. andrey2051

    Такой вопрос можно ли подключить напрямую к com порту ?
    Как я понимаю подключать к 5-GND и 2-RxD входу.

  11. GetChiper Автор записи

    Нет, напрямую подключать нельзя. Нужен преобразователь COM-UART.

  12. tehnik1986

    скажите пожалуйста почему мой антивирус ругается на IRControll , скаченный с вашего сайта

  13. GetChiper Автор записи

    На всякий случай проверил http://www.virustotal.com
    ни один антивирус не показал проблем.
    Что у Вас за антивирус?

  14. all71

    Привет, собрал, хочу поделиться впечатлениями. Задумка с переназначением кодов и тонкой настройкой запуска чего либо превосходная. У меня с типом пультов проблем не было, есть Harmony 600, Logitech, он он лайн может в себя записать любые 5 из 5000 устройств, но небыло приёмника к пк и софта, что бы подружить их
    Попробывал Ваш вариант, есть проблемы и не удобства.
    1. Мышь — нет двойного щелчка.
    2 И самое главное, нет одинарной посылки, например плэй\пауза, работает с 3-6 раза, вставить ссылку, текст, из за этого может продублироваться 2-3раза подряд
    3 Код стабилизируется на одном коде, при нажимании не менее 0,3-0,5 сек. Если кратковременно может дать что попало, прошивка №2, провода короткие, керамика на месте. Прошивка №1 многие кнопки просто совпадают коды.
    Можно сделать так? считать код с пульта и прописать в прошивку намертво или может есть ссылки на такое. Только без всяких игорьплаг, на WIN10, оно точно работать не будет, только хид-юсб

  15. all71

    Да забыл, *Следующий трэк*, то же самое, перепрыгивает через 1, а то и через 3 бывает, можно как то подправить? Похожее как у кнопок дребезг, от которого избавляются програмным путём или рс фильтрами. Можно так? Опрос, фиксация кода, одна посылка, тайм аут, следующее.
    работает на WIN7-64

  16. BenderBZR-.

    Здравствуйте! Во-первых хочу Вас поблагодарить за замечательную программу. Во вторых я во всем этом профан, но я собрал ИК-приемник на ардуино UNO и теперь управляю плеером и телевизором с помощью одного пульта =) В связи с определенными проблемами мне необходимо переключаться между мониторами, это делается при помощи комбинации Win+P. Не могли бы Вы добавить поддержку клавиши Win в комбинации «Сочетание клавиш»? Я хотел сделать vbs скрипт, но функция SendKeys не поддерживает эту клавишу.

    p.s. Только что нашел отвечающее за это приложение, теперь можно открыть через batник) может кому тоже пригодится: C:\Windows\System32\DisplaySwitch.exe

  17. admin Автор записи

    Хорошо, попробую сделать обновление этой программы (да и приемника не мешало-бы).
    Еще какие пожелания есть?

  18. all71

    Можно, на 5 свободный выв. поставить триггер вкл\выкл с обучением пульта и дублированием с клавиатуры, типа Cntr+///, ( например светильничек на столе прикрутить) и озвучку по нежнее, тоновую 0.4-1кгц
    Сегодня собрал ещё один макет, с другим тсоп и изменённой топологией дорожек, проблемы остались, видно это всётаки програмное

  19. admin Автор записи

    Озвучку чего?

  20. all71

    Озвучку приёма посылок

  21. all71

    Можно в еепроме сделать какую то коорекцию?? , коды намертво присваивать, что бы избавиться от определения каждый разложных посылок, типа статическое декодирование, как например в любом процесооре ТВ, по таблице присвоенных кодов
    И рограму для получения кода от пульта с графикой

  22. admin Автор записи

    Эта программа работает с любым UART сообщением что придет. Зачем что-то запоминать в EEPROM? Клавиша нажата — ее код сразу отправился программе — что тут будет делать EEPROM?

  23. admin Автор записи

    К сожалению Win не получится использовать (это ограничение используемого элемента эмулирующего нажатия клавиш)

  24. all71

    Одна программа для управления непосредственно, как терминал переназначения команд, без определения посылок, как дешифратор.
    Вторая программа только для копирования кодов пульта, со 100% точным результатом и потом сохранением в формат еер, с последующей прошивкой в тини13
    RE с любым UART сообщением что придет/ Вот как раз что бы этого избежать, а работать талько с теми что нужно и возможно даже с фильтром, от случайных помех или ещё чего

  25. all71

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

  26. admin Автор записи

    Скорей всего этого не понадобится. Я попробую сделать все так чтобы исключить ошибочные данные или их потерю.
    С того времени как я делал это устройство я уже намного улучшил алгоритмы работы с ИК- кодами — их просто нужно применить в этом устройстве.

  27. all71

    На 1й прошивке печально, Я баловался с Harmony 600 залил не помню, с какого то, двд Пионера пульт, там 3часть кнопок была с одним и тем же кодом, поменял тут же на 2ю прошивку, другой результат, но ложных кодов всё равно много, поэтому только статическая привязка к коду, Я думаю только это поможет

  28. admin Автор записи

    Это проблема старого алгоритма хеширования (вернее его отсутствия) кодов посылок. С новым алгоритмом все будет хорошо.

  29. all71

    Это прошивка №3 ??, когда выйдет??

  30. all71

    Делал когда то из РАДИО 2010\7 Дистанционно управляемая сетевая розетка на тини85, вот он супер определяет, 4года до сих пор у меня работает ни одного сбоя не было, но там всего 2 команды, но с обучением ес-но

  31. all71

    Отлично, это в любом случае лучше чем танцы с бубном в
    SlyControl, IRLink, ПерехватЪ. Они под ХР заточены, то драйвера не устанавливаются, то плагины. Ведь у людей и 10ка и 7ка стоит давно, что на них ровняться.
    Для меня это первый реальный вариант, который пошел на 7-64, остальное только время тратить на бубен

  32. admin Автор записи

    сегодня-завтра сделаю

  33. all71

    Супер, Я бета тестер №1, спасибо.
    Я програмный код не пишу, не программер.
    Но, по работе с промышленным оборудованием, знаю что такое удобство, функционал и надёжность, кстати защита от помех, есть тут на первом месте, и где работает оптический или индуктивный датчик, им всё равно, что там сварка рядом, или прожектор 2х киловатный на него в упор светит, надёжность , это надёжность

  34. all71

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

  35. admin Автор записи

    Решил, для начала, убрать проблемы в программе для ПК
    Создал топик на форуме, где буду выкладывать тестовые версии
    http://www.forum.getchip.net/viewtopic.php?f=8&t=736

    Параллельно начну изменять железо

  36. admin Автор записи

    Уже набросал прошивку для ардуины — осталось ее запустить и наладить работу с обновленной программой (алгоритм немного планирую изменить)

  37. all71

    Визуальный график отображения посылки не планируется??

  38. all71

    Есть идея. Проект для тех кто смотрит кино онлайн, на ТВ с ПК по HDMI. Идея заключается в экранной мультимедийной клавиатуре, которая появляется после активации безпроводной мыши ( потревожить). Интерфейс из нескольких кнопок 6и — 8и, большого размера для удобства, с настраиваемыми функциями, комбинации кнопок, что бы можно было согласовать например с VLC. Сохранённый плей лист, открыть URL, открыть браузер и т д

  39. admin Автор записи

    Это как?

  40. admin Автор записи

    Эти функции можно выполнять и этой программой при помощи настроенных горячих клавиш и пульта

    мышкой по моему более проблемно водить

  41. admin Автор записи

    Сегодня, кстати, плодотворно поработал — программа почти готова. Осталось доделать вкладку управления ИК-приемником.

  42. all71

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

  43. all71

    Согласен, но…. когда смотришь из сети, много бывает проблем, то поток обрывается, то ссылка уже просрочена, то на другой сайт надо перейти, что б фильм найти, для одного пульта это просто не реально, это как диск от начала до конца слушать и прямой эфир, разные вещи, нужна более тонкая манёвренность и наглядность

  44. admin Автор записи

    Этого не понадобится — все будет отлично работать 🙂

  45. admin Автор записи

    В выше описанном случае 6-8 клавиш все равно не спасут ситуацию.
    Лучше тогда поставить полноценную виртуальную клавиатуру и пользоваться ею либо при помощи мыши либо при помощи пульта и моей программы

    Вот к примеру http://freevirtualkeyboard.com/virtualnaya-klaviatura.html

  46. all71

    В бесплатной кроме букав ничего нет, пробную платную не качал, пусть сами пользуются)))) А набирать вот это http://fs16.www.ex.ua/show/46d447efbf67d6b5175491f5287adbfb/241007789/46d447efbf67d6b5175491f5287adbfb.mp4. Религия не позволяет, зрение подпортить можно, а вот если бы, это и 20 других находились в сохранённом списке от 1го до 20ти, и лёгким нажатием 2+0 и > плей и вуаля — кино идёт

  47. all71

    Можно в вашу програму сделать вккладку, …. открыть плейлист, редактирование. Лист до 10 позиций хватит Далее №1 комбинация например — вставить в VLC, и проиграть.
    VLC.exe+алт+1+cnlr+C+ cnlr+V+179

  48. admin Автор записи

    Плейлист конечно сделать можно. Но не проще накидать файлы/ссылки (на компе) в плейлист того-же VLC и потом назначить горячие клавиши для управления этим плейлистом при помощи пульта?

    Или имеется в виду что плейлист нужно формировать прямо пультом на ТВ?

Добавить комментарий