Warning: fopen(/var/projects/prod/php/www/proglife/proglife_main_storage/storage/logs/error.log): failed to open stream: Permission denied in /var/projects/prod/php/www/proglife/proglife/system/library/log.php on line 22 Управление светодиодами с помощью ИК пульта - Я у мамы программист
0
0
0
Ваш город: 

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

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

В этом проекте инфракрасный (ИК) приемник и Arduino будут использованы для управления 3 светодиодами с помощью пульта дистанционного управления. Такой проект не только интересен, но и полезен, особенно, если у вас есть неиспользуемые пульты дистанционного управления, либо вы хотите расширить функционал пульта ДУ.

Компоненты для реализации проекта

Для сборки схемы потребуются следующие компоненты:

  1. Плата Arduino UNO или совместимая
  2. Беспаячная макетная плата
  3. Пульт ДУ
  4. Модуль инфракрасного приемника
  5. Одноцветные светодиоды любого цвета - 3 штуки
  6. Резисторы 220 Ом - 3 штуки
  7. Соединительные провода

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

В проекте можно использовать практически любой ИК приемник или его модуль, которые не требуют дополнительной обвязки. В этом проекте мы будем использовать модуль  ИК приемника HX1838 (VS1838B), который основан на одноименном сенсоре. На рисунке ниже представлен сам ИК приемник с распиновкой.


Характеристики:

  • Частота: 38 кГц;
  • Питание: 2,7 — 5,5 В;
  • Потребление: 50 мкА.
  • Дальность приема: 13-15 метров
  • Угол приема: 90 градусов

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



Принцип работы пульта ДУ и ИК приемника достаточно прост: когда вы нажимаете на пульт дистанционного управления, он посылает инфракрасные модулированные сигналы; эти сигналы содержат информацию, которую собирает приемник. Так как кнопка пульта отправляет определенную информацию на ИК приемник, мы можем присвоить ту или иную информацию каждой отдельной кнопке для последующего принятия сигнала и его обработки.


Схема подключения ИК приемника

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

Загрузка кода

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

Установка библиотеки IRremote:

  • Загрузите библиотеку IRremote -  папка .zip должна появиться в загрузках
  • Распакуйте zip-папку .zip, и вы должны получить папку Arduino-IRremote-master
  • Переименуйте свою папку с Arduino-IRremote-master на IRremote
  • Переместите папку IRremote в папку установочных библиотек Arduino IDE
  • Перезапустите IDE Arduino

Затем можно скопировать представленный ниже код в  Arduino IDE и загрузить его в плату контроллера. Убедитесь, что у вас выбрана правильная плата и COM-порт.


#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // инициализация приемника
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // получение следующего значения
  }
  delay(100);
}
Далее нужно открыть монитор порта в Arduino IDE, где будут отображаться показания с кнопок.

Так как в проекте осуществляется управление 3 светодиодами, нужно выбрать 6 кнопок, которые будут регулировать их включение и выключение:

  • LED1 – ВКЛЮЧЕН
  • LED1 – ВЫКЛЮЧЕН
  • LED2 – ВКЛЮЧЕН
  • LED2 – ВЫКЛЮЧЕН
  • LED3 – ВКЛЮЧЕН
  • LED3 – ВЫКЛЮЧЕН

Нажмите, например, кнопку № 1 вашего пульта ДУ. Вы должны увидеть код на мониторе порта в Arduino IDE. Нажмите одну и ту же кнопку несколько раз, чтобы убедиться, что у вас есть правильный код для этой кнопки. Если вы видите что-то вроде FFFFFFFF, игнорируйте это. Затем, сделайте то же самое для других кнопок. Важно записать отображаемый в мониторе порта код, связанный с каждой кнопкой, потому что эта информация понадобится позже для управления светодиодами.

Финальная сбока проекта

Ниже представлена полная схема подключения. Подключите все компоненты проекта, как показано на рисунке.

Теперь возьмите коды, которые вы выписали на предыдущем шаге - их нужно преобразовать из шестнадцатеричной системы счисления в десятичную. Для этого вы можете воспользоваться следующим веб-сайтом: https://www.binaryhexconverter.com/hex-to-decimal-converter

После конвертации кодов у вас должны значения вида, как показано на примере ниже.


Повторите этот процесс для всех шестнадцатеричных значений и сохраните десятичные значения - они будут использоваться в коде ниже. Загрузите или скопируйте представленный ниже скетч в Arduino IDE . В этом скетче нужно заменить десятичные значения в строках case на ваши собственные и загрузить получившийся код в плату контроллера. Убедитесь, что у вас выбрана правильная плата и COM-порт.

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

#include <IRremote.h>
 
int IR_Recv = 11;   //ИК приемник на пине 3
int bluePin = 10;
int greenPin = 9;
int yellowPin = 8;
 
IRrecv irrecv(IR_Recv);
decode_results results;
 
void setup(){
  Serial.begin(9600);  
  irrecv.enableIRIn(); // инициализация приемника
  // пины светодиодов - выходы
  pinMode(bluePin, OUTPUT);     
  pinMode(greenPin, OUTPUT);     
  pinMode(yellowPin, OUTPUT);      
}
 
void loop(){
  //расшифровка данных
  if (irrecv.decode(&results)){
    long int decCode = results.value;
    Serial.println(results.value);
    //измените цифры в строках case на те, которые были получены с вашего пульта и конвертированы в десятичную систему счисления
    switch (results.value){
      case 551520375: //для кнопки 1
        digitalWrite(bluePin, HIGH);
        break;   
      case 551495895: //для кнопки 4
        digitalWrite(bluePin, LOW);   
        break;
       case 551504055: // для кнопки 2
        digitalWrite(greenPin, HIGH);
        break;           
       case 551528535: // для кнопки 5
        digitalWrite(greenPin, LOW);
        break;       
       case 551536695: // для кнопки 3
        digitalWrite(yellowPin, HIGH);
        break;       
       case 551512215: // для кнопки 6
        digitalWrite(yellowPin, LOW);
        break;
    }
    irrecv.resume(); // получение следующего значения от нажатия кнопки
  }
  delay(10);
}


Все компоненты для этого проекта вы можете найти в рекомендованных к посту товарах.




ИК пульт, проект с LED, управление LED, уроки Arduino, проекты Arduino

Фотографии
Похожие статьи
13.09.2021
Отображение данных дальномера с использованием Raspberry Pi Pico и MicroPython
Отображение данных дальномера с использованием Raspberry Pi Pico и MicroPython
В этой статье вы познакомитесь с простым проектом на Raspberry Pi Pico: научитесь связывать ультразвуковой датчик с платой Pico и измерять расстояние до объекта, а затем отображать расстояние на модуле OLED-дисплея с помощью MicroPython...
30.09.2021
Работа с многофункциональным датчиком BME280
Работа с многофункциональным датчиком BME280
В этом небольшом уроке рассмотрим, как работать с датчиком давления, температуры и влажности BME280...