ИК датчик KY-022 Ардуино, подключение ик пульта

Рассмотрим подключение ИК приемника и пульта к Ардуино. Расскажем какую библиотеку использовать для ИК-приемника, продемонстрируем программу для проверки работы IR приемника с пульта дистанционного управления и разберем команды библиотеки IRremote.h. Обратите внимание, что инфракрасный датчик KY-022 подходит не для всех пультов дистанционного управления, так как частота сигнала может отличаться.
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- IR пульт и IR приемник KY-022
- светодиод и резистор
- сервопривод
- макетная плата
- коннекторы
- библиотека IRremote.h
- Включение светодиодов от ИК пульта Arduino
- Управление светильником от датчика HC-SR04
- Плавное включение и выключение светодиодов
IR receiver широко используются в бытовой технике благодаря своей доступности и простоте использования. Эти устройства позволяют дистанционно управлять приборами и могут быть найдены во всех типах устройств. ИК сенсор способен принимать и обрабатывать сигнал в виде импульсов заданной длительности и частоты. Несмотря на все эти преимущества, модуль Bluetooth постепенно набирает большую популярность.
ИК датчик Ардуино распиновка, характеристики

Характеристики ИК-пульта управления и ИК-приемника
- Максимальное расстояние: до 8 м
- Частота модуляции: 38 кГц
- Эффективный угол: 60 градусов
- Количество кнопок управления: 17
- Потребляемый ток в режиме покоя: 3-5uA
- Потребляемый ток в режиме передачи: 3-5mA
ИК датчик обычно имеет три ножки и состоит из следующих компонентов: фотодиод, усилитель, полосовой фильтр, амплитудный детектор, интегрирующий фильтр и выходной транзистор. Сигнал поступает на усилитель, а затем на полосовой фильтр, который настроен на фиксированную частоту 30, 33, 36, 38, 40 и 56 кГц и защищает приемник KY-022 от помех. Помехи могут быть вызваны радиоволнами и любым бытовым прибором.
Как подключить пульт и ИК приемник к Ардуино

Для подключения ИК-приемника используйте три вывода, которые подключаются к — GND, 5V и любому цифровому выводу. Для начала рекомендуется использовать напряжение 3,3 В, чтобы не повредить датчик. Подключите IR приемник (модуль KY-022) к Ардуино в соответствии со схемой и подключите светодиод к пину 12. Перед загрузкой программы необходимо установить IRremote.h, которая не входит в состав стандартных библиотек.
Скетч управление светодиодом от ИК пульта Ардуино
#include "IRremote.h" IRrecv irrecv(A1); // ir receiver arduino decode_results results; #define LED 12 void setup() < Serial.begin(9600); irrecv.enableIRIn(); pinMode(LED, OUTPUT); >void loop() < if (irrecv.decode(&results)) < Serial.println(results.value); if (results.value == 16718055) < digitalWrite(LED, HIGH); >if (results.value == 16724175) < digitalWrite(LED, LOW); >irrecv.resume(); > >
Подключение сервомотора и ИК датчика к Arduino

ИК пульт Arduino может использоваться во многих проектах, включая управление сервоприводом от ИК-приемника (пульта дистанционного управления). При настройке необходимо открыть последовательный монитор IDE-порта Arduino и выяснить, какой сигнал подает на микроконтроллер кнопка от пульта ДУ. Полученные уникальные коды следует использовать в программе в условии if после двойного знака равенства.
Скетч для управления серво от IR пульта Arduino
#include "IRremote.h" IRrecv irrecv(A1); // ir receiver arduino decode_results results; #include "Servo.h" Servo myservo; void setup() < Serial.begin(9600); irrecv.enableIRIn(); myservo.attach(9); >void loop() < if (irrecv.decode(&results)) < Serial.println(results.value); if (results.value == 16718055) < myservo.write(10); >if (results.value == 16724175) < myservo.write(90); >irrecv.resume(); > >
Заключение. Чтобы сигнал пульта от дистанционного управления был принят ИК-приемником Arduino, сигнал пульта должен быть на той же частоте, что и фильтр ИК приемника. Поэтому не все пульты ДУ для Ардуино работают. Вы должны выбрать ИК сенсор ky 022 и ИК пульт с одинаковой частотой сигнала, чтобы можно было управлять освещением в комнате или машинкой с моторами постоянного тока дистанционно.
Включение и выключение светодиода от пульта Ардуино

