Arduino – Управление светодиодами с помощью ИК-пульта дистанционного управления

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

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

Обновлено 17 декабря 2024 г.

Этот проект разделен на две части:

  1. Вы декодируете ИК-сигналы, передаваемые вашим пультом дистанционного управления

  2. Вы используете эту информацию для выполнения задачи с Arduino (управление 3 светодиодами)

Необходимые компоненты

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

Компоненты для проекта управления светодиодами с ИК-пультом

Вы можете использовать приведенные выше ссылки или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!

Знакомство с инфракрасным (ИК) приемником

Инфракрасный приемник – это компонент, показанный на рисунке ниже. Это TSOP4838.

ИК-приемник TSOP4838 с подписями выводов

Выводы инфракрасного приемника:

  • Первый вывод: Vout

  • Второй вывод: GND

  • Третий вывод: Vcc

Когда вы нажимаете кнопку на пульте дистанционного управления, он отправляет инфракрасные модулированные сигналы. Эти сигналы содержат информацию, которую собирает ваш приемник.

Принцип работы инфракрасного пульта дистанционного управления

Каждая кнопка отправляет определенную информацию. Таким образом, мы можем привязать эту информацию к конкретной кнопке.

Декодирование ИК-сигналов

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

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

Подключите ИК-приемник в соответствии со схемой ниже.

Схема подключения ИК-приемника к Arduino для декодирования сигналов

Код

Для управления ИК-приемником вам необходимо установить библиотеку `IRremote <https://github.com/z3t0/Arduino-IRremote>`__ в Arduino IDE.

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

  1. Перейдите в Sketch > Include Library > Manage Libraries.

  2. Менеджер библиотек должен открыться на левой боковой панели IDE. Найдите IRremote.

  3. Установите библиотеку от shirriff. Мы используем версию 4.4.1.

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

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

#include <IRremote.h>

const int RECV_PIN = 11;

void setup() {
  Serial.begin(9600);
  IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // Initialize the receiver
}

void loop() {
  if (IrReceiver.decode()) { // Check if data is received
    // Filter out unknown protocols
    if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
      IrReceiver.resume(); // Resume receiving for the next signal
      return; // Skip this loop iteration
    }

    // Print only valid data
    IrReceiver.printIRResultShort(&Serial); // Print complete received data in one line

    IrReceiver.resume(); // Resume receiving for the next signal
  }
  delay(100);
}

Просмотреть исходный код

Откройте монитор порта на скорости 9600 бод.

Иконка монитора порта Arduino IDE

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

  1. LED1 – ВКЛ

  2. LED1 – ВЫКЛ

  3. LED2 – ВКЛ

  4. LED2 – ВЫКЛ

  5. LED3 – ВКЛ

  6. LED3 – ВЫКЛ

Нажмите, например, кнопку с цифрой 1 на вашем пульте дистанционного управления. Вы должны получить некоторую информацию об этой кнопке в мониторе порта. Сохраните значение «command» для этой кнопки.

Команда ИК-пульта в мониторе порта Arduino IDE

Проделайте то же самое для остальных кнопок.

Запишите код, связанный с каждой кнопкой, потому что эта информация понадобится вам позже.

Сборка финальной схемы

В этой части вы соберете схему с тремя светодиодами, которые будут управляться с помощью вашего пульта.

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

Соберите все компоненты, следуя приведенной ниже схеме.

Схема подключения 3 светодиодов с ИК-приемником и Arduino

Код

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

/*
 * Modified by Rui Santos, http://randomnerdtutorialscom
 * based on IRremote Library - Ken Shirriff
 */

#include <IRremote.h>

const int RECV_PIN = 11;

const int bluePin = 10;
const int greenPin = 9;
const int yellowPin = 8;

void setup() {
  Serial.begin(9600); // Start serial communication
  IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // Start the receiver

  pinMode(bluePin, OUTPUT);    // Set the pins as output
  pinMode(greenPin, OUTPUT);
  pinMode(yellowPin, OUTPUT);
}

void loop() {
  // Decode the infrared input
  if (IrReceiver.decode()) {
    if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
      IrReceiver.resume(); // Resume receiving for the next signal
      return; // Skip this loop iteration
    }

    // Print the received command for debugging
    IrReceiver.printIRResultShort(&Serial);

    switch (IrReceiver.decodedIRData.command) {
      case 0x01: // Command to turn ON the blue LED
        digitalWrite(bluePin, HIGH);
        Serial.println("Blue LED ON");
        break;

      case 0x02: // Command to turn ON the green LED
        digitalWrite(greenPin, HIGH);
        Serial.println("Green LED OFF");
        break;

      case 0x03: // Command to turn ON the yellow LED
        digitalWrite(yellowPin, HIGH);
        Serial.println("Yellow LED ON");
        break;

      case 0x04: // Command to turn OFF the blue LED
        digitalWrite(bluePin, LOW);
        Serial.println("Blue LED OFF");
        break;

      case 0x05: // Command to turn OFF the green LED
        digitalWrite(greenPin, LOW);
        Serial.println("Green LED OFF");
        break;

      case 0x06: // Command to turn OFF the yellow LED
        digitalWrite(yellowPin, LOW);
        Serial.println("Yellow LED OFF");
        break;

      default: // Unknown command
        Serial.println("Unknown Command");
        break;
    }

    IrReceiver.resume(); // Receive the next value
  }
  delay(10);
}

Просмотреть исходный код

После добавления команд для каждой кнопки в приведенный выше код вы можете загрузить его в вашу Arduino IDE.

Демонстрация

В итоге вы можете управлять каждым светодиодом индивидуально, используя кнопки вашего пульта дистанционного управления.

Демонстрация управления светодиодами с помощью ИК-пульта и Arduino

Смотрите видео-демонстрацию

Заключение

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

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

Это может быть особенно полезно, потому что на некоторых пультах есть множество кнопок, которые вы никогда не используете. Так почему бы не использовать их для чего-то полезного?

Это отрывок из нашего курса: Arduino Step-by-step projects. Если вам нравится Arduino и вы хотите создавать больше проектов, мы рекомендуем записаться на курс Arduino Step-by-step projects.