Как подключить ик приемник к ардуино
Перейти к содержимому

Как подключить ик приемник к ардуино

  • автор:

Подключение инфракрасного (ИК) пульта к Arduino

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

  1. инфракрасный пульт управления;
  2. инфракрасный приемник (датчик);
  3. плата с подтягивающими резисторами и индикатором питания.

ИК пульт arduino комплект

ИК пульт arduino плата с подтягивающи резистром

ИК пульт arduino в сборе

Рассмотрим подключение ИК приемника от пульта к arduino uno:

  • Gnd — Gnd;
  • Vcc — 5v/3.3v;
  • Out — 11 pin.

ИК приемник arduino

Простейший скетч (программа) для взаимодействия 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)

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

Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML

Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML

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

Yii2 advanced доступ из backend к frontend кэшу

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
  1. Включение светодиодов от ИК пульта Arduino
  2. Управление светильником от датчика HC-SR04
  3. Плавное включение и выключение светодиодов

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

ИК пульт 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 кГц.

Модуль ИК-приемника Arduino KY-022

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 UNO.

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

Схема подключения 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) вы уведите следующее.

 скетч загружен и IR приемник подключен

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

включение и выключения встроенного светодиода на плату Arduino при помощи пульта дистанционного управления

Само простое, чем можно управлять — это включение и выключения встроенного светодиода на плату 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

Связанные уроки

  • Сравнение и выбор
  • Аппаратные прерывания

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *