14 лет назад 15 июля 2004 в 19:01 98

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

ЖЕЛЕЗНЫЕ ВАРИАНТЫ
Надо сказать, что железная часть системы дистанционного управления до смешного проста. Фактически это всего-навсего интегральный ИК-приемник, способный нормально обрабатывать сигналы, которые передаются стандартными пультами, и подключаемый к какому-либо из портов компьютера. Поэтому совершенно естественно, что интернет кишит разнообразными, часто очень похожими схемами подобных приемников. Если вы спокойно обращаетесь с паяльником, или, по крайней мере, готовы на какое-то время превратиться в радиолюбителя, у вас есть возможность собрать ИК-приемник самостоятельно, потратив на это 15 минут и смешную сумму денег.

Вариант первый – любительский
Предлагаемая нами схема – лишь одна из многих, но зато самая простая и потому самая распространенная. Вам понадобится один из стандартный интегральных фотомодулей, используемых в бытовой аппаратуре. Подойдут TSOP1836, IS1U60L, GP1U52X, SFH506-36, TK1833, ILMS5360 или аналогичные – эти модули будут нормально работать практически с любыми пультами дистанционного управления, причем радиус действия приемника будет порядка 10 метров.

Для подключения такого приемника идеально подходит COM-порт, каждый из входов которого (линии DCD, DSR, CTS и RING) вполне может быть использован для передачи принятого фотомодулем сигнала. Важно запомнить, какую именно линию мы используем для передачи сигнала (обычно DCD), с тем чтобы не возникло проблем с настройкой программного обеспечения.

Какой бы из вариантов приемника мы ни выбрали, совершенно логично разместить его внутри корпуса медиацентра. В таком случае в качестве питания нашей схемы можно использовать 5 В источника питания, но тогда потребуется два отдельных разъема: один для подключения сигнальной линии к внутреннему COM-порту, а второй для подключения к линии питания. Поэтому логичнее будет все же использовать для питания фотомодуля линии RTS и DTR COM-порта.

Внутренний разъем COM-порта

Если вы используете ИК-приемник, подключаемый к COM-порту, и хотите разметить его внутри корпуса медиацентра, необходимо, чтобы на материнской плате был внутренний разъем COM-порта. В противном случае вам придется выводить шнур наружу, что может быть проблематично, если все слоты расширения заняты. К тому же провод, выведенный наружу, ни красоты, ни надежности медиацентру не прибавит.

Если же на материнской плате есть IrDA/SIR-разъем (а чаще всего он есть), то мы вообще можем обойтись одним интегральным фотоприемником, подключив его напрямую. При этом вывод TX (вывод 3) фотомодуля соединяется с выводом RX, а общий провод и питание (выводы 1 и 2) с соответствующими контактами разъема IrDA/SIR материнской платы. Более простой и дешевый способ придумать невозможно, учитывая, что обычно интегральный фотоприемник стоит порядка 60 рублей.
Но насколько бы простым и недорогим ни казался предложенный вариант, понятно, что для кого-то он окажется неприемлемым, и возникнет вопрос: “А нельзя ли обойтись без паяльника?” Можно.

Вариант второй – полуфабрикатный
Практически любой из существующих IrDA-портов, как внутренних, так и внешних, можно использовать в качестве ИК-приемника, правда здесь есть несколько нюансов. Во-первых, IrDA-порты создавались для иных целей, и в них нет компонентов (полосового фильтра и демодулятора), которые необходимы для устойчивой работы с обычными пультами ДУ. Поэтому в нашем случае одни пульты будут работать неустойчиво, а другие, использующие модуляцию Pulse-length (SONY) и Bi-phase (Philips, Samsung и LG), не заработают вовсе – IrDA-приемник просто не сможет нормально декодировать их сигналы.

Во-вторых, если IrDA-порт обнаружен операционной системой, то мы не сможем получить к нему доступ. Поэтому нам придется вносить изменения в INF-файл описывающий IrDA-устройство, с тем чтобы не дать системе его захватить. Такая процедура подходит для устройств, не поддерживающих технологию Plug’n’Play (встроенные порты и порты, подключаемые к COM-порту), и практически нереализуема для устройств, подключаемых через USB.

Обманываем систему

