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 (7468 Загрузок)
IRControll1.zip (Одна Загрузка)

5 Работа.

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

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

Видео по настройке и работе с 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 20 071 times, 1 visits today)

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

  1. kingdog2588

    Очень хорошая программа, то что нужно! Сколько времени потратил, пытаясь создать нечто подобное на с++, кроме принятия данных с порта и парочку действий не добился, а тут отказывается очень хороший человек ее уже создал) спасибо тебе за труд!

  2. all71

    1я проблема по коду 174-175, не регулируется громкость, только если больше-меньше, естественно на одном месте толчётся, походу код держится в буфере при повторном приходе не обновляется, если между например + и + послать любую другую кнопку, то громкость идёт всё таки вверх как положено

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

    Отписывай все возникающие проблемы на форуме — буду править

  4. all71

    С озвучкой что то не то

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

    Этот хекс — новый ИК-приемник, но он предназначен для ардуины (там и ссылка есть как этот хекс записать в ардуину)
    для тини13 сделаю позже

  6. all71

    main.hex.. в архиве был, надо перешивать или нет??

  7. all71

    числа, да так нормально, С Пионера 696 стало нормально определять, по морганию светодиода, ну очень интенсивные посылки, протокол интересно какой у него

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

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

  9. all71

    Точность команд со старым вариантом в разы чётче стала, дальше буду завтра тестить, даже не поленился вынес тсоп на проводках 10см, всё равно определяет чётко, моё предположение подтвердилось дело не в монтаже

  10. all71

    А коды иероглифами и значками только у меня отображаются?? пример *Џp …… *w€ ….. *µJ……

  11. all71

    Можно конечно и через VLC, но хотелось бы всё в одном, что б в его дебри не лазить. Спасибо за Вам за идею с Hot Virtual Keyboard скачал полную версию, вот что получилось, http://s017.radikal.ru/i424/1604/49/ebaa3c28341e.png с макросами правда засада, из под браузера не хочет он копировать ссылку с плеера на видео хоть тресни

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