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



Рассмотрим подключение ИК приемника от пульта к arduino uno:
- Gnd — Gnd;
- Vcc — 5v/3.3v;
- Out — 11 pin.

Простейший скетч (программа) для взаимодействия arduino с ИК пультом выглядит следующим образом:
#include IRrecv irrecv(11); decode_results results; void setup() < Serial.begin(9600); irrecv.enableIRIn(); >void loop() < if(irrecv.decode(&results)) < Serial.println( results.value, HEX); irrecv.resume(); >>
Для работы с инфракрасным пультом используется библиотека IRremote, которая зачастую уже присутствует в Arduino IDE, если же ее нет, то можно скачать здесь. Данный скетч позволяет выводить в монитор порта значения сигналов, поступающих с инфракрасного пульта в шестнадцатиричной системе исчисления. На основе полученных значений уже можно писать более сложную программу.

Установка Webmin для Armbian (Orange Pi / Raspberry Pi)
Установка webmin для операционной системы Armbian (Orange Pi / Raspberry Pi). Install webmin for armbian.

Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML
Простая реализация текстового поля с выпадающими подсказками (аналогично поиску у Яндекс и Google) при вводе текста на языке C# WPF. Реализация пользовательского элемента управления в C#/

Yii2 advanced доступ из backend к frontend кэшу
В заметке описан способ доступа к фронтэнд (frontend) кэшу (cache) advanced приложения из бэкэнда (backend) для php фреймворка Yii2.
ИК датчик 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 и ИК пульт с одинаковой частотой сигнала, чтобы можно было управлять освещением в комнате или машинкой с моторами постоянного тока дистанционно.
KY-022 – модуль ИК приёмника (IRremote). Подключение к Arduino.
Продолжаем изучать модули из набора «37 in 1 Sensors Kit for Arduino». В предыдущих уроках мы рассмотрели модуль ИК-передатчика KY-005. Сегодня рассмотрим модуль ИК приёмника KY-022. Который позволит получать сигнал с ИК-передатчика и управлять периферийными устройствами. У меня уже есть ряд проектов на Arduino с использованием ИК приёмника.
Описание модуля ИК-приемника KY-022.
Модуль ИК-приемника Arduino KY-022, реагирует на инфракрасный свет 38 кГц.

KY-022 Технические характеристики.
Этот модуль состоит из ИК-приемника на базе «VS1838B», резистора 1 кОм и светодиода. Работает вместе с модулем ИК-передатчика KY-005. Совместимость с популярными электронными платформами, такими как Arduino, Raspberry Pi и ESP8266.
Напряжение низкого уровня
Напряжение высокого уровня
Фильтр окружающего света
Схема подключения KY-022 к Arduino.
Подключите линию питания (посередине) и землю (-) к +5 и GND соответственно. Также, необходимо подключить сигнал (S) к контакту 11 на Arduino. Сигнал на приемник будем отправлять с помощью пульта ДУ.

Подключение KY-022:
Схема подключения KY-022 к Arduino UNO.

Схема подключения KY-022 к Arduino NANO.

KY-022 скетч для Arduino.
В следующем скетче Arduino используется библиотека IRremote для приема и обработки инфракрасных сигналов. В уроке использую пульт ДУ для последовательной отправки данных на модуль KY-022.
#include "IRremote.h" int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() < Serial.begin(9600); Serial.println("Enabling IRin"); irrecv.enableIRIn(); // ииничиализируем работу с IR Serial.println("Enabled IRin"); >void loop() < if (irrecv.decode(&results)) < Serial.println(results.value, HEX); irrecv.resume(); // Ждем следующее значение от пульта ДУ >delay(100); >
Ссылки на необходимые материалы и библиотеку для данного примера KY-022 Arduino можно найти в разделе «Файлы для скачивания».
После того как скетч загружен и IR приемник подключен, можно проверить, какой код соответствует той или иной кнопке пульта ДУ. Поочередно нажимаем на кнопки, и в мониторе последовательного порта (Ctrl+Shift+M) вы уведите следующее.

У вас скорее всего возник вопрос: «Что за повторяющая команда FFFFFFFF«? Эта команда выводится, когда мы долго удерживаем кнопку на пульте и на Ардуино приходит одинаковая команда. В этом нет ничего страшного, а иногда это даже полезно. На основе получения данных в таком виде, я сделал управление машинкой, с помощью пульта ДУ. При этом машинка едет только тогда, когда нажата кнопка пульта. Отпускаем и машина перестает ехать или поворачивать.

