У цифровой революции в домашнем кинотеатре есть неожиданное последствие: источники аудио- и видеосигнала стали множиться как пресловутые австралийские кролики. Зрелищем дюжины электронных коробочек в гостиной сегодня никого не удивишь, а в многокомнатной инсталляции число AV-компонентов может приближаться к сотне. Возникает серьезная проблема — как рационально управлять столь обширным хозяйством. Специализированных пультов ДУ на столе у потребителя множество, попробуй найти среди них нужный! Словом, пора обращаться за помощью к специалистам, например, из американской компании URC. Недаром ее название расшифровывается как Universal Remote Control, т.е. «универсальное дистанционное управление».
Знаний о том, как управлять домашним кинотеатром, фирме URC не занимать. Этим вопросом она занимается четверть века — с первого дня своего существования (основана в 1991 г.). Мало того, сам термин «универсальный пульт дистанционного управления», т.е. УПДУ был, как утверждают представители URC, придуман именно ими. Только за последнее десятилетие под маркой URC было изготовлено и продано более 100 млн. пультов ДУ для домашнего кинотеатра, кабельного телевидения и других целей. Кроме того, фирма разрабатывает пульты и алгоритмы ДУ для таких известных брендов, как Denon, Harman Kardon, LG Electronics, McIntosh, Parasound, Rotel, Samsung, Sherwood и др. Ее штаб-квартира находится в г. Харрисон, штат Нью-Йорк, разработками занимаются высокопрофессиональные американские инженеры.
Весь каталог пультов URC можно разделить на две категории. К первой относятся пульты, соответствующие фирменной концепции Total Control, т.е. способные управлять не только системами домашних развлечений, но и освещения, а также климат-контроля. В их наименовании присутствует индекс TRC (Total Remote Control). Ко второй категории принадлежат универсальные пульты в привычном для нас понимании. Они имеют индекс TX.
I. Программирование устройства.
1) Нажать и удерживать кнопку SET. Затем нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.) 2) Как только загорится индикатор (LED), следует отпустить нажатые кнопки. 3) Введите 3-х значный код устройства. 4) Если введенный код верен, индикатор (LED) погаснет. Если введенный код не верен, индикатор (LED) моргнет несколько раз и пульт вернется в режим программирования. Следует снова ввести ВЕРНЫЙ код устройства! (п.3)
Примечание: Если вы хотите выйти из режима программирования, следует нажать на кнопку устройства (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.). Если в течении 10 секунд, не будет нажата ни одна клавиша, пульт автоматически выйдет из режима программирования.
II. Быстрый поиск.
1) Включите устройство, на которое настраивается пульт. 2) Нажать и удерживать кнопку SET. Затем нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.) 3) Как только загорится индикатор (LED), следует отпустить нажатые кнопки. 4) Нажмите и отпустите кнопку SET. Теперь пульт перешел в режим быстрого поиска и индикатор (LED) начал быстро моргать. 5) Направьте пульт URC22 на то устройство которым вы хотите управлять и нажимайте на клавиши POWER или PLAY и т.д. Если устройство реагирует на нажатия следует перейти к п.6, если не реагирует перейти к п.5 6) Затем проверьте другие клавиши, такие как [CH+/-], [VOL+/-], что бы они работали. Если не работают вернитесь к п.5 7) Некоторые устройства могут долго реагировать на нажатие кнопки POWER. В процессе поиска вы может использовать кнопку SET, для выбора направления поиска Вперед/Назад, что бы найти нужный код быстро.
Что бы покинуть режим быстрого поиска, следует нажать на кнопку устройства (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.), и индикатор (LED) погаснет.
Примечание: В режиме поиска помимо кнопки [POWER] ([POWER] и [PLAY] в блоке управления VCR), могут быть проверены все другие кнопки. Это значит что вы можете проверить все другие кнопки не покидая режима быстрого поиска. Если в течении 30 секунд, не будет нажата ни одна клавиша, пульт автоматически выйдет из режима программирования.
III. Автоматический поиск.
1) Включите устройство, на которое настраивается пульт. 2) Нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.) 3) Нажать и удерживать кнопку SET. Затем нажать и удерживать кнопку POWER в течении 3-х секунд. 4) Как только индикатор (LED) начнет моргать, следует отпустить нажатые кнопки. 5) Как только управляемое устройство, выключится следует немедленно нажать кнопку SET. 6) Частота сохранена. Следует проверить реагирует ли устройство на пульт URC2. Если нет, следует перейти к п.3
настрока пульта urc22b
Шаг первый: Выбор модели устройства
Для начала нужно определиться с моделью устройства. На последних страницах руководства по эксплуатации есть коды для разных фирм производителей в зависимости от класса оборудования (телевизор, видеомагнитофон, DVD проигрыватель или музыкальный центр). Выбрав нужное устройство, находим коды для этого аппарата. Как правило, их несколько. Если модели вашего устройства нет в списке, переходим к пункту три.
Шаг второй: Настройка пульта для выбранного устройства
Найдя код для устройства, вводим его на пульте, затем одновременно нажимаем клавиши SET и TV(или DVB в зависимости от класса устройства). Загорится индикатор на клавише POWER (если он не загорелся, то операцию необходимо повторить), после этого еще раз вводим код, индикатор должен потухнуть и устройство будет готово к управлению. Если устройство не заработало, стоит попробовать повторить данные операции с другим кодом, подходящим для этого устройства.
Шаг третий: Если устройства нет в списке
Автоматический поиск. Сначала нужно включить управляемое устройство, чтобы например, работала одна из телевизионных программ, затем нужно одновременно нажать клавиши SET и TV(или DVB в зависимости от класса устройства) и держать в течение нескольких секунд, пока индикатор клавиши POWER не начнет мигать. Далее необходимо направить пульт на устройство и ждать реакции. Если ваше устройство среагировало, нужно нажать любую клавишу кроме SET. Если вы не успели среагировать на выключение вашего устройства, то можно заново запустить автоматический поиск или перейти к ручному поиску. Ручной поиск. Необходимо включить управляемое устройство, чтобы работала одна из программ, далее одновременно нажать (короткое нажатие) клавиши SET и TV (или DVB в зависимости от класса устройства), загорится индикатор клавиши POWER, после этого коротко нажимать на эту кнопку (POWER) примерно каждую секунду до того момента пока ваше устройство не начнет реагировать. Для завершения поиска нужно нажать клавишу SET или TV.
источник
Описание
. Руководство по эксплуатации. I. Программирование (вариант 1) Найдите в таблице кодов код. соответствующий вашему аппарату. 1. Нажать кнопку SЕТ и одновременно одну из кнопок TVTXT. ТVTXT2. VCR1. VCR2. SAT/CBL. CBL/CAT или HIFI/CD/LD до тех пор. пока не загорится светодиод. Затем отпустите обе кнопки. 2. Наберите код (3 цифры). 3. Нажмите кнопку POWER. Если код правильный. аппарат выключится. и пультом будут управляться все функции аппарата. Если кодировка не удалась. повторите п.1-3. набрав другой код. указанный в таблице. УКАЗАНИЕ: Все функции необходимо выполнять в течение 10 секунд. II. Быстрый поиск (вариант 2). После того . как вы несколько раз выбрали код устройства. которым вы хотите управлять. и оно до сих пор не работает (например. аппарат не может управляться URC22). или вы не можете подобрать правильный код в списке кодов. то вы можете использовать функции быстрого поиска. Примечание. Когда пульт перешёл в режим поиска. вы можете использовать кнопку SЕТ. для переключения между «поиском вперед» и «поиском назад». 1. Включите аппарат. Если это VCR. то там должна быть кассета. 2. Нажать кнопку SЕТ и одновременно одну из кнопок Т/ТХТ1. ТVТХТ2. VСР1. VCR2. SАТ/СВL. СВL/SАТ или НIFI/CD/LD до тех пор пока не загорится светодиод. 3. Кратковременно нажмите SET. Автоматический поиск включён и светодиод мигает. 4. Кратковременно нажмите POWER. В это время с пульта испускается импульс выключения аппарата. 5. В случае отключения аппарата. включите его повторно с помощью его клавиатуры и проверьте правильность исполнения основных функций пульта 6. В случае. если отдаваемые приказы исполняются частично или неправильно. следует повторить п.4. 7. Для выхода из режима поиска нажмите кнопку аппарата. Светодиод погаснет. III. АВТОПОИСК. 1. Включите аппарат. который нужно. Если это VCR. то там должна быть кассета. 2. Нажмите и держите SЕТ. В это же время нажмите POWER более чем на 3 сек. Поиск работает. 3. Нажмите любую кнопку для выхода. 4. Правила читки кодов:
Анализ протоколов работы пультов ДУ
При создании HTPC одним из вопросов является способ управления оболочкой. Думаю, не стоит рассказывать о том, что традиционные устройства ввода — клавиатура и мышь не подходят для данной задачи. Гораздо удобнее управлять HTPC так же как и другой бытовой электроникой — с помощью ПДУ. Чаще всего используются ПДУ от DVD-плееров и аналогичной техники совместно с LIRC / WinLIRC, или Windows MCE-совместимые пульты с USB-приемниками, коих полно в китайских интернет-магазинах. Такие ПДУ эмулируют usb-hid клавиатуру (и иногда мышь). У этих пультов есть существенный недостаток — если материнская плата и BIOS не поддерживают включение питания и пробуждение от usb-устройств, то с помощью такого пульта можно будет управлять устройством, выключать его, но включить не выйдет. С этим недостатком я и решил бороться. Для своего HTPC я выбрал материнскую плату Intel D2700MUD. Как позже выяснилось — опрометчиво, поскольку встроенный видеоконтроллер GMA 3650, основанный на PowerVR, полностью поддерживается только в 32-битных Windows, а в Linux поддержка очень ограничена — не работает аппаратное декодирование видео. Но меня устраивает работа HTPC под управлением Windows 7 Home Basic. Также эта плата не умеет пробуждаться по сигналу от USB-клавиатуры. Также у меня уже был пульт (Philips 2422 549 01930), который мне показался подходящим. Но WinLIRC с ним работал крайне нестабильно. Видимо, использовался какой-то необычный протокол.
Первая мысль была такой — подключить к Arduino IR-приемник, питание взять от шины 5VSB блока питания HTPC, а включение питания (и выключение) осуществлять с помощью имитации замыкания пинов на материнской плате, к которым подключается кнопка включения питания, а остальные команды передавать через RS-232. Но Arduino слишком дорога и занимает много места в и без того небольшом корпусе. Поэтому я решил обойтись дешёвым микроконтроллером ATMega8, в который можно зашить бутлоадер Arduino и программировать его как Arduino NG.
Разбор протокола
Для Arduino существует неплохая библиотека для работы с инфракрасными ПДУ — IRRemote, но она не работает с Arduino NG — не хватает памяти. К тому же, мне не удалось заставить эту библиотеку понимать мой пульт даже на Arduino UNO. Как я писал выше, LIRC (и WinLIRC) не очень хорошо работали с этим пультом — часто пропускали нажатия кнопок, иногда неверно определяли нажатую клавишу. Сам пульт работал исправно — с «родным» DVD-плейером проблем не возникало. Поиски информации о протоколе для этого пульта ничего не дали, так что я решил разобраться с ним самостоятельно.
Для этого мне понадобился осциллограф, но его под руками не оказалось, да и взять было негде. Но в случае с сигналами ПДУ вполне подходит линейный вход звуковой карты. К нему я подключил инфракрасный приёмник TSOP 31236.
Далее с помощью любого аудиоредактора можно записать входной сигнал и проанализировать:
Сначала идет длинная посылка, необходимая для установки уровня автоматической регулировки усиления в приёмнике. Затем следуют импульсы различной длины. Я написав промежуточный скетч для Arduino, который определял время между фронтами импульсов в микросекундах и выводил их в терминал через RS232. Полученные данные я загрузил в Excel:
Когда я только начал изучать протокол, моей главной ошибкой было то, что я считал длительности самих импульсов, но игнорировал длительность интервалов между ними. После того, как я начал считать интервалы между фронтами все встало на свои места. Как видно, большинство импульсов интервалов между фронтами имеют длительности в пределах 350-550 мкс и 700-1000 мкс. Значит так обозначаются значения передаваемых битов — «0» и «1». В протоколе ПДУ используется toggle-бит. Это означает что при нескольких последовательных нажатиях одной и той же клавиши на пульте, в коде будет меняться один бит (иногда несколько). В моем случае toggle-бит имеет необычную длительность — 1200-1400 мкс. К тому же число фронтов в «четных» и «нечетных» посылках отличается. Позже я пришёл к выводу, что интервал 1200-1400 мкс это сумма их двух битов с одинаковым уровнем, но различной длительностью (400+800). В коде я такую посылку обозначил как последовательность из двух бит — «01». Тогда количество бит на выходе стало постоянным.
Скетч для Arduino
Затем я написал скетч, который считал время между изменениями уровня на входе и выводил полученное число в uart. С помощью несложной отладки я добился стабильности определения кодов, добавил сложение с маской для игнорирования toggle-бита (у меня не было функций, в которых он пригодился бы). Потом я жестко закодил функцию, чтобы при получении кода кнопки «Power» микроконтроллер прижимал к земле один из «цифровых» пинов Arduino (в моем случае — 12). // Заранее прошу прощения за индусский код. Я знаю что можно было сделать намного правильнее и лучше, // но для меня было важным решить задачу, а на изящность решения я не претендовал. byte a = 0; // Текущий уровень на входе byte b = 0; // Сохраненный уровень на входе byte bc = 0; // Счетчик битов const boolean dbg=false; // Режим отладки =) boolean start=false; // Запущен ли отсчет импульсов uned int usecs = 0; // Таймер 1 — определяет длительность фронтов uned int usecs2 = 0; // Таймер 2 — определяет паузы между посылками uned int plen = 0; // Длительность интервала между фронтами uned int plen2 = 0; // Длительность паузы между посылками String bits; // Представление буфера в виде единиц и нулей, для отладки uned int buffer; // Буфер. Собственно, сюда помещается код нажатой кнопки void setup() { // Initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards pinMode(13, OUTPUT); // Ок, пусть светодиод там и будет. pinMode(12, OUTPUT); // А пин 12 будет подключаться к разъему кнопки питания на мат.плате. digitalWrite(13,HIGH); // Включаем светодиод. digitalWrite(12,HIGH); // Настраиваем на выходе высокий уровень, чтобы плата считала что контакт разомкнут. pinMode(7, INPUT); // Сюда подаем сигнал от ИК-приемника TSOP. Serial.begin(115200); Serial.ln(«READY»); usecs = micros(); // Инициализируем индусский таймер usecs2 = micros(); } void loop() { a = digitalRead(7); // Считываем значение уровня на входе if(a != b) { // Уровень изменился! Фронт импульса. start=true; // Отсчет импульсов считаем начатым. b = a; // Сбрасываем детектор фронта plen = micros() — usecs; // Замеряем прошедшее время между предыдущим и текущим фронтом usecs = micros(); // Сбрасываем таймер usecs2 = micros(); if (plen<2000) { // фильтруем стартовый импульс и длительность между импульсами if (plen>200 && plen < 620) { // ноль bits += «0»; buffer = buffer << 1; buffer = buffer | 0; bc++; } if (plen>620 && plen < 1150) { // единица bits += «1»; buffer = buffer << 1; buffer = buffer | 1; bc++; } if (plen>1150 && plen < 1600) { // тоггл-бит bits += «01»; buffer = buffer << 2; // Тут сдвигаем на два бита! buffer = buffer | 1; bc++; bc++; } if(dbg==true){ Serial.(plen); // если включена отладка — выводим длительности импульсов Serial.(«;»); } } } else { // Если в этом цикле изменения уровня на входе не произошло plen2 = micros() — usecs2; // Определяем длительность паузы if(plen2 > 5000 ) { // ЕСЛИ ПАУЗА БОЛЬШЕ 5 МИЛЛИСЕКУНД, ЭТО ЗНАЧИТ ЧТО ПОСЫЛКА ЗАКОНЧИЛАСЬ ИЛИ ЕЩЕ НЕ НАЧИНАЛАСЬ usecs2 = micros(); // сбрасываем Таймер 2 if(start==true){ // Если до этого был запущен отсчет импульсов, значит у нас в буфере должен был скопиться код клавиши. usecs = micros(); // сбрасываем таймер 1 while(bc<40){ // выравниваем вывод. честно говоря, я уже не помню почему так сделал, но раз сделал — значит так надо. bits += «0»; buffer = buffer << 1; bc++; } buffer = buffer & 1048575; // Использование magic-numbers плохо влияет на карму. Это маска для toggle-бита. Serial.ln(buffer); // ВЫВОДИМ КОД! if (dbg){ // если включена отладка Serial.(«bits=»); // выводим код в виде единиц и нулей Serial.ln(bc); // выводим число битов } digitalWrite(13,LOW); // Мигаем светодиодом в знак того, delay(100); // что код от пульта был digitalWrite(13,HIGH); // принят и распознан. switch(buffer){ // Прочие действия при нажатии некоторых кнопок. case 8448: // Кнопка Power на моём пульте. Serial.ln(«POWER»); // Выводим сообщение POWER помимо кода кнопки. Удобно при разборе логов EventGhost. digitalWrite(12,LOW); // Прижимаем к земле пин кнопки питания на мат.плате delay(300); // На 300мс digitalWrite(12,HIGH); // И отпускаем default: break; } buffer=0; // Обнуляем буффер bits=»»; // Обнуляем отладочную строку с битами start=false; // Сбрасываем признак отсчета bc=0; // Сбрасываем количество бит } } } }
А что дальше?
А дальше приложение EventGhost считывает коды из порта RS-232 и «дёргает за ниточки» всем известной оболочки XBMC. Настройка того и другого индивидуальна и в то же время проста, поэтому не заслуживает внимания.
Универсальный контроль
Для тех, кто не имеет дома разветвленную систему управления освещением и климатом, фирма предлагает УПДУ линейки MX. В ней более десятка моделей, мы расскажем об основных.
Пульт MX-450 принадлежит к недорогим устройствам, но посмотрите, как много он умеет. У него 2-дюймовый цветной экран, позволяющий выбирать один из 24 источников видео- или аудиосигнала, которые обозначаются красочными иконками. Задачу программирования столь большого числа устройств упрощает встроенный навигатор для занесения кодов в память пульта. Кроме того, совокупность таких кодов можно сохранить на компьютере при помощи специального софта и без проблем восстановить. Этот же софт позволяет обновлять ПО пульта и пополнять библиотеку кодами новых устройств. Пульт работает как с ИК-, так и с РЧ-командами.
Устройства более высокого класса олицетворяет пульт MX-890. Он дает возможность управлять 200 компонентами, причем на каждый может быть отведено до 10 страниц меню. Можно создавать макрокоманды; например, нажатием одной кнопки задернуть шторы, потушить освещение и включить проектор.
Канули в Лету дни, когда для управления определенным устройством нужно было владеть навыками снайпера — наводить пульт непосредственно на него. Обзаведясь базовой станцией MRX-1, MRF-350 или MRF-260, вы получите полную власть над компонентами, установленными в закрытую стойку или находящимися в соседнем помещении. К пульту прилагается элегантная подставка, одновременно играющая роль зарядного устройства.
Флагман линейки MX-5000 способен работать в двунаправленном режиме, т.е. получать информацию от управляемого компонента. В результате пользователь может, скажем, посмотреть обложку воспроизводимого с iPod альбома (при работе совместно с фирменной док-станцией PSX-2). По Wi-Fi-интерфейсу пульт можно вписать в домашнюю сеть и узнавать новости, результаты спортивных матчей или прогноз погоды. У модели не просто сенсорный дисплей — на нажатие виртуальной кнопки пульт откликается вибрированием. Модель MX-5000 способна управлять 255 компонентами, работает как с инфракрасными, так и с радиочастотными сигналами.
Перевод выполнил сам!
I. Программирование устройства.
1) Нажать и удерживать кнопку SET. Затем нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.)
2) Как только загорится индикатор (LED), следует отпустить нажатые кнопки.
3) Введите 3-х значный код устройства.
4) Если введенный код верен, индикатор (LED) погаснет. Если введенный код не верен, индикатор (LED) моргнет несколько раз и пульт вернется в режим программирования. Следует снова ввести ВЕРНЫЙ код устройства! (п.3)
Примечание: Если вы хотите выйти из режима программирования, следует нажать на кнопку устройства (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.). Если в течении 10 секунд, не будет нажата ни одна клавиша, пульт автоматически выйдет из режима программирования.
II. Быстрый поиск.
1) Включите устройство, на которое настраивается пульт.
2) Нажать и удерживать кнопку SET. Затем нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.)
3) Как только загорится индикатор (LED), следует отпустить нажатые кнопки.
4) Нажмите и отпустите кнопку SET. Теперь пульт перешел в режим быстрого поиска и индикатор (LED) начал быстро моргать.
5) Направьте пульт URC22 на то устройство которым вы хотите управлять и нажимайте на клавиши POWER или PLAY и т.д. Если устройство реагирует на нажатия следует перейти к п.6, если не реагирует перейти к п.5
6) Затем проверьте другие клавиши, такие как [CH+/-], [VOL+/-], что бы они работали. Если не работают вернитесь к п.5
7) Некоторые устройства могут долго реагировать на нажатие кнопки POWER. В процессе поиска вы может использовать кнопку SET, для выбора направления поиска Вперед/Назад, что бы найти нужный код быстро.
Что бы покинуть режим быстрого поиска, следует нажать на кнопку устройства (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.), и индикатор (LED) погаснет.
Примечание: В режиме поиска помимо кнопки [POWER] ([POWER] и [PLAY] в блоке управления VCR), могут быть проверены все другие кнопки. Это значит что вы можете проверить все другие кнопки не покидая режима быстрого поиска.
Если в течении 30 секунд, не будет нажата ни одна клавиша, пульт автоматически выйдет из режима программирования.
III. Автоматический поиск.
1) Включите устройство, на которое настраивается пульт.
2) Нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.)
3) Нажать и удерживать кнопку SET. Затем нажать и удерживать кнопку POWER в течении 3-х секунд.
4) Как только индикатор (LED) начнет моргать, следует отпустить нажатые кнопки.
5) Как только управляемое устройство, выключится следует немедленно нажать кнопку SET.
6) Частота сохранена. Следует проверить реагирует ли устройство на пульт URC2. Если нет, следует перейти к п.3
IV. Отображение кода устройства.
Код устройства состоит из 3-х цифр и пульт URC22 может их отобразить.
1) Нажать и удерживать кнопку SET, затем нажать кнопку 1,2 или 3.
2) Отпустите кнопку SET.
3) Количество раз, которое моргнет индикатор (LED), равно этому числу. Если индикатор не моргает, значит значение равно 0.
V. ПРИМЕЧАНИЕ
Не нажимайте на кнопки, во время замены батареек, во избежание потери запомненных данных.
У цифровой революции в домашнем кинотеатре есть неожиданное последствие: источники аудио- и видеосигнала стали множиться как пресловутые австралийские кролики. Зрелищем дюжины электронных коробочек в гостиной сегодня никого не удивишь, а в многокомнатной инсталляции число AV-компонентов может приближаться к сотне. Возникает серьезная проблема — как рационально управлять столь обширным хозяйством. Специализированных пультов ДУ на столе у потребителя множество, попробуй найти среди них нужный! Словом, пора обращаться за помощью к специалистам, например, из американской компании URC. Недаром ее название расшифровывается как Universal Remote Control, т.е. «универсальное дистанционное управление».
Знаний о том, как управлять домашним кинотеатром, фирме URC не занимать. Этим вопросом она занимается четверть века — с первого дня своего существования (основана в 1991 г.). Мало того, сам термин «универсальный пульт дистанционного управления», т.е. УПДУ был, как утверждают представители URC, придуман именно ими. Только за последнее десятилетие под маркой URC было изготовлено и продано более 100 млн. пультов ДУ для домашнего кинотеатра, кабельного телевидения и других целей. Кроме того, фирма разрабатывает пульты и алгоритмы ДУ для таких известных брендов, как Denon, Harman Kardon, LG Electronics, McIntosh, Parasound, Rotel, Samsung, Sherwood и др. Ее штаб-квартира находится в г. Харрисон, штат Нью-Йорк, разработками занимаются высокопрофессиональные американские инженеры.
Весь каталог пультов URC можно разделить на две категории. К первой относятся пульты, соответствующие фирменной концепции Total Control, т.е. способные управлять не только системами домашних развлечений, но и освещения, а также климат-контроля. В их наименовании присутствует индекс TRC (Total Remote Control). Ко второй категории принадлежат универсальные пульты в привычном для нас понимании. Они имеют индекс TX.
Шаг первый: Выбор модели устройства
Для начала нужно определиться с моделью устройства. На последних страницах руководства по эксплуатации есть коды для разных фирм производителей в зависимости от класса оборудования (телевизор, видеомагнитофон, DVD проигрыватель или музыкальный центр). Выбрав нужное устройство, находим коды для этого аппарата. Как правило, их несколько. Если модели вашего устройства нет в списке, переходим к пункту три.
Шаг второй: Настройка пульта для выбранного устройства
Найдя код для устройства, вводим его на пульте, затем одновременно нажимаем клавиши SET и TV(или DVB в зависимости от класса устройства). Загорится индикатор на клавише POWER (если он не загорелся, то операцию необходимо повторить), после этого еще раз вводим код, индикатор должен потухнуть и устройство будет готово к управлению. Если устройство не заработало, стоит попробовать повторить данные операции с другим кодом, подходящим для этого устройства.
Шаг третий: Если устройства нет в списке
Автоматический поиск. Сначала нужно включить управляемое устройство, чтобы например, работала одна из телевизионных программ, затем нужно одновременно нажать клавиши SET и TV(или DVB в зависимости от класса устройства) и держать в течение нескольких секунд, пока индикатор клавиши POWER не начнет мигать. Далее необходимо направить пульт на устройство и ждать реакции. Если ваше устройство среагировало, нужно нажать любую клавишу кроме SET. Если вы не успели среагировать на выключение вашего устройства, то можно заново запустить автоматический поиск или перейти к ручному поиску. Ручной поиск. Необходимо включить управляемое устройство, чтобы работала одна из программ, далее одновременно нажать (короткое нажатие) клавиши SET и TV (или DVB в зависимости от класса устройства), загорится индикатор клавиши POWER, после этого коротко нажимать на эту кнопку (POWER) примерно каждую секунду до того момента пока ваше устройство не начнет реагировать. Для завершения поиска нужно нажать клавишу SET или TV.
источник
Настройка пульта watson urc 22b 6n
I. Программирование устройства.
1) Нажать и удерживать кнопку SET. Затем нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.)
2) Как только загорится индикатор (LED), следует отпустить нажатые кнопки.
3) Введите 3-х значный код устройства.
4) Если введенный код верен, индикатор (LED) погаснет. Если введенный код не верен, индикатор (LED) моргнет несколько раз и пульт вернется в режим программирования. Следует снова ввести ВЕРНЫЙ код устройства! (п.3)
Примечание: Если вы хотите выйти из режима программирования, следует нажать на кнопку устройства (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.). Если в течении 10 секунд, не будет нажата ни одна клавиша, пульт автоматически выйдет из режима программирования.
II. Быстрый поиск.
1) Включите устройство, на которое настраивается пульт.
2) Нажать и удерживать кнопку SET. Затем нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.)
3) Как только загорится индикатор (LED), следует отпустить нажатые кнопки.
4) Нажмите и отпустите кнопку SET. Теперь пульт перешел в режим быстрого поиска и индикатор (LED) начал быстро моргать.
5) Направьте пульт URC22 на то устройство которым вы хотите управлять и нажимайте на клавиши POWER или PLAY и т.д. Если устройство реагирует на нажатия следует перейти к п.6, если не реагирует перейти к п.5
6) Затем проверьте другие клавиши, такие как [CH+/-], [VOL+/-], что бы они работали. Если не работают вернитесь к п.5
7) Некоторые устройства могут долго реагировать на нажатие кнопки POWER. В процессе поиска вы может использовать кнопку SET, для выбора направления поиска Вперед/Назад, что бы найти нужный код быстро.
Что бы покинуть режим быстрого поиска, следует нажать на кнопку устройства (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.), и индикатор (LED) погаснет.
Примечание: В режиме поиска помимо кнопки [POWER] ([POWER] и [PLAY] в блоке управления VCR), могут быть проверены все другие кнопки. Это значит что вы можете проверить все другие кнопки не покидая режима быстрого поиска.
Если в течении 30 секунд, не будет нажата ни одна клавиша, пульт автоматически выйдет из режима программирования.
III. Автоматический поиск.
1) Включите устройство, на которое настраивается пульт.
2) Нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.)
3) Нажать и удерживать кнопку SET. Затем нажать и удерживать кнопку POWER в течении 3-х секунд.
4) Как только индикатор (LED) начнет моргать, следует отпустить нажатые кнопки.
5) Как только управляемое устройство, выключится следует немедленно нажать кнопку SET.
6) Частота сохранена. Следует проверить реагирует ли устройство на пульт URC2. Если нет, следует перейти к п.3
IV. Отображение кода устройства.
Код устройства состоит из 3-х цифр и пульт URC22 может их отобразить.
1) Нажать и удерживать кнопку SET, затем нажать кнопку 1,2 или 3.
2) Отпустите кнопку SET.
3) Количество раз, которое моргнет индикатор (LED), равно этому числу. Если индикатор не моргает, значит значение равно 0.
V. ПРИМЕЧАНИЕ
Не нажимайте на кнопки, во время замены батареек, во избежание потери запомненных данных.
источник
Помощники
Помимо собственно пультов, фирма URC выпускает множество контроллеров, облегчающих управление разветвленными системами как домашних развлечений, так и жизнеобеспечения (обычно по IP-интерфейсу). Модели MRX-10 и MRX-20 мы уже упоминали, хотелось бы сказать несколько слов о компактном MRX-8. Он позволяет дополнить систему домашних развлечений такими компонентами, как потоковый плеер, управлять одновременно несколькими устройствами, причем не обязательно с УПДУ — в пульт управления можно превратить и смартфон, если установить на него фирменное приложение.
Программировать контроллер можно через интернет (инсталлятору не обязательно выезжать на объект). MRX-8 обеспечивает управление в 32 зонах, выдавая команды и макрокоманды по IP, ИК, RS-232, а также релейные сигналы 12 В. Обеспечивается обратная связь с компонентами, поддерживающими фирменную технологию Total Control.
Мы перечислили далеко не все из производимого фирмой, но надеемся, нам удалось убедить читателей: изделия URC позволяют эффективно управлять самой разветвленной системой домашних развлечений, т.е. добиться того, о чем еще 140 лет назад мечтали герои бессмертной оперетты Штрауса: «полный контроль с моей стороны и полное послушание с твоей».
Тотальный контроль
Семейство TRC состоит из пяти моделей с чрезвычайно разнообразными возможностями. В частности, пульт TRC-780 не только передает управляющие команды посредством ИК-лучей, но способен обмениваться радиочастотными сигналами 2,4 ГГц с фирменным системным контроллером MRX-10, а также открывать плейлисты на iPod, управлять освещением и кондиционером.
При создании этого пульта особое внимание уделялось эргономике. Благодаря корпусу особой формы он удобно лежит в руке; наиболее часто используемые кнопки автоматически оказываются в пределах досягаемости большого пальца. 5-позицоинная качающаяся кнопка в центре упрощает работу с меню. TRC-780 может работать как в одиночку, на одну зону, так и в полной гармонии с собратьями в составе мультирум-системы. При этом уникальная технология связки позволяет управлять громкостью в любом помещении с любого из пультов.
Оригинально решена проблема программирования столь сложного устройства. Оно возможно по интернету (специалист-инсталлятор компонует все необходимые коды в специальный файл и отправляет его заказчику, которому остается лишь загрузить файл в пульт). Устройство оборудовано 3,7-см цветным OLED-дисплеем, микропроцессором ARM7TDMI, RAM-памятью на 8 Мб и FLASH-памятью на 32 Мб.
Модель TRC-1080 не работает с радиосигналом, зато совместима с Wi-Fi и оснащена 2-дюймовым дисплеем высокого разрешения с LCD-подсветкой. Пульт работает не от батареек, а от аккумуляторов, причем зарядным устройством служит элегантная подставка в оформлении под черный рояльный лак. Будучи установлен в нее, пульт «засыпает», а при изъятии немедленно переходит в рабочий режим.
Оптимальное число кнопок, в том числе четверка помеченных цветом, обеспечивает прямой доступ к интерактивным кабельным сервисам и основным функциям Blu-ray-плеера. Пульт можно запрограммировать под индивидуальные нужды, а наличие интерактивного режима обратной связи позволяет выводить, скажем, картинку с камер слежения в реальном времени непосредственно на дисплей пульта. Есть возможность вписать пульт в локальную сеть по Wi-Fi, что дает потребителю возможность управлять любым устройством, в этой сети находящимся.
Еще более широкие возможности у пульта TRC-1280, оснащенного не только поддержкой Wi-Fi, но и 2,8-дюймовым сенсорным экраном (240х320) с LCD-подсветкой. Стоит коснуться иконки включения на экране, и этот красавец оживет. Он работает от Li-Ion-аккумулятора, подзаряжаемого при помощи подставки-крэдла. Разумеется, его можно программировать под личные нужды, а всего поддерживается до 255 устройств. Столь впечатляющие показатели достигнуты благодаря микропроцессору ARM9 (533MHz), 128 Мб RAM-памяти и такой же NAND-памяти.
На выставке CEDIA-2012 фирма представила пульты TRG-100 и TRG-200, оснащенные гироскопическими датчиками движения. Эта уникальная технология позволила изящно решить насущную задачу — как управлять перемещением курсора при работе с меню на экране телевизора. Владельцу «гироскопического» ПДУ для этого достаточно лишь перемещать пульт вверх-вниз и влево-вправо — по аналогии с компьютерной мышкой.
Оба устройства совместимы с фирменным контроллером MRX-20 (общаются с ним по радиочастоте и управляют освещением или кондиционером). При командовании системой домашнего кинотеатра модель TRG-100, помимо работы с курсором, позволяет управлять лишь громкостью и переключением каналов. Пульт TRG-200 предоставляет доступ ко всем основным функциям AV-ресивера или плеера.
Универсальный контроль
Для тех, кто не имеет дома разветвленную систему управления освещением и климатом, фирма предлагает УПДУ линейки MX. В ней более десятка моделей, мы расскажем об основных.
Пульт MX-450 принадлежит к недорогим устройствам, но посмотрите, как много он умеет. У него 2-дюймовый цветной экран, позволяющий выбирать один из 24 источников видео- или аудиосигнала, которые обозначаются красочными иконками. Задачу программирования столь большого числа устройств упрощает встроенный навигатор для занесения кодов в память пульта. Кроме того, совокупность таких кодов можно сохранить на компьютере при помощи специального софта и без проблем восстановить. Этот же софт позволяет обновлять ПО пульта и пополнять библиотеку кодами новых устройств. Пульт работает как с ИК-, так и с РЧ-командами.
Устройства более высокого класса олицетворяет пульт MX-890. Он дает возможность управлять 200 компонентами, причем на каждый может быть отведено до 10 страниц меню. Можно создавать макрокоманды; например, нажатием одной кнопки задернуть шторы, потушить освещение и включить проектор.
Канули в Лету дни, когда для управления определенным устройством нужно было владеть навыками снайпера — наводить пульт непосредственно на него. Обзаведясь базовой станцией MRX-1, MRF-350 или MRF-260, вы получите полную власть над компонентами, установленными в закрытую стойку или находящимися в соседнем помещении. К пульту прилагается элегантная подставка, одновременно играющая роль зарядного устройства.
Флагман линейки MX-5000 способен работать в двунаправленном режиме, т.е. получать информацию от управляемого компонента. В результате пользователь может, скажем, посмотреть обложку воспроизводимого с iPod альбома (при работе совместно с фирменной док-станцией PSX-2). По Wi-Fi-интерфейсу пульт можно вписать в домашнюю сеть и узнавать новости, результаты спортивных матчей или прогноз погоды. У модели не просто сенсорный дисплей — на нажатие виртуальной кнопки пульт откликается вибрированием. Модель MX-5000 способна управлять 255 компонентами, работает как с инфракрасными, так и с радиочастотными сигналами.
I. Программирование устройства.
1) Нажать и удерживать кнопку SET. Затем нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.) 2) Как только загорится индикатор (LED), следует отпустить нажатые кнопки. 3) Введите 3-х значный код устройства. 4) Если введенный код верен, индикатор (LED) погаснет. Если введенный код не верен, индикатор (LED) моргнет несколько раз и пульт вернется в режим программирования. Следует снова ввести ВЕРНЫЙ код устройства! (п.3)
Примечание: Если вы хотите выйти из режима программирования, следует нажать на кнопку устройства (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.). Если в течении 10 секунд, не будет нажата ни одна клавиша, пульт автоматически выйдет из режима программирования.
II. Быстрый поиск.
1) Включите устройство, на которое настраивается пульт. 2) Нажать и удерживать кнопку SET. Затем нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.) 3) Как только загорится индикатор (LED), следует отпустить нажатые кнопки. 4) Нажмите и отпустите кнопку SET. Теперь пульт перешел в режим быстрого поиска и индикатор (LED) начал быстро моргать. 5) Направьте пульт URC22 на то устройство которым вы хотите управлять и нажимайте на клавиши POWER или PLAY и т.д. Если устройство реагирует на нажатия следует перейти к п.6, если не реагирует перейти к п.5 6) Затем проверьте другие клавиши, такие как [CH+/-], [VOL+/-], что бы они работали. Если не работают вернитесь к п.5 7) Некоторые устройства могут долго реагировать на нажатие кнопки POWER. В процессе поиска вы может использовать кнопку SET, для выбора направления поиска Вперед/Назад, что бы найти нужный код быстро. Что бы покинуть режим быстрого поиска, следует нажать на кнопку устройства (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.), и индикатор (LED) погаснет.
Примечание: В режиме поиска помимо кнопки [POWER] ([POWER] и [PLAY] в блоке управления VCR), могут быть проверены все другие кнопки. Это значит что вы можете проверить все другие кнопки не покидая режима быстрого поиска. Если в течении 30 секунд, не будет нажата ни одна клавиша, пульт автоматически выйдет из режима программирования.
III. Автоматический поиск.
1) Включите устройство, на которое настраивается пульт. 2) Нажать кнопку того устройства, которым хотите управлять (например TV1, TV2, CD/HIFI, VCR1, VCR2, CBL, SAT и т.д.) 3) Нажать и удерживать кнопку SET. Затем нажать и удерживать кнопку POWER в течении 3-х секунд. 4) Как только индикатор (LED) начнет моргать, следует отпустить нажатые кнопки. 5) Как только управляемое устройство, выключится следует немедленно нажать кнопку SET. 6) Частота сохранена. Следует проверить реагирует ли устройство на пульт URC2. Если нет, следует перейти к п.3
Описание
. Руководство по эксплуатации. I. Программирование (вариант 1) Найдите в таблице кодов код. соответствующий вашему аппарату. 1. Нажать кнопку SЕТ и одновременно одну из кнопок TVTXT. ТVTXT2. VCR1. VCR2. SAT/CBL. CBL/CAT или HIFI/CD/LD до тех пор. пока не загорится светодиод. Затем отпустите обе кнопки. 2. Наберите код (3 цифры). 3. Нажмите кнопку POWER. Если код правильный. аппарат выключится. и пультом будут управляться все функции аппарата. Если кодировка не удалась. повторите п.1-3. набрав другой код. указанный в таблице. УКАЗАНИЕ: Все функции необходимо выполнять в течение 10 секунд. II. Быстрый поиск (вариант 2). После того . как вы несколько раз выбрали код устройства. которым вы хотите управлять. и оно до сих пор не работает (например. аппарат не может управляться URC22). или вы не можете подобрать правильный код в списке кодов. то вы можете использовать функции быстрого поиска. Примечание. Когда пульт перешёл в режим поиска. вы можете использовать кнопку SЕТ. для переключения между «поиском вперед» и «поиском назад». 1. Включите аппарат. Если это VCR. то там должна быть кассета. 2. Нажать кнопку SЕТ и одновременно одну из кнопок Т/ТХТ1. ТVТХТ2. VСР1. VCR2. SАТ/СВL. СВL/SАТ или НIFI/CD/LD до тех пор пока не загорится светодиод. 3. Кратковременно нажмите SET. Автоматический поиск включён и светодиод мигает. 4. Кратковременно нажмите POWER. В это время с пульта испускается импульс выключения аппарата. 5. В случае отключения аппарата. включите его повторно с помощью его клавиатуры и проверьте правильность исполнения основных функций пульта 6. В случае. если отдаваемые приказы исполняются частично или неправильно. следует повторить п.4. 7. Для выхода из режима поиска нажмите кнопку аппарата. Светодиод погаснет. III. АВТОПОИСК. 1. Включите аппарат. который нужно. Если это VCR. то там должна быть кассета. 2. Нажмите и держите SЕТ. В это же время нажмите POWER более чем на 3 сек. Поиск работает. 3. Нажмите любую кнопку для выхода. 4. Правила читки кодов:
Анализ протоколов работы пультов ДУ
При создании HTPC одним из вопросов является способ управления оболочкой. Думаю, не стоит рассказывать о том, что традиционные устройства ввода — клавиатура и мышь не подходят для данной задачи. Гораздо удобнее управлять HTPC так же как и другой бытовой электроникой — с помощью ПДУ. Чаще всего используются ПДУ от DVD-плееров и аналогичной техники совместно с LIRC / WinLIRC, или Windows MCE-совместимые пульты с USB-приемниками, коих полно в китайских интернет-магазинах. Такие ПДУ эмулируют usb-hid клавиатуру (и иногда мышь). У этих пультов есть существенный недостаток — если материнская плата и BIOS не поддерживают включение питания и пробуждение от usb-устройств, то с помощью такого пульта можно будет управлять устройством, выключать его, но включить не выйдет. С этим недостатком я и решил бороться. Для своего HTPC я выбрал материнскую плату Intel D2700MUD. Как позже выяснилось — опрометчиво, поскольку встроенный видеоконтроллер GMA 3650, основанный на PowerVR, полностью поддерживается только в 32-битных Windows, а в Linux поддержка очень ограничена — не работает аппаратное декодирование видео. Но меня устраивает работа HTPC под управлением Windows 7 Home Basic. Также эта плата не умеет пробуждаться по сигналу от USB-клавиатуры. Также у меня уже был пульт (Philips 2422 549 01930), который мне показался подходящим. Но WinLIRC с ним работал крайне нестабильно. Видимо, использовался какой-то необычный протокол.
Первая мысль была такой — подключить к Arduino IR-приемник, питание взять от шины 5VSB блока питания HTPC, а включение питания (и выключение) осуществлять с помощью имитации замыкания пинов на материнской плате, к которым подключается кнопка включения питания, а остальные команды передавать через RS-232. Но Arduino слишком дорога и занимает много места в и без того небольшом корпусе. Поэтому я решил обойтись дешёвым микроконтроллером ATMega8, в который можно зашить бутлоадер Arduino и программировать его как Arduino NG.
Разбор протокола
Для Arduino существует неплохая библиотека для работы с инфракрасными ПДУ — IRRemote, но она не работает с Arduino NG — не хватает памяти. К тому же, мне не удалось заставить эту библиотеку понимать мой пульт даже на Arduino UNO. Как я писал выше, LIRC (и WinLIRC) не очень хорошо работали с этим пультом — часто пропускали нажатия кнопок, иногда неверно определяли нажатую клавишу. Сам пульт работал исправно — с «родным» DVD-плейером проблем не возникало. Поиски информации о протоколе для этого пульта ничего не дали, так что я решил разобраться с ним самостоятельно.
Для этого мне понадобился осциллограф, но его под руками не оказалось, да и взять было негде. Но в случае с сигналами ПДУ вполне подходит линейный вход звуковой карты. К нему я подключил инфракрасный приёмник TSOP 31236.
Далее с помощью любого аудиоредактора можно записать входной сигнал и проанализировать:
Сначала идет длинная посылка, необходимая для установки уровня автоматической регулировки усиления в приёмнике. Затем следуют импульсы различной длины. Я написав промежуточный скетч для Arduino, который определял время между фронтами импульсов в микросекундах и выводил их в терминал через RS232. Полученные данные я загрузил в Excel:
Когда я только начал изучать протокол, моей главной ошибкой было то, что я считал длительности самих импульсов, но игнорировал длительность интервалов между ними. После того, как я начал считать интервалы между фронтами все встало на свои места. Как видно, большинство импульсов интервалов между фронтами имеют длительности в пределах 350-550 мкс и 700-1000 мкс. Значит так обозначаются значения передаваемых битов — «0» и «1». В протоколе ПДУ используется toggle-бит. Это означает что при нескольких последовательных нажатиях одной и той же клавиши на пульте, в коде будет меняться один бит (иногда несколько). В моем случае toggle-бит имеет необычную длительность — 1200-1400 мкс. К тому же число фронтов в «четных» и «нечетных» посылках отличается. Позже я пришёл к выводу, что интервал 1200-1400 мкс это сумма их двух битов с одинаковым уровнем, но различной длительностью (400+800). В коде я такую посылку обозначил как последовательность из двух бит — «01». Тогда количество бит на выходе стало постоянным.
Скетч для Arduino
Затем я написал скетч, который считал время между изменениями уровня на входе и выводил полученное число в uart. С помощью несложной отладки я добился стабильности определения кодов, добавил сложение с маской для игнорирования toggle-бита (у меня не было функций, в которых он пригодился бы). Потом я жестко закодил функцию, чтобы при получении кода кнопки «Power» микроконтроллер прижимал к земле один из «цифровых» пинов Arduino (в моем случае — 12). // Заранее прошу прощения за индусский код. Я знаю что можно было сделать намного правильнее и лучше, // но для меня было важным решить задачу, а на изящность решения я не претендовал. byte a = 0; // Текущий уровень на входе byte b = 0; // Сохраненный уровень на входе byte bc = 0; // Счетчик битов const boolean dbg=false; // Режим отладки =) boolean start=false; // Запущен ли отсчет импульсов unsigned int usecs = 0; // Таймер 1 — определяет длительность фронтов unsigned int usecs2 = 0; // Таймер 2 — определяет паузы между посылками unsigned int plen = 0; // Длительность интервала между фронтами unsigned int plen2 = 0; // Длительность паузы между посылками String bits; // Представление буфера в виде единиц и нулей, для отладки unsigned int buffer; // Буфер. Собственно, сюда помещается код нажатой кнопки void setup() { // Initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards pinMode(13, OUTPUT); // Ок, пусть светодиод там и будет. pinMode(12, OUTPUT); // А пин 12 будет подключаться к разъему кнопки питания на мат.плате. digitalWrite(13,HIGH); // Включаем светодиод. digitalWrite(12,HIGH); // Настраиваем на выходе высокий уровень, чтобы плата считала что контакт разомкнут. pinMode(7, INPUT); // Сюда подаем сигнал от ИК-приемника TSOP. Serial.begin(115200); Serial.println(«READY»); usecs = micros(); // Инициализируем индусский таймер usecs2 = micros(); } void loop() { a = digitalRead(7); // Считываем значение уровня на входе if(a != b) { // Уровень изменился! Фронт импульса. start=true; // Отсчет импульсов считаем начатым. b = a; // Сбрасываем детектор фронта plen = micros() — usecs; // Замеряем прошедшее время между предыдущим и текущим фронтом usecs = micros(); // Сбрасываем таймер usecs2 = micros(); if (plen<2000) { // фильтруем стартовый импульс и длительность между импульсами if (plen>200 && plen < 620) { // ноль bits += «0»; buffer = buffer << 1; buffer = buffer | 0; bc++; } if (plen>620 && plen < 1150) { // единица bits += «1»; buffer = buffer << 1; buffer = buffer | 1; bc++; } if (plen>1150 && plen < 1600) { // тоггл-бит bits += «01»; buffer = buffer << 2; // Тут сдвигаем на два бита! buffer = buffer | 1; bc++; bc++; } if(dbg==true){ Serial.print(plen); // если включена отладка — выводим длительности импульсов Serial.print(«;»); } } } else { // Если в этом цикле изменения уровня на входе не произошло plen2 = micros() — usecs2; // Определяем длительность паузы if(plen2 > 5000 ) { // ЕСЛИ ПАУЗА БОЛЬШЕ 5 МИЛЛИСЕКУНД, ЭТО ЗНАЧИТ ЧТО ПОСЫЛКА ЗАКОНЧИЛАСЬ ИЛИ ЕЩЕ НЕ НАЧИНАЛАСЬ usecs2 = micros(); // сбрасываем Таймер 2 if(start==true){ // Если до этого был запущен отсчет импульсов, значит у нас в буфере должен был скопиться код клавиши. usecs = micros(); // сбрасываем таймер 1 while(bc<40){ // выравниваем вывод. честно говоря, я уже не помню почему так сделал, но раз сделал — значит так надо. bits += «0»; buffer = buffer << 1; bc++; } buffer = buffer & 1048575; // Использование magic-numbers плохо влияет на карму. Это маска для toggle-бита. Serial.println(buffer); // ВЫВОДИМ КОД! if (dbg){ // если включена отладка Serial.print(«bits=»); // выводим код в виде единиц и нулей Serial.println(bc); // выводим число битов } digitalWrite(13,LOW); // Мигаем светодиодом в знак того, delay(100); // что код от пульта был digitalWrite(13,HIGH); // принят и распознан. switch(buffer){ // Прочие действия при нажатии некоторых кнопок. case 8448: // Кнопка Power на моём пульте. Serial.println(«POWER»); // Выводим сообщение POWER помимо кода кнопки. Удобно при разборе логов EventGhost. digitalWrite(12,LOW); // Прижимаем к земле пин кнопки питания на мат.плате delay(300); // На 300мс digitalWrite(12,HIGH); // И отпускаем default: break; } buffer=0; // Обнуляем буффер bits=»»; // Обнуляем отладочную строку с битами start=false; // Сбрасываем признак отсчета bc=0; // Сбрасываем количество бит } } } }
А что дальше?
А дальше приложение EventGhost считывает коды из порта RS-232 и «дёргает за ниточки» всем известной оболочки XBMC. Настройка того и другого индивидуальна и в то же время проста, поэтому не заслуживает внимания.
Результат
Устройство работает уже несколько месяцев. Пользуется им в основном мой отец, далекий от техники, поэтому минимально необходимое количество кнопок на пульте является достаточно удобным обстоятельством. Питание включается и отключается, ошибочных срабатываний не бывает.
( 2 оценки, среднее 5 из 5 )