Передача ИК сигналов

Обсуждение опубликованных в блоге статей.
Аватара пользователя
mbqart
Сообщения: 52
Зарегистрирован: 13 окт 2012, 11:42

Передача ИК сигналов

Сообщение mbqart »

Статья в блоге http://phreakerclub.com/1452


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

Изображение

Для приема сигнала используется фотоприемник, состоящий из фотодиода, усилителя с полосовым фильтром, настроенным на определенную основную (несущую) частоту, и демодулятора который выделяет принимаемые данные. Обычно, микросхема имеет 3 вывода Vo — ножка выхода ИК-приёмника. GND — общий вывод (минус источника питания). Vs — вывод плюса напряжения питания, обычно от 4,5 до 5,5 вольт. Этот фотоприемник имеет маркировку TSOP.


Упрощённая блок-схема TSOP-приёмника приведена на рисунке. В качестве выходного элемента внутри TSOP используется обычный N-P-N транзистор. В неактивном состоянии транзистор закрыт, и на ножке Vo присутствует слабый уровень высокого напряжения (лог. «1″). При появлении в чувствительной зоне TSOP инфракрасного излучения с «основной» частотой этот транзистор открывается, и выходная ножка Vo принимает низкий уровень сигнала (лог. «0″).

Изображение

«Основная» частота — это частота импульсов инфра-красного излучения (света), которую отфильтровывает внутренний демодулятор TSOP. Эта частота обычно равна 36, 38, 40 кГц, но может быть и другой, об этом необходимо справиться в даташите на конкретный тип TSOP-приёмника. Для повышения помехоустойчивости ИК-канала связи, применяется модулированная передача ИК-света. Временные характеристики модуляции для помехозащитной передачи приведены в даташите на конкретный TSOP-приёмник. Но в большинстве случаев достаточно придерживаться простых правил:

1) минимальное количество импульсов в пачке — 15

2) максимальное количество импульсов в пачке — 50

3) минимальное время между пачками — 15хT *

4) частота импульсов в пачке должна соответствовать основной частоте TSOP-приёмника

5) светодиод должен быть с длиной волны = 950 nm.

*T — период «основной» частоты TSOP-приёмника.

Регулируя в некоторых пределах длину пачки импульсов, можно передавать двоичные сигналы. Длинный импульс на выходе TSOP-приёмника может означать «единицу», а короткий — «нуль». Таким образом, при соблюдении правил модуляции дальность передачи цифровых сигналов на прямой видимости между светодиодом и TSOP-приёмником может достигать 10-20 метров. Скорость передачи не большая, около 1200 бит в секунду, в зависимости от применённого TSOP-приёмника.

Изображение

Принцип передачи сигнала:
Изображение

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

Теперь перейдем к небольшому примеру приема сигналов ИК с помощью отладочной платы LaunchPad MSP-EXP430G2 от компании Texas Instruments. Нам необходимо подключить наш приемник ИК (я использовал TSOP4836) к нашей отладочной плате.

Изображение

Как мы уже говорили микросхема приемника TSOPимеет 3 вывода OUT — ножка выхода ИК-приёмника. GND — общий вывод (минус источника питания). VCC — вывод плюса напряжения питания. Как видно из схемы подключения выход приемника подключен к пину №11.

Приступаем к программированию нашего LaunchPad. Для начала запускаем среду программирования LaunchPad — Energia.

Изображение

Выбираем тип используемого контроллера, совместимого с LaunchPad msp430g2553. И приступаем к написанию простого скэтча.

[PHP]#include <IRremote.h>//Подключаем библиотеку для работы с ИК приемником

int RECV_PIN = 11; // Определяем с какого контакта будем принимать сигнал отИКприёмника TSOP4836
IRrecvirrecv(RECV_PIN); //Создаем класс ИК приемника
decode_resultsresults; // Результат декодирования помещаем в переменную

void setup()
{
Serial.begin(9600); // Инициируем порт для наблюдения результатов (Serial monitor)
irrecv.enableIRIn(); // Запускаем прием ИК
}

void loop() {
if (irrecv.decode(&results)) { // Если получен какой либо код с ИК приемника
Serial.println(results.value); // Выводим числовое значение нажатой клавиши на пульте ИК
irrecv.resume(); // Ожидаем получение следующей переменной
}
}[/PHP]

Нажимаем кнопку Upload, прошиваем наш контроллер. Открываем SerialMonitor. Берем пульт управления от телевизора или другой пульт ИК. Подносим к нашему приемнику TSOP 4836 подключенному к LaunchPad и начинаем нажимать на кнопки пульта, в терминал будут выводиться значения кнопок пульта в десятичной системе исчисления. Для того что бы получить значения в двоичной системе необходимо изменить строчку добавив в каком виде вы хотите получить данные.

[PHP]Serial.println(results.value, BIN); // Выводим числовое значение нажатой клавиши на пульте ИК в двоичной системе[/PHP]

Изображение

На ИК сигналах можно скажем передавать килог, тем самым сделать неперехватываемую штатку цз.
Аватара пользователя
andynvkz
Фрикер
Сообщения: 879
Зарегистрирован: 03 ноя 2011, 14:40

Re: Передача ИК сигналов

Сообщение andynvkz »

как все сложно то...

еще в 99г. собирал, программы WinLIRC, Girder, uICE
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
DIVER_SANT
Модератор
Сообщения: 2637
Зарегистрирован: 27 мар 2011, 08:15
Поблагодарили: 15 раз

Re: Передача ИК сигналов

Сообщение DIVER_SANT »

как все сложно то...

еще в 99г. собирал, программы WinLIRC, Girder, uICE
Ну прикрути эту схему к ноуту-думаю устанешь.
Опять же топик про то что можно управлять домашними бытовыми устройствами с помощтю этого.Хот у меня была идея управлять от доп брела старлайна по ВЧ
Но не смог разобраться как проверять брел на принадлежность-чтоб от левых не срабатывала схема.Понимаю что надо сверять серийник и номер кнопки но програмно не догоняю. :helllp:
Аватара пользователя
andynvkz
Фрикер
Сообщения: 879
Зарегистрирован: 03 ноя 2011, 14:40

Re: Передача ИК сигналов

Сообщение andynvkz »

DIVER_SANT писал(а):Хот у меня была идея управлять от доп брела старлайна по ВЧ
Но не смог разобраться как проверять брел на принадлежность-чтоб от левых не срабатывала схема.Понимаю что надо сверять серийник и номер кнопки но програмно не догоняю. :helllp:
зачем старлайн ? этож и прием свой нужно писать, в сс1101 уже все есть (пакетный режим)

Добавлено через 23 минуты
DIVER_SANT писал(а):Но не смог разобраться как проверять брел на принадлежность-чтоб от левых не срабатывала схема.Понимаю что надо сверять серийник и номер кнопки но програмно не догоняю. :helllp:
посмотри как работает умная глушилка у Джокера, вот тебе и готовое решение фильтра чужих брелов
Аватара пользователя
DIVER_SANT
Модератор
Сообщения: 2637
Зарегистрирован: 27 мар 2011, 08:15
Поблагодарили: 15 раз

Re: Передача ИК сигналов

Сообщение DIVER_SANT »

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