sonyps4.ru

Простая схема инфракрасного управления. Пульты для дистанционного управления объектами

Микросхема контроллера коллекторного электродвигателя, ИК-пульт дистанционного управления, Радиомодуль 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. Плагины для работы с обычными ИК адаптерами, по заверению автора, ссейчас только разрабатываются. Признаться, сам я не паял эту схему, поэтому эти и дальнейшие высказывания лучше отнести к теоретической части. По этому, разумнее дальше без лишних слов дать несколько аннотированных ссылок.

Завязка или «Как начинался девайс»

…Когда я пришёл, Виктория сидела на диване, уставившись в телевизор. День выдался тяжёлый, поэтому ей не хотелось ничего делать. Несколько минут мы смотрели какой-то попсовый сериал, потом он закончился, и Вика выключила телевизор. В комнате стало темно. На улице шумел дождь, и от этого казалось, что дома тоже холодно.
Вика поднялась с дивана и принялась, на ощупь, искать выключатель от светильника. Настенный светильник висел, почему-то, не у дивана, а на другой стене и приходилось топать через всю комнату, чтобы зажечь свет. Когда она, наконец, включила его, комната наполнилась тёплым светом лампочки накаливания.
Около меня, на помятой простыне, лежал пульт от телевизора. Нижние кнопки без опознавательных знаков и, скорее всего, не использовались. И тут у меня возникла интересная мысль…
— Вик, а хочешь, я сделаю так, что твой светильник можно будет пультом от ящика включить? Там даже кнопки лишние есть…

Концепция
Наше устройство должно уметь принимать сигнал с ИК-пульта, отличать «свою» кнопку от других, и управлять нагрузкой. Первый и последний пункты простые, как топор. А вот со вторым немного интереснее. Я решил не ограничиваться каким-то конкретным пультом (Почему? – «Не интересно так!»), а сделать систему, которая может работать с разными моделями пультов от разной техники. Лишь бы ИК-приёмник не спасовал, и уверенно ловил сигнал.

Ловить сигнал будем с помощью фотоприёмника . Причем не каждый приёмник подойдёт – несущая частота должна совпадать с частотой пульта. Несущая частота приёмника указана в его маркировке: TSOP17xx – 17 это модель приёмника, а хх – частота в килогерцах. А несущую частоту пульта можно найти в документации или в инете. В принципе, сигнал будет приниматься, даже если частоты не совпадают, но чувствительность будет фиговой – придётся тыкать пультом прямо в приёмник.

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

В памяти устройства хранятся контрольные точки. Для каждой такой точки нужно записать время и состояние выхода с ИК-приёмника – 0 или 1.
При получении сигнала с пульта, МК будет последовательно проверять каждую точку. Если все точки совпали – то это была та самая кнопка, на которую устройство запрограммировали. А если выход с приёмника хотя-бы в одной точке не совпал с шаблоном, то устройство никак не отреагирует.

Впрочем, баги никто не отменял! Возможно, что, сигнал будет отличаться от шаблона, но
в контрольных точках значения будут одинаковые. Получится ложное срабатывание. Казалось-бы – редкостное западло, и бороться с ним пипец сложно! Но на самом деле не всё так плохо (а местами даже хорошо).

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

Во-вторых мелкий шум (обычно выглядит, как редкие короткие импульсы) в большинстве случаев идёт лесом – ибо если он не попадёт прямо на контрольную точку, то нифига не повлияет на систему. Значит у нас есть естественная защита от шума.

Второй тип ошибок (aka «Пропуск команды») бывает из-за того, что точка расположена слишком близко к фронту импульса (к тому месту, где сигнал на выходе приёмника меняет свой уровень).
Представь себе, что через несколько микросекунд после контрольной точки сигнал должен меняться с HIGH на LOW. А теперь представь, что пульт выдал команду чуть быстрее, чем обычно (довольно часто случается). Фронт импульса сдвинулся во времени, и теперь он происходит ДО контрольной точки! Выход с приёмника не совпадёт с шаблоном и система сбросится.
Чтобы этого не происходило, нужно размещать контрольные точки подальше от фронтов.

«Всё круто» — скажешь ты – «Но откуда мне взять контрольные точки?». Вот и я над этим долго тупил. В результате решил доверить расстановку точек тебе.
На устройстве есть джампер J1. Если при включении он замкнут – устройство будет тупо передавать через UART всё, что выдаёт ИК-приёмник. На другой стороне провода эти данные принимает моя программа, которая выдаёт на экран компа импульсы с TSOP’а. Тебе остаётся только мышкой раскидать по этому графику контрольные точки, и прошить их в EEPROM. Если возможности использовать UART нету, то на помощь приходит джампер J2. Когда он замкнут – устройство не выдаёт данные по UART, а складывает их в EEPROM.


