#30. Радиопульт с приемником HY-DJM-5V. Подключаем к Arduino.

.#30. Радиопульт с приемником HY-DJM-5V. Подключаем к Arduino.

При изучении Arduino, часто возникают разнообразные идеи. Одна из самых распространённых - это беспроводное управление несколькими реле. Для включения различной нагрузки: открывать гаражные ворота, включать и выключать электроприборы и управление освещением. Но как быть, если знания не хватает для реализации идеи. Для этого отлично подойдёт радиопульт, в виде брела, который продается вместе с приемником HY-DJM-5V. Почему данный пульт подойдёт для новичка? Это связано с простотой подключения и использования радиопульта с приёмником HY-DJM-5V в Arduino проектах. Данный пульт и приемник я использовал в управлении светом в проекте «Arduino управление светом с 3 мест: Пульт ДУ + Радиопульт + Переключатель».

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

Для урока понадодиться:

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

В интернете не так много информации по данному радиопульту. Есть источники, в которых говорится, что он работает на частоте 433 МГц. В других источниках говорится, что работает на частоте 315 МГц. Для нас нет большой разницы, на какой частоте работает пульт и приемник. Это не помешает нам сделать отличный проект на Arduino.

Характеристики пульта

Характеристики пульта:

  • частота передачи 315 Мгц,
  • количество каналов 4,
  • дальность действия до 50 м
  • элемент питания 23 a / 12 v

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

Разобрал я пульт, чтобы посмотреть, из чего он состоит. Пульт сделан на микросхеме SC 2262.

Пульт сделан на микросхеме SC 2262.

Схема пульта дистанционного управления на микросхеме SC 2262.

Схема пульта дистанционного управления на микросхеме SC 2262.

Характеристики приемника HY-DJM-5V:

  • частота приема - 315 Мгц,
  • количество каналов – 4,
  • режим – "включен", пока нажата кнопка,
  • тип выхода - открытый коллекто

Схема приемника HY-DJM-5V.

Схема приемника HY-DJM-5V.

Так приемник HY-DJM-5V выглядит в живую.

Так приемник HY-DJM-5V

Кодирование сигнала.

Для того, чтобы ваш сосед с таким же радиопультом не смог открыть ваш гараж, или включать и выключать свет, на пульте и на приемнике есть система кодирования. Рядом со свободными ножками приемника и передатчика есть 2 контактные полоски, одна «+» вторая «-».

Рядом со свободными ножками приемника и передатчика есть 2 контактные полоски

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

Использование радиопульта и приёмника HY-DJM-5V без Arduino.

Использование радиопульта и приёмника HY-DJM-5V без Arduino.

На фото приведен пример использования приемника HY-DJM-5V без Arduino. Мы можем подключить приемник к источнику питания 5В, и управлять нагрузкой. На схеме ниже подключены четыре светодиода. А как мы знаем, вместо светодиодов можно, без проблем, подключить пятивольтовое реле.

Схема подключения приемника HY-DJM-5V без Arduino будет вот такой.

На схеме ниже подключены четыре светодиода

Использование приемника без Arduino имеет большой минус. Светодиод светится, пока нажата кнопка на радиопульте. Поэтому, в данную схему добавит Arduino NANO.

Управление реле, с помощью радиопульта с приемником HY-DJM-5V и Arduino NANO.

Как мы поняли из примера выше, нам нужно в схему добавить Arduino. Схема подключения HY-DJM-5V к Arduino NANO будет следующая:

Схема подключения HY-DJM-5V к Arduino NANO


Код для управления 4 реле, с помощью приемника HY-DJM-5V и Arduino NANO.

Код для управления 4 реле, с помощью приемника HY-DJM-5V и Arduino NANO.

Как и писал в начале статьи, код получается достаточно простой. Даже проще, чем управление светодиодом с помощью кнопки. Тут не нужно бороться с дребезгом. Но задержку нужно сделать, потому что, при большом расстоянии между пультом и приемником, сигнал бывает не стабильным, и реле будет несколько раз подряд включаться и выключаться.
// Радиопульт с приемником HY-DJM-5V.
// https://portal-pk.ru
//переменные для подключении 4 реле //
#define RELAY1 6
#define RELAY2 7
#define RELAY3 8
#define RELAY4 9
// переменные для подключения 4 контактов с приемника HY-DJM-5V //
#define RADIO_PIN1 2
#define RADIO_PIN2 3
#define RADIO_PIN3 4
#define RADIO_PIN4 5
// переменные для хранения состояния реле //
boolean statusRelay1 = false;
boolean statusRelay2 = false;
boolean statusRelay3 = false;
boolean statusRelay4 = false;
void setup() {
  //инициализировать пины реле как выход //
  pinMode(RELAY1, OUTPUT);
  pinMode(RELAY2, OUTPUT);
  pinMode(RELAY3, OUTPUT);
  pinMode(RELAY4, OUTPUT);
  // пины приемника на вход //
  pinMode(RADIO_PIN1, INPUT);
  pinMode(RADIO_PIN2, INPUT);
  pinMode(RADIO_PIN3, INPUT);
  pinMode(RADIO_PIN4, INPUT);
// инициализируем работу с монитором порта 
// и выведем надпись "Relay Ok!" 
  Serial.begin(9600);
  Serial.println("Relay Ok!");
}
void loop() {
  //Если пришел сигнал 
  //выводим в монитор порта информацию что сработало реле 1 "Relay 1". 
  if ( digitalRead(RADIO_PIN1) == HIGH) {
    Serial.println("Relay 1");
    //инвертируем статус реле //
    statusRelay1 = !statusRelay1;
    // отправляем статус на включения или выключения //
    digitalWrite(RELAY1, statusRelay1);
    // подождем 100 мс //
    delay(100);
  }
  if ( digitalRead(RADIO_PIN2) == HIGH) {
    Serial.println("Relay 2");
    statusRelay2 = !statusRelay2;
    digitalWrite(RELAY2, statusRelay2);
    delay(100);
  }
    if ( digitalRead(RADIO_PIN3) == HIGH) {
    Serial.println("Relay 3");
    statusRelay3 = !statusRelay3;
    digitalWrite(RELAY3, statusRelay3);
    delay(100);
  }
    if ( digitalRead(RADIO_PIN4) == HIGH) {
    Serial.println("Relay 4");
    statusRelay4 = !statusRelay4;
    digitalWrite(RELAY4, statusRelay4);
    delay(100);
  }
}

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