Если вы хотите использовать в качестве ИК-приемника встроенный IrDA-порт (например в ноутбуке), то вам придется обмануть операционную систему. Для этого нужно сделать следующее.
1 Из диспетчера устройств удалить драйверы IrDA.
2 Скопировать в системную папку INF-файлы msports.inf и netirsir.inf из пакета inf_samples.zip (см. на диске), заменив ими исходные файлы.
3 Перегрузить ПК и после запуска войти в Диспетчер устройств.
4 Для обнаруженного системой неизвестного устройства установить драйвер устройства pnp0511 и настроить параметры в его свойствах (обратить внимание на номер COM-порта, который использует устройство).
5 Если используется программа SlyControl, запустить ее и выбрать плагин IRCOM, указав в настройках соответствующий COM-порт.
6. Далее следует обычная процедура настройки.

Кроме того, использование встроенного IrDA-порта в качестве ИК-приемника лишает нас возможности соединения устройств через IrDA-интерфейс: после того, что мы делаем с драйверами устройства, система перестает воспринимать его как IrDA-порт.

Самым популярным устройством, используемым в качестве ИК-приемника, является SIR Infrared Adapter IR-210 компании Tekram. Оно настолько популярно, что в некоторых программах для работы с ним есть специальный плагин.

Этот симпатичный “глаз” можно даже не прятать. Впрочем, если мы хотим создать законченное устройство, лучше все же его разобрать, закрепить внутри медиацентра и подключить к разъему COM-порта, установленному на материнской плате.

Если вам удастся найти IrDA-модуль ASUS IRM-100, его также можно использовать в качестве ИК-приемника, но подключается он к IrDA/SIR-разъему материнской платы. В этом случае даже разбирать ничего не придется, поскольку эта небольшая платка специально предназначена для установки внутрь корпуса.

Вариант третий – все в одном
Во всех предыдущих вариантах мы говорили о приемниках, которые, по сути, являются лишь частью программно-аппаратного комплекса, и без поддержки специальных программ они ровным счетом ни на что не способны. Вариант, о котором мы хотим рассказать сейчас, это не просто приемник, а скорее, готовый комплекс управления, которому никакие программы не требуются. Речь идет о дистанционной программируемой клавиатуре Remote Keys, разработанной московской фирмой “Скорпион”.

/@Remote Keys.tif: Remote Keys – интеллектуальное программируемое устройство управления
Несмотря на неказистый внешний вид, этот программируемый эмулятор клавиатуры, подключаемый к порту PS/2, способен поставить в соответствие любой кнопке пульта ДУ нажатие той или иной клавиши или комбинации клавиш. Для этого достаточно нажатием кнопки Power на пульте перевести устройство в режим программирования, затем нажать комбинацию клавиш на клавиатуре, после чего нажать кнопку, которой мы хотим эту комбинацию присвоить.

Таким образом, если программа, которой мы хотим управлять, сделана грамотно и поддается управлению с помощью клавиатуры, Remote Keys справится с ней без проблем (кстати, если в BIOS материнской платы разрешить включение компьютера от PS/2-клавиатуры, то и включать компьютер можно будет с помощью пульта).

Пульт, поставляемый в комплекте, стоит рассматривать лишь как бесплатное приложение, поэтому очень хорошо, что клавиатура поддерживает телевизионные пульты, работающие в стандарте RC-5 (Philips, Samsung и некоторые LG).

Единственным серьезным недостатком Remote Keys в нашем случае оказывается необходимость подключения модуля к PS/2-порту. Подключить его внутри корпуса смогут лишь отдельные энтузиасты. Всем остальным придется либо выводить наружу не один, а два провода (для порта и для клавиатуры), либо вообще отказаться от размещения Remote Keys внутри корпуса.

Пульт дистанционного управления

Если внимательно посмотреть на пульт от какого-либо бытового устройства, то станет понятно, что большинство из них не годятся для удобного управления медиацентром. Дело в том, что помимо стандартных кнопок управления медиаплейером нам обязательно нужны кнопки перемещения курсора, Enter и ESC. А как раз их-то на пультах обычно и нет.
Сейчас достаточно просто найти практически любой пульт управления (см., например, www.pultov.net), поэтому, очевидно, есть смысл потратить на это некоторое время и подобрать какой-либо подходящий вариант. В некоторых случаях, например для IrDA и Remote Keys, нужно точно знать, пульт какой системы вам необходим, либо выбирать универсальный.

