Ик дистанционное управление. Модули мастер кит с инфракрасным управлением

19.04.2019

В июньском номере Railway Modeller за 2007г. была статья про 0-масштабный макет Бодмина (Bodmin), сделанный Рэем Грином (Ray Green) с использованием инфракрасного пульта управления поездами. Неужели мои молитвы были услышаны? Я занялся поисками и спустя несколько дней навестил Стива Лейланда (Steve Leyland) из компании MicroMotive, которая расположена в Клэй-Кросс, Дербишир (Clay Cross Derbyshire), чтобы увидеть их инфракрасную систему Красная Стрела” (“Red Arrow”). Естественно, домой я вернулся с инфракрасной системой: пультом управления и сумкой деталей, необходимых для оснастки двух локомотивов.

Пульт управления

Детали - (слева направо)

  • Блок управления
  • Геркон
  • ИК-приёмник
  • Резисторы ограничительного выключателя

(внимание : аккумулятор и соединитель к нему в комплект не входят.)


Испытательная установка

Прочитав несколько раз инструкцию, я собрал испытательную установку, чтобы проверить детали, перед тем как оснащать ими локомотив.



Для испытаний я использовал всего один 3х-вольтовый моторчик, но всё отлично заработало.

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

На фото показан блок управления, помещённый сверху тендера Jubilee Bachmann , для того, чтобы наглядно увидеть соотношение размеров.


Блок управления на тендере

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

Что же, для меня это оказалось непростой задачей. Разбирая Jubilee, я вскоре понял, что в нём нет как таковых токосъёмников, вместо них использовались два разделённых металлических шасси с двумя пружинами, прижимающими контакты мотора. Уфф.

Разделённые шасси



Как показано на снимке, две маленькие пружинки располагались в отверстиях. Они прижимались к контактам, расположенным на корпусе мотора. Я решил удалить пружинки (сохранив их на будущее), заизолировать контакты и вывести два провода из локомотива к тендеру.

Заизолированные контакты


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

Питание мотора в сборе


Я собрал локомотив и просто подключил его к 9-вольтовому аккумулятору. Первое, что я заметил (я использовал новый стандартный PP3 аккумулятор), была явная потеря мощности, и локомотив ехал медленнее, чем обычно. Я снова разобрал и собрал локомотив - результат был прежним, тогда я поставил его на рельсы, и он поехал со своей обычной скоростью, возможно проблема была в том, что я подключил 9- вместо 12- вольтового аккумулятора. Это может стать проблемой для длинного состава, но, так как у меня оставалось ещё много работы, поверку мощности я отложил на потом.

Теперь разделывание, простите, оперирование тендера.

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


Отверстие для кабельной стяжки


На пластины я положил батарейку и блок управления, поместив их друг на друга. Похоже на это:

Ярусное расположение (обратите внимание на маленькую деталь, приклеенную к концу связки - это монтажная пластина - см. дальше)


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

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

Герконовый переключатель
При помощи двустороннего скотча переключатель был прикреплён к задней стенке нижней части корпуса тендера.


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



После этого мне нужно было смонтировать выпрямительный мост и резисторы (по-моему, на 120Ом) Большой необходимости в этом нет, но это избавляет от разборки тендера каждый раз, когда аккумулятор разряжается. Я хотел иметь возможность заряжать аккумулятор, не снимая локомотив с рельсов.

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

Я перебирал разные варианты.

И тут я вспомнил любимый совет своего папы, который он мне всегда давал, когда я что-нибудь чинил: “Если деталь не становится на своё место - переверни её другой стороной и попробуй снова.”

Точно, папа, спасибо. Я пытался установить все детали на шасси в надежде, что верхняя часть станет на место. Теперь же я все детали разместил в обратном порядке в корпусе тендера, что оказалось гораздо проще.

Но места всё равно не хватало, поэтому я убрал балластные пластины и их держатели, а также расположил ИК-приёмник на крыше, но с краю от центра.


Детали, заключённые в корпус тендера


На этом фото видно, что ИК-приёмник приклеен (эпоксидным клеем) к крыше тендера, но смещён в сторону, чтобы оставалось достаточно места для аккумулятора.

Внутренний вид


и ещё одно изображение сверху - мне ещё нужно почистить верх, так как клей выступил через зазоры.

Вид сверху


Ура Всё подошло - но будет ли это работать?


Испытания в работе

На снимке показано испытание паровоза, к которому ещё не присоединён тендер. ЗАРАБОТАЛО С ПЕРВОГО РАЗА. Фотоаппарат не смог передать быстрое вращение колёс.
(обратите внимание: Зелёные провода нужны для системы подзарядки аккумулятора).

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

