При изучении Arduino, часто возникают разнообразные идеи. Одна из самых распространённых - это беспроводное управление несколькими реле. Для включения различной нагрузки: открывать гаражные ворота, включать и выключать электроприборы и управление освещением. Но как быть, если знания не хватает для реализации идеи. Для этого отлично подойдёт радиопульт, в виде брела, который продается вместе с приемником HY-DJM-5V. Почему данный пульт подойдёт для новичка? Это связано с простотой подключения и использования радиопульта с приёмником HY-DJM-5V в Arduino проектах. Данный пульт и приемник я использовал в управлении светом в проекте «Arduino управление светом с 3 мест: Пульт ДУ + Радиопульт + Переключатель».
Для урока понадодиться:
В интернете не так много информации по данному радиопульту. Есть источники, в которых говорится, что он работает на частоте 433 МГц. В других источниках говорится, что работает на частоте 315 МГц. Для нас нет большой разницы, на какой частоте работает пульт и приемник. Это не помешает нам сделать отличный проект на Arduino.
Не смотря на то, что обещают до 50 метров дальность действия, мой пульт позволяет управлять только до 20 м. при прямой видимости, за стеной уже не работает. Рассчитал по формуле, и припаял к приемнику спиралевидную антенну, сигнал стал более устойчивым, но радиус действия практически не изменился. Возможно, что я неправильно рассчитал антенну, но формула простая, и ошибиться я не мог.
Разобрал я пульт, чтобы посмотреть, из чего он состоит. Пульт сделан на микросхеме SC 2262.
Схема пульта дистанционного управления на микросхеме SC 2262.
Схема приемника HY-DJM-5V.
Так приемник HY-DJM-5V выглядит в живую.
Для того, чтобы ваш сосед с таким же радиопультом не смог открыть ваш гараж, или включать и выключать свет, на пульте и на приемнике есть система кодирования. Рядом со свободными ножками приемника и передатчика есть 2 контактные полоски, одна «+» вторая «-».
И для кодирования сигнала свободные ножки припаиваем к минусу или плюсу, так, чтобы на приемнике и передатчике эти перемычки были одинаковые.
На фото приведен пример использования приемника HY-DJM-5V без Arduino. Мы можем подключить приемник к источнику питания 5В, и управлять нагрузкой. На схеме ниже подключены четыре светодиода. А как мы знаем, вместо светодиодов можно, без проблем, подключить пятивольтовое реле.
Схема подключения приемника HY-DJM-5V без Arduino будет вот такой.
Использование приемника без Arduino имеет большой минус. Светодиод светится, пока нажата кнопка на радиопульте. Поэтому, в данную схему добавит Arduino NANO.
Как мы поняли из примера выше, нам нужно в схему добавить Arduino. Схема подключения 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 твердотельными реле. Вот что получилось. Как видим, все работает отлично.
На схеме 2 модуля, на каждом по 2 обычных реле. Не нашел векторного изображения модуля с четырьмя твердотельными реле, поэтому схема получилась такая. Но принцип один и тот же.
Как видим, все отлично работает, и, используя пульт радиоуправления с приемником HY-DJM-5V, можно сделать и другие интересные проекты.
Появились вопросы или предложения, не стесняйся, пиши в комментарии!
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке.
Понравилась статья? Поделитесь ею с друзьями:
Файлы для скачивания
![]() |
Код для управления 4 реле, с помощью приемника HY-DJM-5V и Arduino NANO.ino | 2 Kb | 500 | Скачать |
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 12 декабря , 2020
Читайте также
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.