Arduino управление светом с 3 мест: Пульт ДУ + Радиопульт + Переключатель.

Разработка проектов под заказ

Просматривая телевизор, мы постоянно переключаем с одного канала на другой в поисках интересного фильма или интересной телепередачи. При этом, наверно, многим приходила мысль, как бы сделать так, чтобы и управлять светом можно было с того же пульта, не вставая с дивана. Сегодня мы рассмотрим самый простой способ реализации подобного управления. При чем, управлять можно не только с пульта от телевизора, но и с радиопульта, который становится, в последнее время, достаточно распространённым для управления бытовой техникой, и элементами умного дома. Кроме управления света с пульта, хочется еще сохранить возможность включать и выключать свет с помощью выключателя, и при этом, сильно не углубляться в изучение программирования? Тогда этот проект для тебя!

А сейчас немного теории, как все работает, и как это можно использовать в нашем проекте.

Что такое проходной выключатель (переключатель)?

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

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

Что такое проходной выключатель (переключатель)

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

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

Монтажная, или рабочая, схема подключения проходного выключателя

Согласно этому рисунку, проходные переключатели связаны двумя линейными проводниками, объединяющими коммутируемые точки. При этом, их перекидные контакты исходно находятся в противоположных позициях, и подключены к незадействованным линейным проводам.

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

Замена одного проходного выключателя на реле.

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

Подключение к Arduino IR приемника, радиоприемника HY-DJM-5V и реле.

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

Дальше, подключим модуль инфракрасного приемника KY-022 и радиомодуль HY-DJM-5V к Arduino. У вас может быть другой радиомодуль 433 МГц, в таком случае, код для Arduino нужно будет подправить в соответствии с вашей версией радиомодуля. У меня, на данный момент, других моделей радиомодуля нет, и протестировать их нет возможности.

Особенность радиомодуля с пультом и приемником HY-DJM-5V.

Особенность радиомодуля с пультом и приемником HY-DJM-5V.

Радиомодуль с приемником HY-DJM-5V идет с пультом, и использовать дополнительные устройства, или собирать пульт радиоуправления, не нужно. Но есть и минусы. Радиус действия не большой, и из соседней комнаты пульт уже не может передать сигнал приемнику HY-DJM-5V. Я почитал в интернете, и сделал спиральную антенну, по расчетам, но радиус действия не сильно увеличился, хотя управлять освещением в одной комнате можно.

Схема подключения к Arduino NANO, HY-DJM-5V, модуля KY-022, и модуля с двумя реле.

Подключение к Arduino IR приемника, радиоприемника HY-DJM-5V и реле.

Подключим модуль KY-022: сигнальный вывод (S) к контакту 10 на Arduino, выводы D0 и D1 радиоприемника HY-DJM-5V подключим к 3 и 4 пину Arduino. Информационные контакты реле подключаем к 5 и 6 контактам Arduino. Согласно схеме размещённой выше.

подключение к Arduino NANO, HY-DJM-5V, модуля KY-022


В цикле уроков «37 модулей и датчиков для Arduino» вы найдете описание не только модуля KY-022,но и модуля ИК-передатчика KY-005, с помощью которого можно отправлять команды управления на IR приемник, без использования пульта ДУ.

Скетч для управления двумя реле с помощью радиоприёмника HY-DJM-5V, модуль инфракрасного приемника KY-022.

Скетч получился небольшой, чуть больше 50 строчек, и понятен начинающему Ардуинщику.

// Arduino управление светом с 3 мест: Пульт ДУ + Радиопульт + Переключатель.
// https://arduino-tex.ru/
#include "IRremote.h"
#define RELAY1 5
#define RELAY2 6
#define RADIO_PIN1 3
#define RADIO_PIN2 4
boolean statusRelay1 = false;
boolean statusRelay2 = false;
IRrecv irrecv(10); // указываем вывод, к которому подключен приемник
decode_results results;
void setup() {
  pinMode(RELAY1, OUTPUT);
  pinMode(RELAY2, OUTPUT);
  pinMode(RADIO_PIN1, INPUT);
  pinMode(RADIO_PIN1, INPUT);
  digitalWrite(RELAY1, HIGH);
  digitalWrite(RELAY2, HIGH);
  irrecv.enableIRIn(); // запускаем прием
  Serial.begin(9600);
  Serial.println("Relay Ok!");
}
void loop() {
  if ( digitalRead(RADIO_PIN1) == HIGH) {
    Serial.println("Relay 1");
    statusRelay1 = !statusRelay1;
    digitalWrite(RELAY1, statusRelay1);
    delay(100);
  }
  if ( digitalRead(RADIO_PIN2) == HIGH) {
    Serial.println("Relay 2");
    statusRelay2 = !statusRelay2;
    digitalWrite(RELAY2, statusRelay2);
    delay(100);
  }
  if ( irrecv.decode( &results )) { // если данные пришли
    switch ( results.value ) {
      case 0xFF10EF:
        Serial.println("Relay 1");
        statusRelay1 = !statusRelay1;
        digitalWrite(RELAY1, statusRelay1);
        break;
      case 0xFF5AA5:
        Serial.println("Relay 2");
        statusRelay2 = !statusRelay2;
        digitalWrite(RELAY2, statusRelay2);
        break;
    }
    irrecv.resume(); // принимаем следующую команду
  }
  delay(100);
}