Проблемы, возникшие в процессе работы и требующие решения:


1) Явная нехватка напряжения (9В вместо 12В) - хватит ли его, чтобы тянуть состав?
2) Система позволяет запрограммировать 99 локомотивов. По умолчанию в заводских настройках запрограммировано 27, и я не смог их перепрограммировать. Больше 27 не получилось.

3) Прочитав инструкцию, я узнал, что мне нужен ещё и радиатор для транзистора. У меня очень смутное представление как о том, что это такое и для чего он нужен, так и какого он размера, где его устанавливать и где его взять.
4) Ещё нужно установить токосъемные контакты для подзарядки аккумулятора. Сделать их на колёсах тендера (что проще), или же прикрепить к разделённым шасси локомотива (что эффективнее)?
5) У паровоза Jubilee закрытый корпус тендера формируется за счёт формованной крышки, создающей эффект наполненности углём. А как быть с паровозами, тендеры которых пустые или в них мало угля?
6) Плохо ли скажется на аккумуляторе постоянная подзарядка?
7) После присоединения, паровоз и тендер будут связаны навсегда проводами. Найду ли я для этого подходящий микроконнектор?

Я также пришёл к выводу, что:
1) Данная конструкция не подойдёт для паровозов без тендера.
2) Данная конструкция не подойдёт для паровозов, мотор которых установлен в тендере.

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

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

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

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

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

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

Рассмотрим три устройства разной степени сложности и назначения. Для удобства основные характеристики всех устройств сведены в таблицу, расположенную в конце обзора.

  1. Инфракрасный барьер предназначен для применения в качестве датчика охранных систем, при спортивных соревнованиях в качестве фотофиниша, а также для дистанционного управления устройствами автоматики на расстоянии до 50 метров.

Устройство состоит из двух модулей – передатчика и приемника. Передатчик собран на сдвоенном интегральном таймере NE556 и формирует прямоугольные импульсы с заполнением частотой 36 кГц. Таймер имеет достаточно мощный токовый выход для того, чтобы непосредственно управлять подключенными к нему инфракрасными светодиодами.

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

Излученный сигнал принимается приемником, основой которого является специализированная микросхема, детектируется пиковым детектором и поступает на усилитель тока на транзисторе, к которому подключено реле, позволяющее коммутировать ток до 10А.

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

Пример применения инфракрасного барьера совместно с набором «Цифровая лаборатория» из уже упомянутой серии Азбука электронщика можно посмотреть .

  1. – это выключатель освещения с управлением от любого пульта дистанционного управления на инфракрасных лучах.

Модуль позволяет управлять освещением или другими электроприборами, используя любую кнопку пульта ДУ.

Как правило, на каждом пульте ДУ есть редко используемые или вовсе не используемые кнопки. Применив этот выключатель, вы сможете включать и выключать люстру, вентилятор и т.п. с того же пульта ДУ, с которого вы управляете телевизором или музыкальным центром.

При подаче питания модуль в течение 10 секунд «ждет» получения сигнала, соответствующего выбранной кнопке пульта, и по истечению этого времени «запоминает» нажатую кнопку. После этого для срабатывания реле модуля достаточно один раз нажать эту кнопку, при повторном нажатии реле выключится. Таким образом, реализуется режим управления типа «триггер». Модуль остается запрограммированным даже при отключении его питания.

Следует отметить, что модуль «помнит» свое последнее состояние при отключении питания.

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

Реле модуля может коммутировать мощность до 1500 Вт.

  1. Комплект беспроводного управления по ИК-каналу имеет собственный пульт ДУ с 4-мя кнопками и 4 канала управления по 2000 Вт каждый.

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

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

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

Пульт комплекта питается от элемента CR2032.

Управление нагрузкой с большей мощностью для всех рассмотренных устройств можно осуществить с помощью модулей расширения:

До 4000 Вт: подойдет модуль расширения ;

До 8000 Вт: подойдет модуль расширения .

Модули с инфракрасным управлением

Артикул

Название

Напряжение питания

Число каналов управления

Максимальная мощность нагрузки одного канала, Вт

Примеры применения

Инфракрасный барьер

12В постоянный

Охранные устройства; спортивные соревнования; робототехника; устройства автоматики

Выключатель освещения

12В постоянный;

220В переменный

Управление освещением, вентиляцией, отоплением

Комплект беспроводного управления

12В постоянный