Создаем переменные для подключения 4 реле, и переменные для подключения 4 контактов с приемника HY-DJM-5V.

//переменные для подключении 4 реле //
#define RELAY1 6
#define RELAY2 7
#define RELAY3 8
#define RELAY4 9
// переменные для подключения 4 контактов с приемника HY-DJM-5V //
#define RADIO_PIN1 2
#define RADIO_PIN2 3
#define RADIO_PIN3 4
#define RADIO_PIN4 5

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

// переменные для хранения состояния реле //
boolean statusRelay1 = false;
boolean statusRelay2 = false;
boolean statusRelay3 = false;
boolean statusRelay4 = false;

В функции setup() нам нужно инициализировать пины реле как выход, а пины приемника на вход, для считывания поступающего сигнала с радиоприемника.

//инициализировать пины реле как выход //
  pinMode(RELAY1, OUTPUT);
  pinMode(RELAY2, OUTPUT);
  pinMode(RELAY3, OUTPUT);
  pinMode(RELAY4, OUTPUT);
  // пины приемника на вход //
  pinMode(RADIO_PIN1, INPUT);
  pinMode(RADIO_PIN2, INPUT);
  pinMode(RADIO_PIN3, INPUT);
  pinMode(RADIO_PIN4, INPUT);

Также инициализируем работу с монитором порта, и выведем надпись "Relay Ok!", что означает, что у нас все работает, и можно начать управлять нашими реле.

// инициализируем работу с монитором порта 
// и выведем надпись "Relay Ok!" 
  Serial.begin(9600);
  Serial.println("Relay Ok!");

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

//Если пришел сигнал 
  //выводим в монитор порта информацию что сработало реле 1 "Relay 1". 
  if ( digitalRead(RADIO_PIN1) == HIGH) {
    Serial.println("Relay 1");
    //инвертируем статус реле //
    statusRelay1 = !statusRelay1;
    // отправляем статус на включения или выключения //
    digitalWrite(RELAY1, statusRelay1);
    // подождем 100 мс //
    delay(100);
  }
  if ( digitalRead(RADIO_PIN2) == HIGH) {
    Serial.println("Relay 2");
    statusRelay2 = !statusRelay2;
    digitalWrite(RELAY2, statusRelay2);
    delay(100);
  }
    if ( digitalRead(RADIO_PIN3) == HIGH) {
    Serial.println("Relay 3");
    statusRelay3 = !statusRelay3;
    digitalWrite(RELAY3, statusRelay3);
    delay(100);
  }
    if ( digitalRead(RADIO_PIN4) == HIGH) {
    Serial.println("Relay 4");
    statusRelay4 = !statusRelay4;
    digitalWrite(RELAY4, statusRelay4);
    delay(100);
  }

Разберём работу по первому каналу. Если пришел сигнал, то выводим в монитор порта информацию, что сработало реле 1 "Relay 1".

if ( digitalRead(RADIO_PIN3) == HIGH) {
    Serial.println("Relay 3");
...
}

Затем инвертируем статус реле, и отправляем статус на включение или выключение.

statusRelay3 = !statusRelay3;
digitalWrite(RELAY3, statusRelay3);
delay(100);

И подождем 100 мс, для того, чтобы наше реле не сработало 2 раза, как и писал выше.

Подключение модуля с 4 твердотельными реле к модулю HY-DJM-5V.

Подключение модуля с 4 твердотельными реле к модулю HY-DJM-5V.

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

Схема подключения четырех реле к модулю HY-DJM-5V.

Схема подключения четырех реле к модулю HY-DJM-5V.

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

Как видим, все отлично работает, и, используя пульт радиоуправления с приемником HY-DJM-5V, можно сделать и другие интересные проекты.

Появились вопросы или предложения, не стесняйся, пиши в комментарии!

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока.

И до встречи в следующем уроке.

Понравилась статья? Поделитесь ею с друзьями:

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

Код для управления 4 реле, с помощью приемника HY-DJM-5V и Arduino NANO Код для управления 4 реле, с помощью приемника HY-DJM-5V и Arduino NANO.ino2 Kb 554 Скачать
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 12 декабря , 2020

Комментарии

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

Djovan
#1 Djovan (13 марта, 2022 в 21:31)
Спасибо за статью! Сколько модуль HY-DJM-5V потребляет ? Можно ли его и реле повесить всё на Arduino Uno ?! 

Cлучайные товары

Посмотреть товар в Магазине »

Мы в соц сетях

Подпишись на канал Telegram

Portal-PK (Портал ПК) © 2015 - 2024
Разработка проектов
AT Block
DWIN Box