Управление светом с пульта дистанционного управления

2 марта 2013

В этой статье я расскажу, как можно управлять освещением в комнате с помощью пульта дистанционного управления.

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

  • Arduino
  • Реле на 5 вольт
  • IR-приёмник TSOP1xxx
  • Любой подходящий пульт ДУ

Сборка

Собираем следующую схему:

Внимание! Если код кнопки будет считываться с ошибками, либо не считываться совсем, необходимо собрать схему с фильтром:

Распиновка IR-приёмника TSOP1xxx:

С реле возможны варианты. Обычное реле без обвязки подключать напрямую к Arduino нельзя! Обязательно необходимо использовать либо транзисторы, либо оптопару. Можно взять и готовую сборку, например такую:

Здесь два реле с обвязкой, можно подключать напрямую к микроконтроллеру (контакты IN1 и IN2). На контакты GND и VCC подаётся питание 5 вольт. Только необходимо иметь ввиду, что у некоторых таких сборок «логика наоборот». То есть при подаче сигнала реле отключается, при снятии — включается.

Также можно использовать и твердотельное реле, что я и сделал. Они хоть и дороже, но обладают рядом преимуществ: абсолютно бесшумная работа, очень малое энергопотребление, можно подключать напрямую к микроконтроллеру, широкий диапазон управляющего напряжения. Вот пример твердотельного реле для нагрузки переменного тока 24-380 В и управляющим напряжением от 3 до 32 вольт:

Пульт можно использовать практически любой. У меня был такой:

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

check_ir.ino
/*************************************************************
project: IR to Serial
author: Gladyshev Dmitriy
description: Выводит в консоль код нажатой кнопки пульта
IDE: Arduino 1.0.1
*************************************************************/
 
#include <IRremote.h>
 
int RECV_PIN = 3; //пин подключения IR приёмника
 
IRrecv irrecv(RECV_PIN);
decode_results results;
 
void setup()
{
  Serial.begin(9600);
  pinMode(7,OUTPUT);
  irrecv.enableIRIn(); // Start the receiver
}
 
void loop()
{
  if (irrecv.decode(&results)) 
  {
    Serial.println(results.value);
 
    irrecv.resume(); // Receive the next value
  }
}

Теперь при нажатии кнопок на пульте, в консоли должны появляться числа. Это и будет код кнопки. Запишите необходимый код.

Теперь заливаем в Arduino другой скетч:

irlight.ino
/*************************************************************
project: IR Light v1.0
author: Gladyshev Dmitriy
description: Управление освещением с IR ПДУ
IDE: 1.0.1
2 марта 2013
*************************************************************/
 
#include <IRremote.h>
 
int RECV_PIN = 3; //пин подключения IR приёмника
int RELAY_PIN = 7; //пин подключения реле
 
IRrecv irrecv(RECV_PIN);
decode_results results;
bool LampState = false;
 
void setup()
{
  pinMode(RELAY_PIN,OUTPUT);
  digitalWrite(RELAY_PIN,LOW);
  irrecv.enableIRIn(); // Включаем ресивер
}
 
void loop()
{
  if (irrecv.decode(&results)) 
  {
    if (results.value == 16713975) //Код кнопки
    {
      LampState = !LampState;
      if (LampState)
      {
        digitalWrite(RELAY_PIN,HIGH);
      }
      else
      {
        digitalWrite(RELAY_PIN,LOW);
      }
    }
    irrecv.resume(); // Получаем следующее значение
  }
}

При необходимости изменяем номера пинов, к которым подключены IR-приёмник и реле:

int RECV_PIN = 3; //пин подключения IR приёмника
int RELAY_PIN = 7; //пин подключения реле

Также заменяем в следующей строчке код кнопки (на тот, который вы записали ранее):

if (results.value == 16713975) //Код кнопки

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

Скачать

Библиотеки:

IRRemote

Работа проверялась с Arduino IDE v1.0.1

  • arduino/upravlenie_svetom_s_pulta_distancionnogo_upravlenija.txt
  • Последнее изменение: 31.12.2025 17:09
  • r0wbh