• Ик, инфракрасное управление, путь, монтаж, поехж. Модули мастер кит с инфракрасным управлением

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

    Принцип ИК передачи информации

    Инфракрасное, или тепловое излучение - это электромагнитное излучение, которое испускает любое нагретое до определенной температуры тело. ИК диапазон лежит в ближайшей к видимому свету области спектра, в его длинноволновой части и занимает область приблизительно от 750 нм до 1000 мкм. Инфракрасное излучение составляет большую часть излучения ламп накаливания, около половины излучения Солнца. Оптические свойства веществ в инфракрасном излучении отличаются от их свойств в видимом свете. Например, некоторые стекла непрозрачны для инфракрасных лучей, а парафин, в отличие от видимого света, прозрачен для ИК излучения и используется для изготовления ИК линз. Для его регистрации используют тепловые и фотоэлектрические приемники и специальные фотоматериалы. Источником ИК лучей, кроме нагретых тел, наиболее часто используются твердотельные излучатели - , ИК лазеры, для регистрации применяются фотодиоды, форотезисторы или болометры. Некоторые особенности инфракрасного излучения делают его удобным для применения в устройствах передачи данных:

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

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

    Пульт ИК управления при нажатии кнопки излучает кодированную посылку, а приемник, установленный в управляемом устройстве, принимает её и выполняет требуемые действия. Для того, чтобы передать логическую последовательность, пульт формирует импульсный пакет ИК лучей, информация в котором модулируется или кодируется длительностью или фазой составляющих пакет импульсов. В первых устройствах управления использовались последовательности коротких импульсов, каждый из которых представлял собою часть полезной информации. Однако в дальнейшем, стали использовать метод модулирования постоянной частоты логической последовательностью, в результате чего в пространство излучаются не одиночные импульсы, а пакеты импульсов определенной частоты. Данные уже передаются закодированными длительностью и положением этих частотных пакетов. ИК приемник принимает такую последовательность и выполняет демодулирование с получением огибающей. Такой метод передачи и приема отличается высокой помехозащищенностью, поскольку приемник, настроенный на частоту передатчика, уже не реагирует на помехи с другой частотой. Сегодня для приема ИК сигнала обычно применяется специальная микросхема, объединяющая фотоприемник, усилитель с полосовым фильтром, настроенным на определенную несущую частоту, усилитель с АРУ и детектор для получения огибающей сигнала. Кроме электрического фильтра, такая микросхема имеет в своем составе оптический фильтр, настроенный на частоту принимаемого ИК излучения, что позволяет в максимальной степени использовать преимущество светодиодного излучателя, спектр излучения которого имеет небольшую ширину. В результате таких технических решений, стало возможным принимать маломощный полезный сигнал на фоне ИК излучения других источников, бытовых приборов, радиаторов отопления и т.д. Работа современных устройств ИК управления достаточно надежна, а дальность составляет от нескольких метров до 40 и более метров, в зависимости от варианта реализации и уровня помех.

    Передатчик ИК сигнала

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

    Излучатель ИК сигнала испускает инфракрасные лучи под действием тока возбуждения. Ток на излучатель обычно превышает возможности микроконтроллера, поэтому для формирования необходимого тока устанавливается простейший на одном транзисторе. Для снижения потерь, при выборе транзистора необходимо обратить внимание на его коэффициент усиления тока - β или h21. Чем выше этот коэффициент, тем выше эффективность устройства. Современные передатчики используют полевые или CMOS транзистоы, эффективность которых на используемых частотах можно считать предельной.

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

    Большинство передатчиков работают на частоте 30 - 50 кГц. Такой диапазон частот был выбран исторически при создании первых подобных устройств. Была выбрана область с наименьшим уровнем помех. Кроме того, принимались в расчет ограничения на элементную базу. В дальнейшем, по мере стандартизации и распространения аппаратуры с таким способом управления, переход на другие частоты стал нецелесообразным.

    В целях увеличения импульсной мощности передатчика, а соответственно и его дальности, сигнал основной частоты отличается от меандра и имеет скважность 3 - 6. Таким образом повышается импульсная мощность с сохранением или даже уменьшением средней мощности. Импульсный ток светодиода выбирается исходя из его паспортных значений и может достигать одного и более Ампер. Импульсный ток в большинстве пультов ИК не превышает 100 мА. При этом, поскольку и опорная частота имеет малый коэффициент заполнения и длительность кодированной посылки не превышает 20-30 мс, средний ток при нажатой кнопке не превышает одного миллиампера. Повышение импульсного тока светодиода сопряжено с снижением эффективности и уменьшением срока службы. Современные инфракрасные светодиоды имеют эффективность 100-200 мВт излучаемой энергии при токе 50 мА. Допустимый средний ток не должен превышать 10-20 мА. Питание светодиода должно иметь RC фильтр, который снижает воздействие импульсной помехи на питание микроконтроллера. Спектр применяемых светодиодов для ИК пультов большинства бытовой аппаратуры имеет максимум в области 940 нм.

    Длительность единичного пакета опорной частоты для уверенного приема составляет не менее 12-15 и не более 200 периодов. При передаче кодированной посылки, передатчик формирует в начале преамбулу, которая представляет собой один или несколько пакетов опорной частоты и позволяет приемнику установить необходимый уровень усиления и фона. Данные в кодированной посылке передаются в виде нулей и единиц, которые определяются длительностью или фазой (расстоянием между соседними пакетами). Общая длительность кодировнной посылки чаще всего составляет от нескольких бит до нескольких десятков байт. Порядок следования, признак начала и количество данных определяется форматом посылки.

    Приемник ИК сигнала

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

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

    • фотоприемник - фотодиод
    • интегрирующий усилитель, выделяющий полезный сигнал на уровне фона
    • ограничитель, приводящий сигнал к логическому уровню
    • полосовой фильтр, настороенный на частоту передатчика
    • демодулятор - детектор, выделяющий огибающую полезного сигнала.

    Корпус такого приемника выполняется из материала, выполняющего роль дополнительного фильтра, пропускающего ИК лучи определенной длины волны. Современные интегральные приемники позволяют принимать полезный сигнал на уровне фона, превышающего его в несколько десятков раз и при этом чувствовать посылки частоты, имеющие всего от 4 - 5 периодов.

    Питание приемника излучения должно быть выполнено с RC фильтром для увеличения чувствительности. Микроконтроллер производит помеху широкого спектра на линиях питания, что может повлиять на работу приемника.

    Форматы ИК передачи данных

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


    был сделан модуль управления роботом по ИК каналу. Вот о нём я бы и хотел написать поподробнее. Так как применений этому можно найти очень много.

    Собственно, что такое ИК-управление - объяснять, думаю, не нужно. Сейчас более распространено управление по Wi-Fi, Bluetooth, ZigBee. Но если вам требуется простое устройство, которое можно собрать «на коленке» при минимальных затратах, то эта статья для вас. =)


    Я не буду привязывать эту статью к определённому микроконтроллеру, а опишу общие принципы работы ИК прёмо-передатчика с AVR МК.

    1. Что потребуется
    При создании простого ИК-управления, негласным стандартом является использование приёмника от компании Vishay TSOPxxxx и диода TSALxxxx в качестве передатчика.

    В обозначении приёмников TSOP последние две цифры означают частоту (в кГц) на которой воспринимается передаваемый сигнал. Сложностей в работе с этими компонентами особых нет. Можно писать свой протокол передачи, можно воспользоваться уже готовыми решениями. В моём случае я решил связать два микроконтроллера ИК-каналом, используя USART. Принцип такой же, как если бы мы соеденили два МК обычными проводами. Нюанс только в модулировании несущей частоты и в настройке таймера.

    2. Схемки
    Чтобы не городить огородов, воспользуемся схемой включения TSOP из его даташита:

    Выход TSOPа нужно подключить напрямую к входу (RX) USART МК.

    С подключением передатчика ситуация немного другая. Так как приёмник работает только на определённой частоте, то нужно задать эту же частоту на излучателе. Это сделать не сложно запрограммировав таймер. Для ATmega16 это будет выглядить вот так:
    TCCR1A=0x40;
    TCCR1B=0x09;
    OCR1AH=0x00;
    OCR1AL=0x84;

    Нужную частоту можно выразить из формулы:

    OCRn - будет искомое значение, которое нужно перевести в шестнадцатеричный формат и записать в регистр OCR1A (для случая с МК ATmega16).

    Теперь TSOP будет принимать наш сигнал. Но чтобы можно было использовать USART, нужно промодулировать наш сигнал. Чтобы это можно было делать - подключим ИК-диод по схеме:

    3. Немного кода
    Прошивки я писал в CodeVision AVR.

    Вот так будет выглядеть код для передатчика:
    #include
    #include

    Void main(void)
    {
    PORTB=0x00;
    DDRB=0x02;

    DDRC=0x00;
    PORTC=0xFF;

    TCCR1A=0x40;
    TCCR1B=0x09;
    OCR1AH=0x00;
    OCR1AL=0x84; // Сюда вписываем значение для вашей частоты

    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Mode: Asynchronous
    // USART Baud Rate: 2400
    UCSRA=0x00;
    UCSRB=0x08;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0xCF;

    While (1)
    {

    If (PINC.4 == 0x00) { putchar("S");}/* В данном случае при нажатии на кнопку, которая висит на PINC.4 МК отсылает символ "S". Который передаётся на другой контроллер через ИК.*/
    };
    }

    Код приёмника не привожу, т.к. занимает много места, а для восприятия общих принципов кода передатчика будет, думаю, достаточно.

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

    Желаю удачи! Буду рад любым вопроса\критике\предложениям;)

    UPD. Решил выложить фото самого пульта, чтобы было видно, что работает девайс не только как китайские приёмники, которые подключаются к ПК. Возможности гораздо шире и универсальнее.

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

    В некоторых случаях можно рассчитывать на наличие последовательного интерфейса, который, при правильной реализации, позволяет эффективно интегрировать оборудование в систему благодаря наличию документированного набора команд и поддержке обратной связи, например, для проверки статуса устройства. В качестве адаптера в данном случае можно использовать описанные недавно устройства Global Cache, не забывая о том, что для каждого клиента потребуется индивидуальный канал управления.

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

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

    Для решения последней проблемы применяется несколько способов, которые также сложно считать идеальными. Первый вариант - использование «обучающего» устройства для записи кодов с существующего пульта ДУ. Второй - работа с подготовленной заранее базой данных кодов.

    Недостаток первого способа - невозможность получения отсутствующих на пульте команд. Чаще всего эта проблема встречается в мультимедийных инсталляциях, когда требуется обеспечить переключение ресивера или телевизора на какой-то определенный вход для коммутации и отображения необходимого сигнала. С учетом широкого набора входов, многие устройства сегодня имеют только одну или две кнопки для его выбора перебором. При этом обеспечить гарантированное «попадание» на нужный вход при любых начальных условиях невозможно. Эту задачу можно решать разными способами, например запоминанием входа или установкой дополнительных коммутаторов с «правильным» управлением, но это неудобно или дорого. Аналогичное замечание касается и управления питанием, где практически всегда есть только функция «переключить питание», а не отдельные кнопки включения и выключения. Еще одним нюансом в описываемом сценарии является погрешность при измерении, поскольку частота модуляции не фиксирована и приемник пытается определить ее по входящему сигналу, так что даже одна команда, записанная несколько раз, может иметь разные коды.

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

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

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

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

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

    Global Cache iTach Flex

    В данном материале мы использовали устройство iTach Flex из последнего поколения компактных адаптеров Global Cache. Модель существует в версиях для подключения к проводной сети и Wi-Fi.

    Устройство для варианта Wi-Fi, который мы тестировали, имеет корпус с размерами всего 31×65×13 мм (не считая разъемов кабелей), что позволяет установить его где угодно. Модификация с RJ-45 будет немного крупнее из-за разъема.

    Корпус изготовлен из черного пластика. Беспроводная антенна встроенная. Присутствует специальная металлическая рамка для крепления. Она устанавливается на одном или двух шурупах, а адаптер просто защелкивается на ней.

    На корпусе есть светодиодный индикатор статуса, кнопка для подключения к беспроводной сети по WPS и сброса настроек, а также окошко ИК-приемника для обучения. С одного из торцов установлен вход питания (стандартный microUSB) и многофункциональный миниджек 3,5 мм для подключения кабелей Flex Link.

    Благодаря последнему элементу, модель получилась уникально универсальной. На настоящий момент поддерживаются следующие варианты: последовательный порт, один ИК-передатчик, один ИК-бластер, три ИК-передатчика (один может быть бластером).

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

    Для управления можно использовать как знакомый по iTach вариант TCP с отправкой команд на определенный порт, а также новый HTTP API. Установка основных параметров работы осуществляется через встроенный веб-сервер.

    Отметим, что Global Cache имеет собственную онлайн-базу ИК-кодов, отсортированных по производителю и записанных в виде команд для отправки на их собственные адаптеры.

    Телевизор LG серии LM66x 2012 года выпуска

    Модель оборудована большим количеством видеовходов, поддерживает 3D и подключение к сети, имеет порты USB. На штатном пульте управления присутствует одна кнопка для включения/выключения питания и одна кнопка открытия меню для переключения источников. В последнем случае потребуется подтверждение операции, а в случае наличия подключения к сети в списке будут присутствовать и медиасерверы, что делает невозможным «слепую» установку на заданный вход.

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

    Для начала используем встроенный в iTach Flex датчик для записи кодов штатного пульта. Все кнопки нам сейчас не потребуются, достаточно определиться только с основными. После запуска программы iLearn и подключения к адаптеру необходимо поднести пульт к приемнику и нажимать кнопки

    Теперь можно проанализировать результаты. Как мы видим, каждая команда, если не учитывать необходимой для самого адаптера части «sendir,1:1,1,37914,1,1,», имеет префикс «341,170,», далее идут тридцать две пары чисел и замыкает команду суффикс «22,1520,341,85,22,3700». В данном случае, нас будут интересовать как раз данные пары чисел. Они кодируют команду в двоичном формате, где «22,21,» обозначает «0», а «22,63,» обозначает «1», причем первым идет младший бит. Заметим, что из-за особенностей оцифровки некоторые числа могут немного отличаться, например «20» вместо «21» или «65» вместо «63». Но сути это не меняет и удобнее сразу привести все к одинаковому виду поиском и заменой.

    Декодирование команды дает нам четыре байта. Подобный вариант, называемый обычно «протоколом NEC», используется достаточно часто и представляет собой сочетание двух байт адреса, одного байта команды и его повтора в инверсном виде («0» заменяются на «1» и наоборот).

    В частности для нашего примера мы получаем: 04 FB 44 BB, 04 FB 02 FD, 04 FB 03 FC. Интересно, что здесь второй байт адреса является инверсным для первого. Далее есть два варианта: зная адрес, составить строки для каждого из возможных значений команды и проверить их на устройстве - или поискать готовые команды в сети. Второй подход приводит нас на сайт , где мы можем обнаружить документ производителя с подробным описанием команд управления телевизорами близких по году выпуска серий. Сравнение таблицы в нем с нашими записями показывает идеальное совпадение по записанным командам. Теперь нужно найти коды для требуемых нам операций и перекодировать их в обратном направлении в команды для iTach Flex. Например, из 04 FB C4 3B и 04 FB C5 3A мы получаем соответственно
    «sendir,1:1,1,38004,1,1,341,171,22,21,22,21,22,65,22,21,22,21,22,21,22, 21,22,21,22,65,22,65,22,21,22,65,22,65,22,65,22,65,22,65,22,21,22,21,22, 65,22,21,22,21,22,21,22,65,22,65,22,65,22,65,22,21,22,65,22,65,22,65,22, 21,22,21,22,1523,341,86,22,3800»
    и
    «sendir,1:1,1,38004,1,1,341,171,22,21,22,21,22,65,22,21,22,21,22,21,22, 21,22,21,22,65,22,65,22,21,22,65,22,65,22,65,22,65,22,65,22,65,22,21,22, 65,22,21,22,21,22,21,22,65,22,65,22,21,22,65,22,21,22,65,22,65,22,65,22, 21,22,21,22,1523,341,86,22,3800».

    Заключительный этап - проверка работоспособности команд. Он также поможет, если в найденной таблице есть неоднозначное соответствие. Для этой задачи используем программу iTest.

    Для удобства и ускорения процесса мы установили около ТВ IP-камеру, что позволило наблюдать за процессом прямо с экрана компьютера. Проверка показала, что задача была полностью выполнена. Результат, записанный в обычном текстовом формате, можно скачать .

    Отметим, что использование готовых баз могло и не дать результата. Например, в базе Global Cache для телевизоров LG представлено семь наборов команд, причем явных пунктов для переключения на заданный вход HDMI в них нет. Хотя, скорее всего, один из представленных вариантов выбора входа мог бы и сработать.

    Комплект домашнего кинотеатра Onkyo HTX-22HD

    Эта задача явно будет посложнее - модель достаточно старая и не очень популярная, особенно в «серьезных» инсталляциях. Однако со своей задачей многоканального ресивера для медиаплеера вполне справляется и сегодня. Как и с описанным выше телевизором здесь есть несколько задач - отдельные команды для включения и выключения питания, выбор конкретного входа и регулировка громкости. С последним проблемы нет - можно просто скопировать коды для этих кнопок. Но для управления питанием используется одна кнопка пульта, а для выбора входа - две кнопки для перехода к следующему и предыдущему входу. Также могут быть потенциально интересны функции выбора режима обработки многоканального звука.

    Сначала стоит прояснить ситуацию со входами. В этом устройстве, как и на многих других в данном классе, физическому входу в настройках ресивера устанавливается соответствие подключенному оборудованию. Заводское состояние выглядит следующим образом:

    Вход Функция
    Coaxial Digital In CD
    HDMI 1 VCR/DVR
    HDMI 2 CBL/SAT
    Line 1 Tape
    Line 2 Tuner
    Optical Digital In 1 DVD
    Optical Digital In 2 Game/TV

    Теперь, как и с телевизором, запишем некоторые или все команды существующего пульта через приемник в iTach Flex. Здесь мы тоже видим характерное начало в строках - «sendir,1:1,1,38095,1,1,» как параметры отправки пакета и «341,171,» как префикс. Далее идут знакомые тридцать две пары чисел протокола NEC, а вот суффиксы встречаются разные. Сложно понять, насколько это существенно, но, на всякий случай запишем и их в рабочую таблицу.

    В случае Onkyo мы имеем два байта адреса и один байт команды, который повторяется в инвертированном виде четвертым байтом пакета. Адрес, вероятно, как-то связан с суффиксом, а всего на основных кнопках пульта мы смогли насчитать три адреса - D2 06, D2 07 и D2 08.

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

    Анализ данных показал, что если сравнивать только команды и не учитывать адрес, то можно найти сходство. Например, для увеличения громкости используется команда 02, для уменьшения - 03, а для отключения звука - 05. В таблице с теми же адресами, что и управление громкостью нашлась команда включения питания (04). Модификация оцифрованной строки с адресом D2 06 на эту команду (нужно исправить всего пару чисел) показала, что мы на правильном пути - ресивер включался и не менял своего состояния при повторной отправке, будучи уже включенным. Команда выключения питания в документе имела другой адрес. Так что мы подставили команду 47 в строку команды , имеющую адрес D2 07 и отличающийся суффикс. Это тоже сработало.

    Таким образом, до нахождения команд перехода на нужный вход оставалось совсем немного. Однако, еще раз внимательно просмотрев найденный документ, на одном из листов была обнаружена таблица, указывающая на то, что приемник и пульт могут иметь альтернативные заменяемые списки адресов из определенных наборов. Сделано это, видимо, для возможности управления однотипными устройствами в одном помещении. Так что после замены наших адресов на D2 6D, D2 6C, D2 AC мы смогли проверить соответствие оцифрованным данным и найти все необходимые команды для переключения на нужный вход. После этого, с учетом разных суффиксов, была составлена таблица команд для данного устройства. Скачать ее можно по ссылке . Отметим, что логические названия входов в ней были заменены на физические исходя из заводских настроек.

    Медиаплеер Dune HD

    С учетом того, что данная серия плееров поддерживает управление по сети (на сайте производителя приводится информация о API), от ИК-пульта в данном случае могут потребоваться только функции раздельного включения и выключения. Здесь производитель сделал подарок, опубликовав с разделе поддержки соответствующий документ, добавив в него необходимые команды включения и выключения с кодами 00 BF 5F A0 и 00 BF 5F A1 соответственно. Заметим, что работа второй команды зависит от настройки режима выключения плеера. Устройство может или переходить в спящий режим (с сохранением работоспособности сетевых функций) или выключаться полностью (до подачи ИК-команды на включение).

    После оцифровки нескольких кнопок пульта в iTach Flex можно получить требуемое «окружение» для наших кодов - приставку «sendir,1:1,1,38186,1,1,342,170,» и суффикс «22,1547,342,85,22,3800». Результат после добавления непосредственных команд можно посмотреть в отдельном текстовом файле .

    Использование команд в iRiduim

    После нахождения требуемых кодов, попробуем использовать их в проекте автоматизации. В первом примере мы взяли продукт iRidium . Несмотря на то, что он имеет встроенную базу кодов Global Cache, по описанным выше причинам рекомендуется использовать именно новые найденные и проверенные коды.

    Для удобства работы с командами можно создать собственную (пользовательскую) базу данных для требуемых устройств. Это позволит использовать их в нескольких проектах. При создании устройств в новой базе вы указываете название, производителя, тип и комментарий. После этого можно запрограммировать для устройства любое число команд. При этом заносить в параметры нужно не весь код, а только основную часть после частоты, числа повторов и смещения. Эти параметры будут указываться уже в свойствах передатчика Global Cache. Отметим, что, несмотря на формально немного отличающуюся частоту, все три устройства успешно работали при указании общего значения 38000.

    После составления дизайна проекта с кнопками и другими элементами можно приступить к программированию действий. Проще всего это делать перетаскиванием команды из дерева устройств проекта на кнопки. Для реализации функций непрерывной регулировки (например, громкости), нужно использовать не только действие «Press», но и «Hold». Заметим, что для ИК управления реализовать быструю установку уровня громкости слайдером не получится, поскольку обратной связи от управляемого устройства в системе нет, как и возможности в виде параметра указать нужный уровень. А вот для RS-232 подобный сценарий в некоторых случаях может быть реализуем.

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

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

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

    Заключение

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

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

    В качестве управляющего адаптера можно использовать как упомянутые в материале готовые устройства Global Cache, так и другие аналогичные модели, например собранные самостоятельно на основе микроконтроллеров, проекты для которых широко представлены в интернете. Что касается интеграции в систему управления, то наиболее удобным представляется вариант работы по компьютерной сети, но в некоторых ситуациях будет достаточно и локальных подключений через USB или последовательный порт. Сетевой вариант, в частности, интересен тем, что может быть использован с различным программным обеспечением, например в составе решений Fibaro и через интернет.

    Микросхема контроллера коллекторного электродвигателя, ИК-пульт дистанционного управления, Радиомодуль NRF24L01, OKI 120A2, SD Card Module, Микросхема контроллера коллекторного электродвигателя, Модем M590E GSM GPRS, Часы реального времени DS 3231/DS 1307, Mini 360 на схеме LM2596, L293D, Инфракрасные датчики расстояния, Часы реального времени, HC-SR501, блок питания Mini 360 на схеме LM2596, Контроллер L298N, HC-SR501, GSM GPRS, Модем M590E GSM GPRS, Часы реального времени DS 3231/DS 1307, Модуль Wi-Fi ESP8266-12E, Card Module, Блок питания, Mini 360, L293D, блок питания Mini 360 на схеме LM2596, Радиомодуль, ИК-пульт, Ethernet shield, Микросхема контроллера коллекторного электродвигателя, Микросхема контроллера коллекторного электродвигателя, ИК-пульт дистанционного управления, SD Card Module, Радиомодуль NRF24L01, двигатель OKI, L293D, Шаговый двигатель, Блок питания, L293D, блок питания Mini 360 на схеме LM2596, Карта памяти SD, Ethernet shield, датчик движения HC-SR501, Модуль Wi-Fi ESP8266-12E, Шаговый двигатель OKI 120A2, Шаговый двигатель,

    Обмен данными в инфракрасном диапазоне

    Для обеспечения надежного приема и гарантированной защиты от помех используется модуляция сигнала и кодирование. Передача данных производится в близком к видимому инфракрасном спектре. Длина волны в большинстве реализованных систем варьируется в пределах 800–950 нм. Самый простой способ избавиться от фонового шума - модулировать (заполнить) сигнал при передаче одной из стандартных частот: 30, 33, 36, 37, 38, 40, 56 кГц. Именно на эти частоты настроены все современные интегральные приемники.

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

    Разработано большое количество специализированных микросхем (SAA3010, GS8489, KS51840 и т. п), генерирующих готовую кодовую последовательность и потребляющих минимальный ток в ждущем режиме, что немаловажно при питании от батарей. Эти микросхемы существенно упрощают схему пультов дистанционного управления (ПДУ). Когда мы нажимаем кнопку пульта, микросхема передатчика активизируется и генерирует кодовую последовательность с заданным заполнением. Светодиод преобразуют эти сигналы в ИК-излучение. Излученный сигнал принимается фотодиодом, который снова преобразует ИК-излучение в электрические импульсы. Эти импульсы усиливаются и демодулируются микросхемой приемника. Затем они подаются на декодер. Декодирование обычно осуществляется программно с помощью микроконтроллера.

    Приемник ИК ПДУ должен восстанавливать данные с двухфазным кодированием и реагировать на большие быстрые изменения уровня сигнала независимо от помех. Ширина импульсов на выходе приемника должна отличаться от номинальной не более чем на 10 %. Приемник также должен быть нечувствительным к постоянным внешним засветкам. Удовлетворить всем этим требованиям достаточно непросто. Старые реализации приемника ИК ДУ, даже с применением специализированных микросхем, содержали десятки компонентов. Такие приемники часто использовали резонансные контуры, настроенные на частоту заполнения. Все это делало конструкцию сложной в изготовлении и настройке, требовало применения хорошего экранирования.

    В последнее время большое распространение получили трехвыводные интегральные приемники ИК ПДУ (SFH5110-xx, TSOP17xx, TFMS5хх0 и т. п.). В одном корпусе они объединяют фотодиод, предусилитель и формирователь. На выходе формируется обычный ТТЛ-сигнал без заполнения, пригодный для дальнейшей обработки микроконтроллером. Наиболее важный параметр при выборе приемника - частота заполнения.

    Внутренний усилитель интегрального приемника имеет высокий коэффициент усиления, поэтому для исключения самовозбуждения и устранения влияния наводок по цепям питания необходимо использовать электролитический конденсатор емкостью не менее 4,7 мкФ, подключенный максимально близко к выводу VCC.

    Подключение ИК-приемника

    В качестве приемника ИК ПДУ применим микросхему TSOP31236. В одном корпусе она объединяют фотодиод, предусилитель и формирователь. На выходе формируется обычный ТТЛ-сигнал без заполнения, пригодный для дальнейшей обработки микроконтроллером. Несущая частота 36 кГц, выход инверсный, т. е. при отсутствии сигнала на пин приходит логическая "1", при появлении сигнала он посылает логический "0".

    Библиотека IRremote

    Можно узнать протокол вашего пульта и написать скетч для получения кодов, от- правляемых с пульта. К счастью, уже написана универсальная библиотека для приема и обработки кодов с любого пульта - IRremote.

    Файлы библиотеки вы можете найти в папке libraries/IrRemote сопровождающего книгу электронного архива. Для использования библиотеки в своих проектах поместим их в папку libraries каталога установки Arduino. Скетч для получения кода и отправки в последовательный порт представлен в примере.

    #include

    int RECV_PIN = 11;

    IRrecv irrecv(RECV_PIN); decode_results results;

    void setup()

    Serial.begin(9600);

    irrecv.enableIRIn(); // включить приемник

    void loop()

    if (irrecv.decode(&results))

    Serial.println(results.value, HEX); irrecv.resume(); // получить следующее значение

    Можно и передавать ИК-команды. Поддерживаемые протоколы: NEC, Sony SIRC, Philips RC5, Philips RC6. Передающий ИК-светодиод должен быть подключен к pin 3. Скетч для отправки ИК-кода представлен в примере.

    #include IRsend irsend;

    void setup()

    Serial.begin(9600);

    void loop()

    if (Serial.read() != -1)

    for (int i = 0; i < 3; i++)

    irsend.sendSony(0xa90, 12); // Sony TV power code delay(100);

    Скетч для получения кодов ИК-пульта

    Первая задача - получить список кодов клавиш нашего пульта.

    Определим список клавиш пульта для управления:

    <> - движение вперед;

    <↓> - движение назад;

    <←> - поворот влево;

    <→> - поворот вправо;

    <–CH> - увеличение скорости при движении вперед/назад;

    - уменьшение скорости при движении вперед/назад;

    <–VOL> - круговое движение на месте влево;

    - круговое движение на месте вправо;

    <0> - остановка робота.

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

    #include

    void setup()

    // прерывания для ИК

    void loop()

    // обработка кода нажатия if(ir_kod>0)

    ir_go(ir_kod); Serial.println(ir_kod); ir_kod=0;

    // получить код, переданный с ИК-пульта void get_ir_kod()

    detachInterrupt(0); // отключить прерывание 0 if (irrecv.decode(&results))

    if (results.value > 0 && results.value < 0xFFFFFFFF)

    // прошла 1 сек?

    if (ir_time2-ir_time1>1000)

    {ir_kod = ir_dt;ir_time1=ir_time2;}

    else

    ir_kod = 0;

    irrecv.resume();

    Оформим их в виде констант

    #define FORWARD 1936 //

    #define BACK 3984 // ↓

    #define SPEED_UP 144 //ch+

    #define LEFT 3472 // ←

    #define RIGHT 1424 // →

    #define STOP 2320 // 0 - стоп

    Определять поступление команды с пульта мы будем по прерыванию 0 (на digital pin2). По прерыванию запускается процедура get_ir_kod(), которая определяет код, поступающий с пульта, и записывает его в переменную ir_kod. Процедура loop() проверяет переменную ir_kod, и в случае ненулевого значения переменной (получения кода с пульта) вызывает процедуру вывода действия ir_go(). На данном этапе - это вывод в последовательный порт предполагаемого по нажатию клавиши действия.

    Данный скетч представлен в примере.

    Результат команды с пульта выводитсяна монитор последовательного порта.

    #include

    // вход ИК-приемника int RECV_PIN = 2;

    IRrecv irrecv(RECV_PIN); decode_results results; unsigned long ir_dt, old_ir; long ir_kod;

    unsigned long ir_time1, ir_time2;

    // коды клавиш ИК-пульта (marmitek)

    #define FORWARD 1936

    #define BACK 3984

    #define SPEED_UP 144 //ch+

    #define SPEED_DOWN 2192 //ch-

    #define LEFT 3472

    #define RIGHT 1424

    #define CIRCLE_LEFT 3216 //vol+

    #define CIRCLE_RIGHT 1168 //vol-

    #define STOP 2320 //0

    void setup()

    // последовательный порт Serial.begin(9600);

    // включить приемник irrecv.enableIRIn(); ir_time1=0;ir_time2=0;

    // прерывания для ИК

    // FALLING – вызов прерывания при изменении уровня напряжения

    // с высокого (HIGH) на низкое (LOW) attachInterrupt(0, get_ir_kod, FALLING);

    void loop()

    // обработка кода нажатия if(ir_kod>0)

    ir_go(ir_kod); ir_kod=0;

    // получить код переданный с ИК-пульта void get_ir_kod()

    detachInterrupt(0); // отключить прерывание 0

    if (irrecv.decode(&results))

    if (results.value > 0 && results.value < 0xFFFFFFFF)

    ir_dt = results.value; ir_time2=millis();

    // прошла 1 сек?

    if (ir_time2-ir_time1>1000)

    {ir_kod = ir_dt;ir_time1=ir_time2;} else

    ir_kod = 0;

    irrecv.resume();

    // активировать процедуру прерывания 0 attachInterrupt(0, get_ir_kod, FALLING);

    // действие по полученному коду void ir_go(kod)

    switch(kod)

    case FORWARD: // направление вперед Serial.print("forward\n");

    break;

    case BACK: // направление назад Serial.print("back\n");

    break;

    case SPEED_UP: // скорость++ Serial.print("speed++\n"); break;

    case SPEED_DOWN: // скорость-- Serial.print("speed--\n"); break;

    case LEFT: // влево Serial.print("left\n"); break;

    case RIGHT: // вправо Serial.print("right\n"); break;

    case CIRCLE_RIGHT: // кружение вправо Serial.print("circle_right\n"); break;

    case CIRCLE_LEFT: // кружение влево Serial.print("circle_left\n"); break;

    case STOP: // стоп Serial.print("stop\n"); break;

    15:45 20.03.2002

    Три способа управления компьютером через любой ИК пультДанный материал содержит в основном теоретическую информацию относительно использования инфракрасных пультов от телевизоров и прочей бытовой техники для управления компьютером. Найти реальное применение такой возможности не так уж и сложно. Можно управлять запуском программ; движением курсора мыши и имитировать нажатие ее кнопок; имитировать нажатие клавиш клавиатуры; управлять WinAmp-ом; выключать и перезагружать компьютер.

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

    Начнем с самого простого варианта - работы через обычные инфракрасные адаптеры, которые продаются во многих магазинах по цене от 15 до 40 долларов. Подключаются они посредством шины USB или последовательного порта RS-232 (обычный COM-порт). Последний вариант для нашей затеи выглядит предпочтительнее, т.к. рассмотренный софт скорее всего не будет работать с USB версиями адаптеров. Кроме того, они стоят дешевле. В нашем случае мы использовали адаптер TEKRAM IRmate IR-210B, подключенный через COM-порт. Сразу нужно предупредить о том, что найденные и описанные нами программы не требуют установки драйверов для каких-либо адаптеров. Программы сами напрямую работают с COM-портом. Установленные драйвера будут мешать нормальной работе. Если использовать USB версии адаптеров, то тут ситуация обратная - драйвера необходимы но, как уже упоминалось ранее, в настройках всех программ не значилась поддержка устройств такого рода.

    Программа распространяется на условиях Shareware. В демонстрационном режиме возможно использование только четырех команд с пульта. Поддерживает различные адаптеры, в том числе и работающие через WinLirc (об этом будет рассказано отдельно). Поддерживаются напрямую пульты AVerMedia TV-tuner. Полный список поддерживаемых устройств можно найти на сайте разработчиков.

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

    Они располагаются в меню "Файл". Изначально, нужно указать к какому порту подключен адаптер. Для нашего IRMate 210 была ремарка в описании программы: работает только на скорости порта 2400 бит/с. Подчиняемся указаниям, в остальном, все настройки вполне оптимальны. Логика работы с этой программой, впрочем, и с остальными тоже, подразумевает, что Вы должны завести в программе сначала источник - пульт управления. В нашем примере мы назвали его "Samsung". Затем к источнику добавляются команды, они располагаются под именем пульта. При их добавлении программа присваивает их значениям сигналы с пульта ДУ. Что бы назначить кнопке ПДУ действие, достаточно перетащить мышкой нужную команду в окошко "Срабатываемые команды" и в закладке "Список действий" указать все, что необходимо. Не зарегистрированная версия программы не даст создать более четырех действий на одной схеме.

    Описание работы с этой программой начнем с ее настройки. При первом запуске программы Вы попадаете в раздел основного меню "General Config". В нем необходимо выбрать тип используемого адаптера. В нашем случае это Generic Serial IR Receiver. Далее перемещаемся в пункт "Hardware Setup".

    Аналогично предыдущей программе, щелкаем в пустом поле правой кнопкой мыши и выбираем из меню пункт "New Remote Control". Мы назвали его Samsung. Далее с помощью правой кнопки мыши начинаем добавлять клавиши с ИК пульта ("New remote Button"). В процессе определения кнопок пульта возникла проблема - программе все коды кнопок казались одинаковыми. Код кнопки отображается справа в окошке "Signature" и является простым набором данных, прочитанных из COM-порта. Решилось все просто: на скриншоте рядом с указанием порта есть кнопочка "Setup". Она вызывает окно настроек, где нужно выбрать вторую закладку с названием "Device Settings". В нем в значении параметра "IR code length" поставить большее значение, например, 32 байта.
    Для назначения уже определенным кнопкам пульта действий нужно перейти в третий раздел "Actions". Добавить наш пульт и добавить кнопки, которые мы определили в предыдущем разделе, только теперь выбор будет из ниспадающего меню, вызываемого правой кнопкой мыши. Действия к командам добавляются в правом окошке.

    Выставив галочку в пункте "Disable OSD" Вы избавитесь от окна, которое будет выскакивать на экран при нажатии этой кнопки на пульте.

    Субъективно, uICE пришлась мне по вкусу больше, чем PCRemote. Но лучше попробовать обе, т.к. у них есть несколько отличий. Кроме того, если Вы собираетесь пользоваться незарегистрированными версиями, то uICE через 30 дней полностью потеряет свою работоспособность, в то время как PCRemote будет работать с вышеупомянутыми ограничениями.

    Работа с самодельными ИК-приемниками

    Рассмотренный выше способ подойдет тем, у кого уже есть ИК-адаптер или приобретение такового не вызывает каких либо затруднений. В ином случае простейший ИК-приемник, подключаемый через стандартный RS-232 порт, соорудить самому совсем не сложно. Более того, существует намного больше программ, работающих именно с самодельными ИК-приемниками. Самой популярной такой программой является WinLirc. Правильнее ее будет назвать не программой, а интерфейсом работы с COM-портом. Этим интерфейсом пользуются все остальные программы, которые будут описаны далее.

    Это интерфейс для устройств, описанных выше. Работает он под управлением Windows 95/98/ME/NT/2000. Изначально создавался для Unix, так что поклонники этой операционной системы найдут все, что им нужно на этом сайте www.lirc.org . Сама по себе эта программа способна только принимать и обрабатывать сигналы, принятые из COM-порта от нашего устройства. Для того, что бы с помощью пульта ДУ совершать какие либо действия на компьютере необходимы другие программы, которые в свою очередь будут получать все данные от WinLIRC. Все уже вышеописанные программы способны работать с WinLIRC.

    Версия 2.0 вышла буквально на днях. Программа распространяется на условиях Shareware, но для граждан бывшего СССР есть бесплатная регистрация. Возможности у программы достаточно широки: начиная эмуляцией клавиатуры и управлением WinAmp-ом до управления внешними устройствами. Все эти возможности появляются только после установки соответствующих плагинов. Все они распложены на сайте автора.

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