ИК приемник + Ардуино. Подключение

Рассмотрим подключение ИК приемника к Ардуино. Расскажем какую использовать библиотеку и продемонстрируем скетч для работы IR приемника на Arduino.


Рассмотрим на этом занятии подключение ИК приемника к Ардуино. Расскажем какую библиотеку следует использовать для IR приемника, продемонстрируем скетч для тестирования работы инфракрасного приемника от пульта дистанционного управления и разберем команды в языке C++ для получения сигнала. Сразу отметим, что IR датчик Ардуино подходит не к каждому пульту, частота сигнала может отличаться.

Устройство ИК приемника. Принцип работы

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

Принцип работы IR ресивера. Обработка сигнала
Принцип работы IR ресивера. Обработка сигнала от пульта ДУ

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

Под действием инфракрасного излучения в фотодиоде, у которого между p и n областями создана дополнительная область из полупроводника (i-область), начинает течь ток. Сигнал поступает на усилитель и далее на полосовой фильтр, который настроен на фиксированную частоту: 30; 33; 36; 38; 40 и 56 килогерц и защищает приемник от помех. Помехи могут создавать любые бытовые приборы.

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

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

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

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • IR приемник;
  • пульт ДУ;
  • 1 светодиод и резистор 220 Ом;
  • провода «папа-папа» и «папа-мама».
Схема подключения ИК приемника к Ардуино
Схема подключения ИК приемника к аналоговому порту Ардуино

Подключите IR приемник по схеме, представленной выше, и подключите светодиоды к 12 и 13 пину. Перед загрузкой программы, вам потребуется установить библиотеку IRremote.h, если она не была еще установлена. Данная библиотека не относится к стандартным библиотекам среды программирования Arduino IDE. Скачать библиотеку IRremote.h и готовый скетч можно одним архивом с Google Диск по ссылке здесь.

Скетч для ИК приемника Arduino:

#include <IRremote.h> // подключаем библиотеку для IR приемника

IRrecv irrecv(A0); // указываем пин, к которому подключен IR приемник
decode_results results;

void setup() // процедура setup
{
  irrecv.enableIRIn();  // запускаем прием инфракрасного сигнала
  
  pinMode(13, OUTPUT); // пин 13 будет выходом (англ. «output»)
  pinMode(12, OUTPUT); // пин 12 будет выходом (англ. «output»)
  pinMode(A0, INPUT); // пин A0 будет входом (англ. «intput»)
  
  Serial.begin(9600); // подключаем монитор порта
}

void loop() // процедура loop
{
  if (irrecv.decode(&results)) // если данные пришли выполняем команды
  {
    Serial.println(results.value); // отправляем полученные данные на порт
    
 // включаем и выключаем светодиоды, в зависимости от полученного сигнала
     
     if (results.value == 16754775) { 
     digitalWrite(13, HIGH);
   }
     if (results.value == 16769055) { 
     digitalWrite(13, LOW);
   }
     if (results.value == 16718055) { 
     digitalWrite(12, HIGH);
   }
     if (results.value == 16724175) { 
     digitalWrite(12, LOW);
   }
    irrecv.resume(); // принимаем следующий сигнал на ИК приемнике
  }
}

Пояснения к коду:

  1. Библиотека IRremote.h содержит набор команд и позволяет упростить скетч;
  2. Оператор decode_results присваивает получаемым сигналам от пульта дистанционного управления имя переменной results.

ИК датчик можно применять во многих устройствах на микроконтроллере Ардуино, в том числе, можно сделать дистанционное управление сервоприводом на Ардуино от ИК приемника. При настройке следует включить монитор порта Arduino IDE и узнать какой сигнал отправляет та или иная кнопка на пульте ДУ. Полученные коды следует использовать в скетче после знака двойного равенства в условиях if ().

1 Star2 Stars3 Stars4 Stars5 Stars (42 votes, average: 4,81 out of 5)
Загрузка...

14 комментариев для “ИК приемник + Ардуино. Подключение

    1. Еще раз все перепроверил. Все правильно написано в скетче для подключения ИК приемника к Arduino

  1. У вас на рисунках на одном правая нога 5В, левая А0, на следующем рисунке наоборот.

    1. Спасибо, исправим. Но не у всех ИК приемников распиновка именно такая, как изображено на рисунке, может и отличаться

  2. Я загрузил скетч на Ардуино, но если нажимаю кнопу на ду пульте, то там (МОНИТОР ПОРТА) ничего не отображается. Что делать?

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

  3. А как сделать так чтоб включать/выключать светодиод одной кнопкой пульта?
    Лично пробовал не получилось, только разными. Любая информация будет полезна.

  4. Здравствуйте! Не загружает библиотеку IRremote.h, пишет «ошибка загрузки в плату». Что делать?

  5. При нажатии на кнопку одну и туже кнопку выводит несколько кодов,почему?

    1. Обычно со всех кнопок пульта ДУ на инфракрасный приемник отправляется дополнительно второй сигнал, он на всех кнопках одинаковый, поэтому его не используйте. Для чего он нужен? Возможно, для идентификации пульта.

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

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