Для сборки проекта необходимо подключить к микроконтроллеру три светодиода, используя порты общего назначения на плате. Также необходимо подключить модуль с ик-приемником от пульта дистанционного управления для Ардуино. В программе необходимо будет указать коды кнопок от пульта ДУ, которые поступают на ИК приемник (коды будут выводиться на серийном мониторе порта Arduino IDE).
Скетч для управления светодиодом от пульта IR
#include "IRremote.h" IRrecv irrecv(A1); decode_results results; // пины подключения светодиодов #define G 12 #define R 10 #define B 8 // коды сигнала кнопок пульта ду #define B1 16718055 #define B2 16718055 #define B3 16718055 #define B4 16718055 void setup() < Serial.begin(9600); irrecv.enableIRIn(); pinMode(G, OUTPUT); pinMode(R, OUTPUT); pinMode(B, OUTPUT); > void loop() < if (irrecv.decode(&results)) < Serial.println(results.value); if (results.value == B1) < digitalWrite(G, HIGH); > if (results.value == B2) < digitalWrite(R, HIGH); > if (results.value == B3) < digitalWrite(B, HIGH); > if (results.value == B4) < digitalWrite(G, LOW); digitalWrite(R, LOW); digitalWrite(B, LOW); > irrecv.resume(); > >
Пояснения к коду:
- нажмите кнопку на пульте дистанционного управления, вы должны увидеть код на последовательном мониторе, нажмите кнопку несколько раз, чтобы убедиться, что у вас правильный код;
- коды указаны в программе с помощью инструкции #define.
Заключение. Освещение светодиодов с помощью пульта дистанционного управления Arduino — это отличный проект, позволяющий узнать больше об использовании пульта дистанционного управления и ИК-приемника с платой Arduino. Потому что возможности их использования безграничны. Например, вы можете заменить светодиоды на твердотельное реле SSR для управления бытовыми приборами.
(14 оценок, среднее: 3,29 из 5)
Подключение IR приемника и пульта к Ардуино

Корпуса инфракрасных приемников содержат оптический фильтр для защиты прибора от внешних электромагнитных полей, изготавливаются они специальной формы для фокусировки принимаемого излучения на фотодиоде. Для подключения IR приемника к Arduino UNO используют три ножки, которые соединяют с — GND, 5V и A1. Советуем для начала использовать 3,3 Вольта, чтобы не сжечь ИК датчик при настройке.

Подключите IR приемник по схеме, представленной выше, и подключите светодиоды к 12 и 13 пину. Перед загрузкой программы, вам потребуется установить библиотеку IRremote.h, если она не была еще установлена. Данная библиотека не относится к стандартным библиотекам среды программирования Arduino IDE. Скачать библиотеку IRremote.h и готовый скетч можно одним архивом с Google Диск по ссылке здесь.
Скетч для ИК датчика Ардуино со светодиодом
#include "IRremote.h" // подключаем библиотеку для ик датчика IRrecv irrecv(A1); // указываем пин, к которому подключен ик датчик decode_results results; void setup() < irrecv.enableIRIn(); // запускаем прием инфракрасного сигнала Serial.begin(9600); // подключаем монитор порта pinMode(12, OUTPUT); // пин 12 будет выходом (англ. «output») pinMode(A1, INPUT); // пин A1 будет входом (англ. «intput») > void loop() < if (irrecv.decode(&results)) // если данные пришли выполняем команды < Serial.println(results.value); // отправляем полученные данные на порт // включаем и выключаем светодиод, в зависимости от полученного сигнала if (results.value == 16718055) < digitalWrite(12, HIGH); > if (results.value == 16724175) < digitalWrite(12, LOW); > irrecv.resume(); // принимаем следующий сигнал на ИК приемнике > >
Пояснения к коду:
- библиотека IRremote.h содержит набор команд и позволяет упростить скетч;
- оператор decode_results присваивает получаемым сигналам от пульта дистанционного управления имя переменной results .
ИК датчик можно применять во многих устройствах на микроконтроллере Ардуино, в том числе, можно сделать дистанционное управление сервоприводом на Ардуино от ИК приемника. При настройке следует включить монитор порта Arduino IDE и узнать какой сигнал отправляет та или иная кнопка на пульте ДУ. Полученные коды следует использовать в скетче после знака двойного равенства в условиях if () .