Бесперспективные варианты
Помимо перечисленных выше вариантов ИК-приемников есть еще два, от которых мы отказались.
В принципе, тот самый “глаз” от ТВ-тюнера вполне годится на роль пульта ДУ для всего компьютера: если помучиться с софтом, то можно заставить его управлять не только программным обеспечением тюнера, но и всем ПК. Вариант плох только тем, что ТВ-тюнера в нашем медиацентре может и не быть.
Еще одно решение, от которого мы сразу решили отказаться, – использование фотомодуля, подключенного к входу звуковой карты. Звуковая карта нужна нам в полном объеме для выполнения своих непосредственных обязанностей, а для управления в нашем распоряжении есть и другие порты.

СОФТ
Для того чтобы управлять приложениями с помощью ИК-пульта (если это не Remote Keys), кроме приемника нам необходимы программы-посредники, которые связывают нажатия с событиями и командами Windows. Самая популярная из таких программ-трансляторов – SlyControl, написанная российским программистом Дмитрием Васильевым. Она поддерживает практически все существующие варианты приемников. Так, в базе поддерживаемых ею устройств есть модули для:

– btRemote — прием команд с пульта ДУ для ТВ-тюнеров на базе чипа bt848/878;
– FlyRC2 — прием команд с пульта для ТВ-тюнеров на базе чипа Philips SAA713x;
– RM-050 — прием команд с пульта RM-050 для ТВ-тюнеров на базе чипа Philips saa713x;
– Tecram M205 — поддержка ДУ для тюнера Tekram M205 Pro;
– Acorp pv951 — поддержка ДУ для тюнера Acorp pv951 и аналогичных, например MediaForte;
– LiveDrive — прием команд с пульта RM-900 для Creative SoundBlaster Live! / Audigy Drive;
– ATI Remote Wonder — поддержка ДУ ATI Remote Wonder (дополнительно необходимо установить ПО ATI Remote Wonder Software версии 1.2 или новее);
– MSIRemote — поддержка ДУ MSI (Microstar) Remote Control;
– Ir210 (Generic SIR IrDA device) — прием ИК-команд с пульта ДУ через SIR IrDA (Tekram IR-210);
– DCD (Generic LIRC device) — прием/передача ИК-команд с любого пульта ДУ через COM порт;
– UIR — прием команд с ИК пульта ДУ через UIR / Irman / Uniper совместимое устройство;
– IRCOM — прием команд с ИК пульта ДУ через устройство, подключаемое в СОМ порт;
– (Generic Serial Device). Проверено на моделях Creative Labs Infra (PC-DVD), Remote Control (Model: CIMR100), Pinnacle Studio PCTV и ProMedia UR24 remote control, могут быть и другие варианты, но их нужно подбирать отдельно;
– SndRemote — прием ИК-команд с любого пульта ДУ через звуковую карту. Это отдельный вид ИК-портов, базирующихся на обычных трехконтактных фотоэлементах, только подключаются они к микрофонному входу звуковой карты с помощью стерео-мини-джека.
– WinLIRC client — прием/передача ИК команд с любого пульта ДУ через WIRC server (www.bigfoot.com/~Nsky/) (с поддержкой RX / IrDA устройств);
– uICE — прием команд с сервера uICE.

Именно поддержка огромного количества различных приемников дистанционного управления обеспечило SlyControl популярность среди пользователей.

Мастер настройки SlyControl
При первой загрузке программы появляется окно “Мастер настройки Sly Control (Шаг 1 из 6)”, которое впоследствии можно будет вызывать из пункта главного меню “Настройка”. В списке “Модули для ДУ” необходимо выбрать тип приемника. Так, если мы собрали схему, приведенную в первом варианте, нужно выбрать DCD, установив соответствующий указатель в активное положение. В рабочем окне существуют еще две важные кнопки – “Настройка” и “Информация о модуле”. Первая позволяет перейти непосредственно к настройкам для пульта, вторая вызывает файл справки по выбранному типу модуля.

