декодировать код инфракрасного пульта дистанционного управления с помощью c или c ++ - PullRequest
0 голосов
/ 15 июня 2010

Пожалуйста, дайте мне знать, как декодировать код инфракрасного пульта ДУ, используя c или c ++.

Ответы [ 4 ]

5 голосов
/ 15 июня 2010

Полагаю, ваш вопрос неопределенный, потому что вы абсолютно не знаете, с чего начать.

Если у вас нет инфракрасного приемника, вот блог используется некоторое время назад, чтобы узнать, как его создать. Я надеюсь, у вас есть некоторые таланты в электронике. Иначе пора учиться! : D

Если вам удалось его построить (или у вас был другой известный работающий приемник), вы можете взглянуть на LIRC , проект с открытым исходным кодом, совместимый с предлагаемым устройством.

3 голосов
/ 16 июня 2010

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

Как только вы получитедемодулирует последовательность импульсов, это просто вопрос декодирования в соответствии со схемой кодирования конкретных производителей.Я когда-либо делал это только для пульта Sony SIRC , чтобы использовать его в качестве контроллера робота.Там, где датчик вызвал прерывание, и синхронизация импульсов была зафиксирована на каждом прерывании.Если ваше устройство имеет входной захват и сравнивает аппаратное обеспечение таймера, вы можете уменьшить накладные расходы и повысить точность (хотя это, вероятно, не обязательно).

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

Существуют некоторые применимые стандарты, но ни одно производство не должно их соблюдать, и их больше. RC-5 и RECS 80 - два таких распространенных стандарта.

3 голосов
/ 15 июня 2010

Ну, я не знаю о C ++, но вот он в C #:

void ReadRemote()
{
    while(!Console.KeyAvailable)
        Console.Write(DecoderClass.ReadIR(IRType.TVRemoteControl));
}
1 голос
/ 16 июня 2010

Либо купите какое-нибудь оборудование, которое делает это, и выполняйте вызовы API C или C ++ (например, lirc). или если вы заинтересованы в декодировании протоколов и выполнении этого с программным обеспечением, а не с аппаратным обеспечением, то вы хотите использовать микроконтроллер.

Это весело и легко, и я рекомендую его в качестве первого проекта микроконтроллера. Существует несколько популярных протоколов, большинство из которых являются вариациями нескольких тем. По сути, вы получаете приемник, который вы можете получить из радиошака, хотя количество того, что раньше было радиокомпонентами в радиошаке (возможно, именно поэтому они меняют название на шак), намного меньше и захоронено в небольшом ящике в Задняя часть магазина скоро исчезнет. В любом случае, получите там приемник или микроконтроллер digikey или mouser, посчитайте количество тактов между нарастающим и падающим фронтами (приемник удалил несущую частоту ~ 40 кГц), сравните эти времена с ожидаемым протоколом и определите те из нулей. Передача с помощью только микроконтроллера и ИК-светодиода может быть выполнена, но это немного сложнее, потому что вам нужно выполнить модуляцию. Сингл и гейт вне микроконтроллера вместе с часами модуляции и / или часами, сгенерированными таймером, намного проще, но требуют дополнительного оборудования.

Многопротокольные приемники, скорее всего, не будут такими же хорошими, как приемники с определенными протоколами, точно так же, как gcc не очень хорош для какой-либо одной платформы, но довольно хорош для всех платформ. Создание собственного - это весело, познавательно и, как правило, приводит к лучшему получателю, хотя вы не сможете сравниться с ценой массового производства. Часть проблемы также связана с изменением несущих частот, и в идеале вы хотите выбрать приемник, который соответствует несущей частоте для протокола, который вы используете. Это имеет значение, например, вместо того, чтобы быть на расстоянии в 8 футов, вы можете быть на расстоянии 30 футов. Также он может работать на расстоянии 3 фута, но не на расстоянии одного фута или трех дюймов. Что-то в этом роде. Cable and dish и другие универсальные пульты дистанционного управления генерируют все протоколы, так что вы можете выбирать, в зависимости от вашего проекта.

...