Скетч для ИК приемника Ардуино и серовомотора
#include "IRremote.h" // подключаем библиотеку для ик пульта IRrecv irrecv(A1); // указываем пин, к которому подключен ик датчик decode_results results; #include "Servo.h" // подключаем библиотеку для серво Servo myservo; // создаем объект для управления серво void setup() < irrecv.enableIRIn(); // запускаем прием инфракрасного сигнала Serial.begin(9600); // подключаем монитор порта myservo.attach(9); // указываем пин для подключения серво > void loop() < if (irrecv.decode(&results)) // если данные пришли выполняем команды < Serial.println(results.value); // отправляем полученные данные на порт // поворачиваем серво, в зависимости от ИК сигнала if (results.value == 16718055) < myservo.write(0); > if (results.value == 16724175) < myservo.write(90); > irrecv.resume(); // принимаем следующий сигнал на ИК приемнике > >
Пояснения к коду:
- в условиях if (results.value == 16724175) следует поставить свои значения, они будут появляться на мониторе порта при нажатии кнопок на пульте ду.
Заключение. Чтобы сигнал от пульта ДУ принимался ИК приемником Ардуино, пульт должен быть с той же частотой, на которую настроен фильтр в IR приемнике. Поэтому не каждый пульт дистанционного управления подойдет для работы. Следует подбирать IR приемник и IR передатчик с одной частотой. После фильтра сигнал поступает на амплитудный детектор, интегрирующий фильтр и выходной транзистор.
Подключение ИК к ардуино

Подключение ИК к ардуино простая задача, но для начала необходимо разобраться как ИК-связь передает данные. При данном виде связи используются инфракрасные волны электромагнитного спектра. ИК-светодиод используется для беспроводной передачи данных в цифровом виде (0 – светодиод выключен или 1 – светодиод включен).
Эти данные получает ИК-фотодиод или ИК-фототранзистор. ИК-приемник (ИК-фотодиод или ИК-фототранзистор) выдает различные значения тока в зависимости от интенсивности света.
Передаваемые данные можно модулировать, и существуют специальные ИК-приемники-декодеры, такие как TSOP1738, которые могут принимать модулированные данные.
Для получения дополнительной информации об ИК-связи см. тему ИК-связь в разделе «Датчики и модули».
Подключение ИК к ардуино: схема

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

Внимание! На схеме, показанной выше, для ИК-светодиода более длинный вывод является анодом, а более короткий — катодом.
Перед передачей, данные со стороны передатчика модулируются на частоте 38 кГц.
TSOP1738 — это ИК-приемник с возможностью демодуляции сигналов, промодулированных на частоте 38 кГц.
Вместо TSOP1738 можно использовать любой другой приемник TSOP17xx, например TSOP1730. Единственная разница заключается в несущей частоте, которую он может демодулировать. Например, TSOP1730 может демодулировать сигналы с несущей частотой 30 кГц. Соответствующие изменения в схеме модуляции должны быть сделаны на стороне передатчика, если используется TSOP1730 или какой-либо другой приемник.
В качестве примера рассмотрим беспроводную передачу данных между двумя платами Arduino Uno.
На стороне передатчика сделаем простой счетчик и передадим его значение приемнику с помощью ИК-светодиода. Значение счетчика поступает в приемник с помощью ИК-фотодиода или TSOP1738. Данные передаются так, как если бы приемник использовал ИК-фотодиод. Или модулируются на частоте 38 кГц, когда приемник использует TSOP1738.
Внимание! ИК используется только как средство передачи данных между передатчиком и приемником. Данные передаются по протоколу USART.
Предупреждение! В этих примерах используются контакты последовательной связи Rx и Tx. Arduino использует эти выводы при программировании. Следовательно, нам нужно убедиться, что к контактам Rx и Tx не подключены внешние схемы при загрузке скетча. В противном случае при загрузке скетча могут появиться сообщения об ошибках. Как только скетч загружен, мы можем подключить внешние схемы к контактам Rx и Tx.
Передача данных между ардуинами с использованием ИК светодиода и ИК фотодиода
Скетч ИК передатчика
void setup() < Serial.begin(9600); >void loop() < int count; for(count = 0; count>
Скетч ИК приемника
void setup() < Serial.begin(9600); >void loop() < if(Serial.available()) < Serial.print(char(Serial.read())); >>