0.00р.
Оформить заказВ этом проекте инфракрасный (ИК) приемник и Arduino будут использованы для управления 3 светодиодами с помощью пульта дистанционного управления. Такой проект не только интересен, но и полезен, особенно, если у вас есть неиспользуемые пульты дистанционного управления, либо вы хотите расширить функционал пульта ДУ.
Для сборки схемы потребуются следующие компоненты:
В проекте можно использовать практически любой ИК приемник или его модуль, которые не требуют дополнительной обвязки. В этом проекте мы будем использовать модуль ИК приемника HX1838 (VS1838B), который основан на одноименном сенсоре. На рисунке ниже представлен сам ИК приемник с распиновкой.
Характеристики:
В этом проекте используется именно модуль с этим датчиком, так все дополнительные компоненты установлены на плате модуля. Однако, есть и другие вариации подобных датчиков, которые могут подключаться напрямую к плате контроллера.
Принцип работы пульта ДУ и ИК приемника достаточно прост: когда вы нажимаете на пульт дистанционного управления, он посылает инфракрасные модулированные сигналы; эти сигналы содержат информацию, которую собирает приемник. Так как кнопка пульта отправляет определенную информацию на ИК приемник, мы можем присвоить ту или иную информацию каждой отдельной кнопке для последующего принятия сигнала и его обработки.
Для реализации управления светодиодами с пульта в первую очередь нужно расшифровать ИК-сигналы, привязанные к каждой кнопке пульта. На рисунке ниже представлена схема подключения ИК датчика.
Для корректной работы кода в первую очередь требуется установка соответствующей библиотеки, которую можно скачать здесь.
Установка библиотеки IRremote:
Затем можно скопировать представленный ниже код в 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 кнопок, которые будут регулировать их включение и выключение:
Нажмите, например, кнопку № 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); }
Все компоненты для этого проекта вы можете найти в рекомендованных к посту товарах.