Реверсивное управление коллекторными двигателями; 4-х канальное управление бытовыми приборами

Инфракрасный пульт дистанционного управления — один из самых простых способов взаимодействия с электронными приборами. Так, практически в каждом доме есть несколько таких устройств: телевизор, музыкальный центр, видеоплеер, кондиционер. Но самое интересное применение инфракрасного пульта — дистанционное правление роботом. Собственно, на этом уроке мы попытаемся реализовать такой способ управления с помощью популярного контроллера Ардуино Уно.

1. ИК-пульт

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

На таком пульте есть 10 цифровых кнопок и 11 кнопок для манипуляции с музыкой: громкость, перемотка, play, stop, и т.д. Для наших целей более чем достаточно.

2. ИК-датчик

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

Для этого урока воспользуемся популярным ИК-датчиком VS1838B , который обладает следующими характеристиками:

  • несущая частота: 38 кГц;
  • напряжение питания: 2,7 — 5,5 В;
  • потребляемый ток: 50 мкА.

Можно использовать и другие датчики, например: TSOP4838, TSOP1736, SFH506.

3. Подключение

Датчик имеет три вывода (три ноги). Если посмотреть на датчик со стороны приёмника ИК сигнала, как показано на рисунке,

  • то слева будет - выход на контроллер,
  • по центру - отрицательный контакт питания (земля),
  • и справа - положительный контакт питания (2.7 — 5.5В).

Принципиальная схема подключения

Внешний вид макета

4. Программа

Подключив ИК-датчик будем писать программу для Ардуино Уно. Для этого воспользуемся стандартной библиотекой IRremote , которая предназначена как раз для упрощения работы с приёмом и передачей ИК сигналов. С помощью этой библиотеки будем принимать команды с пульта, и для начала, просто выводить их в окно монитора последовательного порта. Эта программа нам пригодится для того, чтобы понять какой код дает каждая кнопка.

#include "IRremote.h" IRrecv irrecv(2); // указываем вывод, к которому подключен приемник decode_results results; void setup() { Serial.begin(9600); // выставляем скорость COM порта irrecv.enableIRIn(); // запускаем прием } void loop() { if (irrecv.decode(&results)) { // если данные пришли Serial.println(results.value, HEX); // печатаем данные irrecv.resume(); // принимаем следующую команду } }

Загружаем программу на Ардуино. После этого, пробуем получать команды с пульта. Открываем монитор последовательного порта (Ctrl+Shift+M), берём в руки пульт, и направляем его на датчик. Нажимая разные кнопочки, наблюдаем в окне монитора соответствующие этим кнопкам коды.

Проблема с загрузкой программы

В некоторых случаях, при попытке загрузить программу в контроллер, может появиться ошибка:

TDK2 was not declared In his scope

Чтобы ее исправить, достаточно удалить два файла из папки библиотеки. Заходим в проводник. Переходим в папку, где установлено приложение Arduino IDE (скорее всего это «C:\Program Files (x86)\Arduino»). Затем в папку с библиотекой:

…\Arduino\libraries\RobotIRremote

И удаляем файлы: IRremoteTools.cpp и IRremoteTools.h. Затем, перезапускаем Arduino IDE, и снова пробуем загрузить программу на контроллер.

5. Управляем светодиодом с помощью ИК-пульта

Теперь, когда мы знаем, какие коды соответствуют кнопкам пульта, пробуем запрограммировать контроллер на зажигание и гашение светодиода при нажатии на кнопки громкости. Для этого нам потребуется коды (могут отличаться, в зависимости от пульта):

  • FFA857 — увеличение громкости;
  • FFE01F — уменьшение громкости.

В качестве светодиода, используем встроенный светодиод на выводе №13, так что схема подключения останется прежней. Итак, программа:

#include "IRremote.h" IRrecv irrecv(2); // указываем вывод, к которому подключен приемник decode_results results; void setup() { irrecv.enableIRIn(); // запускаем прием } void loop() { if (irrecv.decode(&results)) { // если данные пришли switch (results.value) { case 0xFFA857: digitalWrite(13, HIGH); break; case 0xFFE01F: digitalWrite(13, LOW); break; } irrecv.resume(); // принимаем следующую команду } }

Загружаем на Ардуино и тестируем. Жмем vol+ — светодиод зажигается. Жмем vol- — гаснет. Теперь, зная как это все работает, можно вместо светодиода управлять двигателями робота, или другими самодельными микроэлектронными устройствами!

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

Микросхема контроллера коллекторного электродвигателя, ИК-пульт дистанционного управления, Радиомодуль 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;