Нажав на кнопку “Настройка”, вызываем окно настроек пульта ДУ. Как уже говорилось ранее, основными вариантами передачи сигнала по линии для нашего случая являются DCD, DSR, CTS и RING, а питание бывает двух типов: RTS либо RTS + DTR. Даже если мы забыли, как собрали приемник, в SlyControl все можно узнать, и не притрагиваясь к “железу” — просто перебирая варианты настроек. Все изменения вступают в силу после нажатия кнопки Close и повторной загрузки этого окна.
При положительном результате после нажатия кнопки на пульте ДУ в нижнем левом углу появится графическое изображение кода, над которым отобразится сам код нажатой кнопки в цифровом представлении и наименование пульта.

Далее в правой части окна настроек находится таблица с перечисленными кнопками и их стандартными кодами. Их названия зарезервированы и используются при составлении скриптов SlyControl для работы с программами Windows.

Для пульта Samsung обозначено больше кнопок, нежели имеется на реальном ТВ-пульте. Например, у нас отсутствовали Enter, Play, Record и т. п. Но эта ситуация исправима, поскольку кнопки можно “перепрошивать” с помощью функции Replace. Вся операция занимает считанные секунды. Для этого необходимо нажать кнопку на пульте ДУ, так чтобы высветился ее код, выбрать необходимую функцию из списка названий кнопок и нажать Replace. Таким образом, вы можете “перепрошить” любую кнопку пульта ДУ.

Если же нашему пульту понадобится не существующая ранее кнопка с какой-либо специфической функцией, можно воспользоваться и операцией Add — в таблице появится новая строка, содержащая код кнопки, марку пульта и название, которое нужно будет вводить вручную. Активизировав и настроив пульт, возвращаемся в окно мастера настройки и переходим ко второму шагу, нажав “Применить”.

Среди программ, предназначенных для осуществления работы с дистанционным управлением первопроходцем является LIRC, разработанная некогда под Linux. Со временем LIRC перебазировалась на платформу Windows (WinLIRC), и ее разработчики осуществили поддержку ДУ для ряда стандартных приложений, среди которых можно отметить ProgDVB, BSPlayer, LightAlloy и т. п. SlyControl совместима с программными оболочками, поддерживающими WinLIRC, и может эмулировать ее основной функциональный блок — сервер WinLIRC. Поэтому рекомендуется включить эту эмуляцию в SlyControl.

Переходим к третьему шагу мастера — настройке микшера звуковой карты. В данном окне предлагается указать параметры для программного микшера звуковой карты (если у нас имеется ТВ- или радиотюнер). При открытии и закрытии программы тюнера звук может автоматически включаться и отключаться. Начиная с версии программы 2.7.10, управление общей громкостью в программном микшере не требует дополнительной настройки.

Четвертый шаг мастера настройки SlyControl — выбор скриптов используемых программ. В рамках этого окна настроек можно выбирать необходимые программы. Всего в версии 2.7.12 имеется поддержка 52 программ, в том числе и универсальной оболочки ShowShifter (www.showshifter.com).
Пятый шаг мастера настройки SlyControl — настройка кнопок Audio, Video, TV и Radio. На многих пультах ДУ имеются такие кнопки. За каждой из них можно закрепить вызов определенной программы. Скажем, Audio — это WinAmp, Video — это Windows Media Player и т. д.

После завершения работы с основными настройками производим следующую проверку. В рабочем окне включаем кнопку “Старт” (или нажимаем F9), после этого попробуем нажать любую из кнопок на пульте ДУ. Иконка SlyControl в системном трее должна отреагировать на нажатие. Если это произошло, то можно считать, что настройка нашей системы управления проведена успешно.

Как работает SlyControl
Подключая WinAmp или ShowShifter , мы должны понимать, что велосипед уже изобретен. При настройке SlyControl (4 шаг) мы указали программы, скрипты которых должны загружаться и использоваться при работе с ДУ. Cкрипты – это текстовые файлы, содержащие определенный программный код. Ими описано в SlyControl все, от системы до работы с приложениями.