Схема
Простая до безобразия. В качестве контроллера я взял ATTiny2313. Частота 4 мегагерца, от кварца, или внутренней RC цепочки.
На отдельный разъём выведены линии RX и TX для связи, и питание. Туда – же выведен RESET для того чтобы можно было перепрошивать МК, не вынимая из устройства.
Выход фотоприёмника подключается к INT0, он подтянут к питанию через резистор в 33к. Если будут сильные помехи, то можно поставить туда резистор поменьше, например, 10к.
На пинах D4 и D5 висят джамперы. Jumper1 на D5 и Jumper2 на D4.

К пину D6 подцеплен силовой модуль. Причём симистор я взял самый мелкий из тех, что у меня были – BT131. Ток у него 1А – не круто, но зато корпус не слишком большой — ТО92. Для мелкой нагрузки самое то. Опторазвязку я сделал на MOC3023 – у неё нет датчика пересечения нуля, а значит она подходит для плавного управления нагрузкой (здесь я это так и не реализовал).

Порт B почти полностью выведен на разъём – туда можно прицепить индикатор или ещё что-нибудь. Этим-же разъёмом я пользуюсь при прошивке девайса. Пин B0 занят светодиодом.

Питается всё это дело через LM70L05 и диодный мост. То есть на вход можно подавать переменное напряжение, например, с трансформатора. Главное, чтобы оно не превышало 25 Вольт, а то умрёт либо стабилизатор, либо кондер.

Плата получилась вот такая:


Да, она немного отличается от той платы, которая лежит в архиве. Но это не значит, что я сделал себе убер-продвинутую плату, а вам подсунул демо версию:). Напротив, моя плата имеет пару недостатков, которых нет в конечной версии: у меня не выведена на штырёк ножка RESET, и светодиод висит на PB7. А это не очень способствует внутрисхемному программированию.

Прошивка
Устройство может работать в двух режимах. В первом – когда J2 замкнут – оно просто передаёт импульсы с фотоприёмника в UART. С него и начнём:

UART работает на скорости 9600, т.е, при частоте 4МГц в регистр UBRR записываем 25.

…ждём, пока не дёрнется ножка фотоприёмника. Как только она опустилась (изначально-то она болтается на pull-up резисторе) мы запускаем таймер (TIMER/COUNTER1, тот, что на 16 бит) и врубаем прерывание INT0 на любое изменение входа – any logical change (ICS00 = 1). Таймер тикает… ждём.

Импульс с пульта кончился – выход с фотоприёмника взметнулся вверх, прерывание сработало. Теперь записываем в память значение таймера и сбрасываем таймер. Ещё нужно инкрементировать указатель записи, чтобы в следующем прерывании записать в другую ячейку памяти.

Ещё импульс… выход дёргается… прерывание… запись значения таймера в память… сброс таймера… указатель + 2 (мы пишем два байта за раз)…

И так будет продолжаться до тех пор, пока не станет ясно, что конец (оперативки) близок. Или, пока сигнал не кончится. В любом случае, мы стопорим таймер и отключаем прерывания. Потом, не спеша выкидываем всё, что насобирали, в UART. Или, если J2 замкнут – в EEPROM.

В конце можно затупить в бесконечный цикл и ждать ресета – миссия выполнена.
А на выходе получится последовательность чисел. Каждое из них – время между изменениями состояния выхода TSOP’a. Зная, с чего началась эта последовательность (А мы знаем! Это перепад с HIGH на LOW), мы можем восстановить всю картину:

После инициализации сидим и ждём, пока TSOP дёрнется. Как только это случилось – читаем из EEPROM первую точку, и в простом цикле тупим столько, сколько там написано. При этом время считаем пачками по 32us. Выйдя из ступора, проверяем – что-там на выходе приёмника.

Если выход не совпал с тем, что мы ожидали – это не наша команда. Можно спокойно дожидаться конца сигнала и начинать всё сначала.

Если выход соответствует нашим ожиданиям – загружаем следующюю точку и проверяем её. Так до тех пор, пока не наткнёмся на точку, время которой = 0. Это значит, что точек больше нет. Значит вся команда совпала, и можно дёргать нагрузку.

Вот так, получается, простенький алгоритм. Но ведь чем проще, тем надёжнее!

Софтина
Сначала я думал сделать автоматическое запоминание шаблона. То есть ты замыкаешь джампер, тыкаешь пультом в TSOP, а МК сам расставляет контрольные точки и складывает их в EEPROM. Потом стало ясно, что идея бредовая: более-менее адекватный алгоритм получится чересчур сложным. Или не будет универсальным.

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


Приучаем девайс отзываться на нужную кнопку пульта:

1) Замыкаем перемычку J1.

2) Подключаем UART. Если возможности его подключить нету, то замыкаем джампер J2. Тогда устройство будет скидывать данные в EEPROM.

3) Врубаем питание.

