Подключение ИК-приемника к Arduino: инфракрасная станция и пульт

Вопросы и ответы

Технические параметры

  • Модель: HX1838
  • Дистанционный датчик: VS1833B
  • Напряжение питания: 3,3 В — 5 В
  • Количество кнопок: 21 шт.
  • Расстояние приема: до 8 м (зависит от внешних факторов).
  • Размер платы модуля: 24 мм x 16 мм x 33 мм
  • Размер пульта дистанционного управления: 87 мм x 40 мм x 7 мм

Общие сведения

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

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

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

Назначение пина

  • VCC: блок питания модуля
  • GND: модуль питания
  • D0: цифровой выход

Подключение модуля HX1838 с ИК пультом к Arduino

Обязательные реквизиты:

  • Arduino UNO R3 x 1 шт.
  • Модуль HX1838 с ИК-пультом — 21 кнопка x 1 шт.
  • Кабель DuPont, 2,54 мм, 20 см, FM (мама-папа) x 1
  • Кабель USB 2.0 AB x 1 шт.

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

Программа:
После сборки схемы вы можете загрузить и установить библиотеку «IRremote», затем загрузить или скопировать эскиз и загрузить его на плату Arduino.

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

Используя этот пример, вы можете получить карту ключей. Кстати, при непрерывном нажатии на клавишу мы получаем код 0XFFFFFFFF.

Подключение ИК датчика препятствий к Arduino

Подключить ИК-модуль к Arduino предельно просто: мы подключаем VCC и GND модуля к + 5V и GND Arduino, а выход OUT датчика — к любому цифровому или аналоговому выводу Arduino. Подключу к аналоговому входу А7.

Задача

Светодиод с дистанционным управлением.

Программа

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

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

сенсор-ir

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

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

TDK2 не был заявлен в его объеме

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

… Ардуино библиотеки RobotIRremote

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

Что такое инфракрасный свет

Инфракрасное излучение — это тот же свет, который мы видим вокруг себя. Единственное отличие от обычного дневного света заключается в частоте и длине волны. Инфракрасное излучение находится за пределами диапазона света, видимого человеческим глазом. Поэтому мы этого не видим. Но если бы его увидели, это был бы тот же свет, что и луч факела или лампы.

Потому что ИК-свет — это разновидность света. Для работы ИК-приемника требуется прямая видимость между приемником и источником. Он не может работать через стены, как Wi-Fi или Bluetooth.

Спектр электромагнитного излучения
Спектр электромагнитного излучения
Спектр электромагнитного излучения

Примеры

Примеры для библиотеки NecDecoder 2.x!

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

Перед использованием вам необходимо узнать коды кнопок пульта дистанционного управления, загрузить этот пример и открыть дверь:

Нажимаем кнопку на пульте — получаем его код

Схема сборки

Составим следующую схему:

IR приемник Arduino

Для считывания ИК-сигнала вам понадобится сама плата Arduino, макетная плата, приемник ИК-сигнала и перемычки. Существует много разных приемников, но лучше всего использовать TSOP312 или другие, подходящие для Arduino. Данные с консоли на приемник можно передавать по протоколу RC5 или NEC.

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

Инфракрасный ИК-приемник Arduino

Инфракрасный ИК-датчик Arduino

Для удобства можно использовать готовые модули ИК-приемника.

ИК-приемник

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

ИК-выходы приемника подключены к Arduino к GND, 5V и портам цифрового входа. Ниже представлена ​​схема подключения датчика к 11-му цифровому выводу.

Схема подключения инфракрасного ИК-датчика Arduino

Вот как выглядит схема с модулем инфракрасного приемника:

Скетч Arduino для инфракрасного датчика препятствий

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

Напоминаю, что Arduino использует 10-битный АЦП, поэтому значение аналогового сигнала кодируется числом от 0 до 1023. При использовании аналогового входа Arduino вы вряд ли получите «0» или «1023». «от датчика, поэтому лучше использовать порог, например равный 100 (так на скетче r <100). При использовании цифрового вывода Arduino для считывания показаний инфракрасного датчика вы можете написать (r == LOW) или (r == 0) или (r <1).

Хорошая статья об аналоговых измерениях на Arduino.

Думаю, вполне понятно, как найти применение такому модулю в ваших проектах. Необходимо периодически опрашивать состояние на выходе модуля, и как только напряжение изменится с ВЫСОКОГО на НИЗКОЕ, предпринять необходимые действия: изменить направление движения робота, включить свет в комнате и т.д.

Библиотека IRremote.h

Для комфортной работы с модулем Arduino готова библиотека IRremote.h. Загрузите и установите его с помощью диспетчера библиотек. А затем откройте программный код IRreceiveDump из примеров.

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

Загружаем программу в Arduino, подключаем схему и пробуем пульт.

Считывание данных дистанционного управления на модуле KY-022
Считывание данных дистанционного управления на модуле KY-022
Считывание данных дистанционного управления на модуле KY-022

Помимо самого сигнального кода, программа отображает название протокола, используемого пультом дистанционного управления. В нашем случае это NEC. Пульт от телевизора Samsung будет работать по собственному протоколу. Вы можете узнать больше о различных протоколах, например, здесь.

Данные с пульта ДУ Samsung на модуле KY-022
Данные с пульта ДУ Samsung на модуле KY-022
Данные с пульта ДУ Samsung на модуле KY-022

Необходимые компоненты

Итак, нам понадобятся:

  • 1 пульт дистанционного управления. Почти все ИК-пульты будут работать.
  • Плата Arduino, макет, перемычка

В качестве светодиода мы будем использовать встроенный светодиод Arduino.

Библиотеки

  • IRremote — очень тяжелая «стандартная» библиотека общего назначения
  • IRLremote — компактная и продвинутая библиотека NicoHood
  • NecDecoder — наша библиотека для интерфейса NEC (Hash), который запускает все китайские пульты дистанционного управления

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

ИК приемник KY-022

Модуль KY-022 представляет собой приемник ИК-сигнала, сигнальный светодиод и резистор к нему. Модуль имеет три контакта. Источник питания 5 В, заземление и вывод данных. От него мы получим сигнальный код.

Подключаем модуль к Arduino согласно схеме.

Принципиальная схема подключения ИК-приемника KY-022

Принципиальная схема подключения ИК-приемника KY-022

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

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

  • 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); расставаться; case 0xFFE01F: digitalWrite (13, LOW); расставаться; } irrecv.resume (); // принимаем следующую команду } }

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

Результат

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

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

Эксперимент 2

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

Необходимые комплектующие

  • 1 х пульт от телевизора;
  • 1 х ИК-приемник;
  • 1 х Arduino Mega 2560;
  • 2 светодиода;
  • 2 резистора по 330 Ом;
  • 1 плата для разработки;
  • перемычки.

Схема соединений

Схема подключения точно такая же, как в эксперименте 1.

Код для эксперимента 2

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

Читайте также: Сенсорная кнопка своими руками: принцип работы и подключение к Ардуино

Оцените статью
Блог про Arduino