Описание кода.

Сперва, нам нужно подключить библиотеку IRremote.h, для работы с модулем инфракрасного приемника KY-022, которую можно установить через менеджер библиотек, или скачать внизу статьи, в разделе «файлы для скачивания».

#include "IRremote.h"

Затем, создаем переменные подключения реле и входы для считывания значений с радиомодуля. А также создадим две переменные для хранения текущего состояния реле.

#define RELAY1 5
#define RELAY2 6
#define RADIO_PIN1 3
#define RADIO_PIN2 4
boolean statusRelay1 = false;
boolean statusRelay2 = false;

Затем, нужно инициализировать работу с инфракрасным приемником.

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

В блоке setup() инициализируем пины, и инициализируем работу с инфракрасным приемником

  pinMode(RELAY1, OUTPUT);
  pinMode(RELAY2, OUTPUT);
  pinMode(RADIO_PIN1, INPUT);
  pinMode(RADIO_PIN1, INPUT);
  digitalWrite(RELAY1, HIGH);
  digitalWrite(RELAY2, HIGH);
  irrecv.enableIRIn(); // запускаем прием

В основном цикле loop() выполняем 2 одинаковых условия для определения, была или нет нажата кнопка на радиопульте.

if ( digitalRead(RADIO_PIN1) == HIGH) {
    Serial.println("Relay 1");
    statusRelay1 = !statusRelay1;
    digitalWrite(RELAY1, statusRelay1);
    delay(100);
  }
  if ( digitalRead(RADIO_PIN2) == HIGH) {
    Serial.println("Relay 2");
    statusRelay2 = !statusRelay2;
    digitalWrite(RELAY2, statusRelay2);
    delay(100);
  }

Если кнопка была нажата, то мы инвертируем статус реле, и включаем или выключаем реле.

statusRelay1 = !statusRelay1;
digitalWrite(RELAY1, statusRelay1);

Следующее условие полностью взято из урока «Управление Arduino с помощью пульта ДУ (IR). Библиотека IRremote». Добавляем обработку нажатия кнопки на пульте ДУ, а именно инвертирование статуса реле, и отправка сигнала на включение или выключение реле.

statusRelay1 = !statusRelay1;
digitalWrite(RELAY1, statusRelay1);

Код получился достаточно компактный и понятный.

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

#include "IRremote.h"
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results; void setup() {
  Serial.begin(9600);
  // In case the interrupt driver crashes on setup, give a clue
  // to the user what's going on.
  Serial.println("Enabling IRin");
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin"); } void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
  delay(100); 
}

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

FFFFFFFF
FFA857
FF02FD
FF18E7
FF38C7
FF4AB5
FF5AA5
FF10EF
FF5AA5
FFFFFFFF
FF10EF
FF5AA5

И можете включать и выключать своим пльтом не только телевизор, но и свет.

Подключение проходных выключателей и лампочек к реле.

Осталось подключить силовую часть.

Внимание! При работе с напряжением 220 В. необходимо соблюдать технику безопасности.

Собираем все по схеме ниже.

Подключение проходных выключателей и лампочек к реле.

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

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

Пришло время проверить управление с помощью радиопульта, и пульта ДУ, в связке с проходным выключателем.

Минусы данной схемы управления светом.

Не смотря на достаточно простую схему подключения, и небольшой код для Arduino, данная схема обладает рядом минусов:

  • Для каждого переключателя нужно прокладывать трехжильный провод. Если у вас установлен однопозиционный выключатель, вы не сможете использовать данную схему управления освещением. Если у вас двухпозиционный выключатель, то вы можете установить управление всего 1 лампой, и при этом, нужно переделать старую схему подключения.
  • Нельзя использовать твердотельное реле. Это связано с тем, что у твердотельного реле всего один нормально разомкнутый контакт.
  • Небольшая дальность действия радиопульта и пульта ДУ.
  • Необходимо место в распределительной коробке для установки всей электроники. Также, необходимо экранировать слаботочную часть, иначе возможны помехи и ложные срабатывания.

Вывод.

Схема управления достаточно интересная и жизнеспособная, не смотря на ряд минусов. Я у себя при ремонте сразу разделил на 2 распределительные коробки слаботочную часть и высокую сторону 220 В., но проложил практически ко всем однополюсным выключателям двухжильные провода. Поэтому буду искать более подходящее решения для проложенной у себя проводки.

Понравился проект Arduino управление светом с 3 мест: Пульт ДУ + Радиопульт + Переключатель? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скетч управления двумя реле с помощью радиоприёмника HY-DJM-5V, модуль инфракрасного приемника KY-022 Скетч управления двумя реле с помощью радиоприёмника HY-DJM-5V, модуль инфракрасного приемника KY-022.ino1 Kb 82 Скачать

Комментарии

Ваше Имя*