4) Если мы решили юзать UART, то запускаем софт и смотрим на строку состояния (внизу окошка). Там должно быть написано “COM порт открыт”. Если не написано, то ищем косяк в подключении и тыкаем кнопу «Подключить».

5) Берём пульт и тыкаем нужной кнопкой в TSOP. Как только девайс почует, что сигнал пошёл – загорится светодиод. Сразу после этого устройство начнёт передавать по UART (или писать в EEPROM) данные. Когда передача закончилась, светодиод гаснет.

6.1) Если работаем по UART, то жмём кнопу «Загрузить по UART». И радуемся надписи «Загрузил график…» в строке состояния.

6.2) Если работаем через EEPROM, то читаем программатором EEPROM память и сохраняем в *.bin файл. (Именно bin!). Потом нажимаем в программе кнопку «Загрузить.bin» и выбираем файл с EEPROM.

7) Смотрим на загрузившийся график – это сигнал с TSOP’a. На боковой панели есть ползунок – им можно менять масштаб. Теперь тыкаем мышкой по графику – ставим контрольные точки. Правой кнопкой точки удаляются. Только не нужно их ставить слишком близко к фронтам. Получается примерно так:


8) Нажимаем «Сохранить.bin» и сохраняем точки. Потом прошиваем этот файл в EEPROM. Так-как мы запихиваем время между двумя точками в 7 бит, то оно ограничено 4мс. Если время между двумя точками превысит это значение – программа откажется запихивать точки в файл.

9) Снимаем джамперы. Перезагружаем устройство. Готово!

Видео с испытаний

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

Один из самых ранних образцов устройств для дистанционного управления придумал и запатентовал Никола Тесла в 1893 году .

Первый пульт ДУ для управления телевизором был разработан американской компанией Zenith Radio Corporation в начала 1950-х . Он был соединён с телевизором кабелем . В 1955 году был разработан беспроводной пульт Flashmatic , основанный на посылании луча света в направлении фотоэлемента . К сожалению, фотоэлемент не мог отличить свет из пульта от света из других источников. Кроме того, требовалось направлять пульт точно на приёмник.

Пульт ДУ Zenith Space Commander 600

Универсальный пульт Harmony 670

Военное дело

  • В Первой мировой войне немецкий флот применял специальные лодки для борьбы с прибрежным флотом. Они приводились в движение двигателями внутреннего сгорания и управлялись дистанционно с береговой станции

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

  • Рабоче-крестьянская Красная армия использовала дистанционно-управляемые танки в Советско-финской войне 1939-1940 годов и в начале Великой Отечественной войны . Телетанк управлялся по радиосвязи из управляющего танка на расстоянии 500-1500 м, таким образом, получалась телемеханическая группа. Красная армия выставила по меньшей мере два телетанковых батальона в начале ВОВ. Также у Красной армии были дистанционно-управляемые катера и экспериментальные самолёты. Между тем, немецкие танковые батальоны были полностью радиофицированы, каждый танк имел на своем борту рацию, что говорит об огромном превосходстве немецкой техники и промышленности к началу войны.
  • Подробная информация о применении ПДУ для средств спецназначения в наше время носит преимущественно закрытый характер

Авиация

Практически все средства авионики и другое бортовое оборудование ЛА управляются с помощью пультов ДУ в кабине пилотов, ДУ имеется также в наземном оборудовании

Водный транспорт

Значительная часть судового оборудования управляется с помощью ПДУ

Железная дорога и метро

ПДУ применяются для управления оборудованием поездов, путевым оборудованием, оборудованием станций (эскалатор, освещение и т. д.)

Промышленное производство и строительство

Некоторые виды производственного и строительного оборудования могут управляться с помощью ПДУ

Научно-исследовательские и производственно технические лаборатории

Некоторые виды лабораторного оборудования управляются с помощью ПДУ

Космос

  • Технология дистанционного управления также использовалась в исследованиях космоса. Советский Луноход дистанционно управлялся с Земли. Прямое дистанционное управление космическими аппаратами на бо́льших расстояниях непрактично из-за возрастающей задержки сигнала.
  • Для управления оборудованием и двигателями космического корабля в кабине космонавтов имеются пульты ДУ

Связь и другие системы информационных технологий

Дистанционное управление могут иметь ретрансляторы, радиомаяки, а также связные радиостанции, радиолокаторы и другие системы

Электроэнергетика

В электроэнергетике ПДУ используются для управления объектами энергосистемы и управления энергопотреблением

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

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

Инфракрасное, или тепловое излучение - это электромагнитное излучение, которое испускает любое нагретое до определенной температуры тело. ИК диапазон лежит в ближайшей к видимому свету области спектра, в его длинноволновой части и занимает область приблизительно от 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 фильтром для увеличения чувствительности. Микроконтроллер производит помеху широкого спектра на линиях питания, что может повлиять на работу приемника.

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

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



Загрузка...