Для каждой поддерживаемой программы существует свой отдельный файл, в котором уже прописаны все возможные варианты управления ею с помощью ДУ. Если какая-то функция не работает, скорее всего, у вас проблема с адаптацией пульта. Самый простой метод ее решения – перепрошивка кнопок в мастере настройки с помощью операции Replace. Как вариант можно использовать и программный способ замены мало задействованных кнопок с помощью написания специального кода:
Remap01 = Hook( “REMOTE”, “GREEN”, Enabled, Continue, 1 ){
EventSend( “REMOTE”, “REW”, Remap01 ) }

Данный фрагмент кода взят из файла скрипта remote.scs. Он переназначает кнопку Green (зеленая кнопка на пульте) и присваивает ей функцию кнопки перемотки назад Rew. Вообще все программные строки скрипта идентичны. Их можно описать так:

Событие (Event) > Ловушки (Hooks) > Последовательность действий (Actions)

Данный метод позволяет запрограммировать для кнопки пульта различные действия или последовательность действий вплоть до реализации сложных математических вычислений и эмуляции реальных манипуляторов (джойстиков, мыши, клавиатуры и т. п.). Все это в той или иной мере присутствует в SlyControl уже в виде файлов скриптов.

Для пользователей, любящих программирование, в SlyControl предусмотрен удобный и понятный файл помощи, описывающий структуру и возможности скрипта. Помимо этого предусмотрен модуль Windows Monitor, который позволяет просмотреть структуру окон и объектов управления в любой программе. Иначе говоря, управлять можно практически всем. Обычным пользователям, не связанным с программированием, в скрипты особенно вникать и не нужно. Достаточно подключить соответствующий модуль и настроить пульт.

ShowShifter и SlyControl

По умолчанию в выпадающих списках программ для кнопок Video, Tv, Audio, Radio комплекса ShowShifter нет. Чтобы он там появился, необходимо с помощью Блокнота отредактировать файл favorites.scs. В разделе ### SELECT VIDEO ### добавляем две строки:
# ShowShifter
# EventSend (“VIDEO”, “ShowShifter”)
Можно также добавить для ### SELECT TV ### строки:
# ShowShifter
# EventSend (“TV”, “ShowShifter”)
Для ### SELECT AUDIO ###:
# ShowShifter
# EventSend (“AUDIO”, “ShowShifter”)
И напоследок для ### SELECT RADIO ###:
# ShowShifter
# EventSend (“RADIO”, “ShowShifter”)
Теперь ShowShifter в выпадающих списках появляется – можем выставить его для первых трех кнопок, а последнюю оставить для радиотюнера, например для Radiator или FLY 2000 TV, если в ShowShifter FM-тюнер не распознался.

Основные конкуренты
Среди программ, работающих с ИК-портами, у SlyControl есть только один явный конкурент —Girder (www.girder.nl), также обладающий русским интерфейсом. По общей концепции обе программы очень близки. Среди главных недостатков Girder стоит отметить необходимость в скачивании дополнительных плагинов и файлов настроек, которых существует великое множество и из которых не все являются полноценно работающими. Кроме того, в Girder нет возможностей перепрошивки пульта и расширенных вариантов программирования.

Довольно известная бесплатная программа WinLIRC (winlirc.sourceforge.net) работает по иным принципам – в ней используется IP-протокол, благодаря чему можно управлять несколькими ПК одновременно по сети. Однако это требует поддержки интерфейса WinLIRC в прикладных программах. Если же программа не рассчитана на работу с WinLIRC и не имеет соответствующих плагинов, приходится использовать посредников (например, InfraRed Executer – IREX (www.ramscan.com/irex)), которые на основе команд WinLIRC эмулируют нажатия любых клавиш клавиатуры. Список оборудования и программ, которые поддерживают WinLIRC, можно найти на сайте lirc.sourceforge.net. И SlyControl, и Girder могут работать как клиенты WinLIRC, эмулируя нажатия горячих клавиш в приложениях. В ряде случаев, например, если имеющееся оборудование “понимает” только WinLIRC, это очень полезно.

Если вы честно одолели софтовую часть и остались в трезвом уме, настоятельно рекомендуем вам найти и собрать схему посложнее той, что нарисована в первом железном варианте, а затем заставить SlyControl готовить вам по утрам кофе и омлет с беконом – у вас это точно получится. Если же от всех этих скриптов и модулей с паяльниками вам делается нехорошо, найдите Remote Keys, и в итоге вы получите все то же самое, но без глубоких ковыряний в кодах и железе.