Само простое, чем можно управлять — это включение и выключения встроенного светодиода на плату Arduino при помощи пульта дистанционного управления и инфракрасного приемника KY-022.
Схема подключения, как и в примере выше. Коды кнопок моего пульта, которые я буду использовать для примера:
//FF10EF — стрелочка вправо //FF5AA5 — стрелочка влево
У вашего пульта команды будут другие, если он не такой же модели, как у меня. Большинство наборов для Arduino оснащены пультом данной модели.
Скетч включения светодиода с помощью пульта ДУ.
//FF10EF — стрелочка вправо //FF5AA5 — стрелочка влево #include "IRremote.h" IRrecv irrecv(11); // указываем вывод, к которому подключен приемник decode_results results; void setup() < irrecv.enableIRIn(); // запускаем прием >void loop() < if ( irrecv.decode( &results )) < // если данные пришли switch ( results.value ) < case 0xFF10EF: digitalWrite( 13, HIGH ); break; case 0xFF5AA5: digitalWrite( 13, LOW ); break; >irrecv.resume(); // принимаем следующую команду > delay(100); >
Вот так можно легко научить Arduino принимать команды с пульта.
Понравился Урок KY-022 – модуль ИК приёмника. Подключение к Arduino? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Arduino и ИК пульт

С его помощью можно:
- Управлять своим устройством с пульта (комплектный пульт + приёмник)
- Управлять своим устройством с любого пульта (от телевизора/люстры + приёмник)
- Управлять телевизором, эмулируя его пульт (ИК светодиод)
- Передавать данные с одной Ардуины на другую (ИК светодиод + приёмник), например библиотека GyverTransfer
Подключение
Модуль ИК приёмника подключается следующим образом:
- S: сигнальный пин, любой цифровой пин МК
- -: GND
- Средний (не подписан): VCC

Библиотеки
- IRremote – очень тяжёлая универсальная “стандартная” библиотека
- IRLremote – более оптимизированная и продвинутая библиотека от NicoHood
- NecDecoder – наша библиотека для интерфейса NEC (Hash), на котором работают все китайские пульты
В примерах на этом сайте мы будем использовать NecDecoder как очень лёгкую и простую в использовании. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию NecDecoder. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
Примеры
Примеры для библиотеки NecDecoder версии 2.x!
Чтение кодов пульта
Перед использованием нужно знать коды кнопок пульта, загружаем вот этот пример и открываем порт:
// приём команд с пульта // приёмник подключать на прерывание по FALLING #include NecDecoder ir; void setup() < Serial.begin(9600); // подключил на D2, прерывание 0 attachInterrupt(0, irIsr, FALLING); >// в прерывании вызываем tick() void irIsr() < ir.tick(); >void loop() < // если пакет успешно принят if (ir.available()) < // вывести команду (8 бит) Serial.print("0x"); Serial.println(ir.readCommand(), HEX); >>
Нажимаем кнопку на пульте – получаем её код
Коды кнопок пульта из набора
#define IR_1 0xA2 #define IR_2 0x62 #define IR_3 0xE2 #define IR_4 0x22 #define IR_5 0x2 #define IR_6 0xC2 #define IR_7 0xE0 #define IR_8 0xA8 #define IR_9 0x90 #define IR_STAR 0x68 #define IR_0 0x98 #define IR_HASH 0xB0 #define IR_UP 0x18 #define IR_LEFT 0x10 #define IR_OK 0x38 #define IR_RIGHT 0x5A #define IR_DOWN 0x4A
Парсим нажатия
// приёмник на D2 #define IR_1 0xA2 #define IR_2 0x62 #define IR_3 0xE2 #define IR_4 0x22 #define IR_5 0x2 #define IR_6 0xC2 #define IR_7 0xE0 #define IR_8 0xA8 #define IR_9 0x90 #define IR_STAR 0x68 #define IR_0 0x98 #define IR_HASH 0xB0 #define IR_UP 0x18 #define IR_LEFT 0x10 #define IR_OK 0x38 #define IR_RIGHT 0x5A #define IR_DOWN 0x4A #include NecDecoder ir; void setup() < Serial.begin(9600); attachInterrupt(0, irIsr, FALLING); >void irIsr() < ir.tick(); >void loop() < if (ir.available()) < switch (ir.readCommand()) < // выводим в порт, тут может быть ваш код case IR_1: Serial.println("Pressed 1"); break; case IR_2: Serial.println("Pressed 2"); break; case IR_3: Serial.println("Pressed 3"); break; case IR_4: Serial.println("Pressed 4"); break; case IR_5: Serial.println("Pressed 5"); break; case IR_6: Serial.println("Pressed 6"); break; case IR_7: Serial.println("Pressed 7"); break; case IR_8: Serial.println("Pressed 8"); break; case IR_9: Serial.println("Pressed 9"); break; case IR_STAR: Serial.println("Pressed *"); break; case IR_0: Serial.println("Pressed 0"); break; case IR_HASH: Serial.println("Pressed #"); break; case IR_UP: Serial.println("Pressed up"); break; case IR_LEFT: Serial.println("Pressed left"); break; case IR_OK: Serial.println("Pressed ok"); break; case IR_RIGHT: Serial.println("Pressed right"); break; case IR_DOWN: Serial.println("Pressed down"); break; >> >
Домашнее задание
- Попробовать примеры из библиотеки IRLremote
Связанные уроки
- Сравнение и выбор
- Аппаратные прерывания