Сегодня в проекте рассмотрим беспроводное управление реле с компьютера при помощи Arduino NANO и bluetooth модуля hc-06. Приложение для компьютера сделал в программе Processing. Не смотря на свой простой дизайн приложения можно использовать для управления от 1 до 5 реле. Для этого достаточно в приложении и в прошивке для Arduino изменить одну переменную. При этом в интерфейсе приложения будет отображать нужное количество кнопок управления и сопутствующей информации.
Пред тем как делать программу, нужно определиться с её функциями и возможностями. По планам, мое приложение для ПК должно иметь кнопку включения и выключения реле или светодиода. Изначально планировал сделать по 2 кнопки управления, одна включает, вторая выключает реле. Но потом понял, что гораздо нагляднее будет сделать 1 кнопку для управления реле и вывести статус «включено» или «выключено» реле. В итоге получился вот такой интерфейс.
Чтобы сделать программу более функциональной, решил изменить количество управляемого оборудования. Для этого достаточно поменять 1 значение в коде и количество элементов меняется от 1 до 5.
Это мое первое приложение, сделанное в Processing, поэтому прошу строго не судить. Если вдруг увидите костыли, прошу указать на более правильное решение. Оставляйте ваши предложения в «Комментариях».
Для проекта понадобиться следующая электроника:
- Релейный модуль 5 в 1, 2,4, 6, 8 каналов
Сначала подключаем библиотеку для работы с последовательным портом и создадим объект, чтобы включить последовательное соединение, а также создадим массив для хранения статуса реле. Самая важная переменная это int n = 5; Отвечающая за количество управляемых реле.
boolean flag[] = new boolean[n]; boolean flagOld[] = new boolean[n]; int step = 70; void setup() { size(450, 480); myPort = new Serial(this, "COM18", 9600); // Запускает последовательное соедениние myPort.bufferUntil('\n'); // Определяет, до какого символа будут считываться данные с последовательного порта. Символ "\n" или "Новая строка" }
В разделе настройки нам нужно установить размер окна программы и запустить последовательное соединение. Что касается номера COM-порта. Необходимо перейти в раздел «Панель управления\Оборудование и звук\Устройства и принтеры».
Посмотреть свойства вашего устройства, нажав на иконку правой кнопкой мыши и выбрав в выпадающем меню «Свойства».
В открывшемся окне переходим на вкладку «Службы». Тут мы увидим «Последовательный порт», в моем случае это «COM18». У вас будет другой.
В основной функции draw (), которая постоянно повторяется, мы делаем всю графику и функции программы. Итак, сначала нам нужно установить цвет фона, цвет заливки, размер и цвет обводки, а затем с помощью функции rect () рисуем кнопку. Используя функцию text (), мы выводим весь текст, включая строку ledStatus.
background(227, 230, 231); textSize(26); fill(20, 160, 133); text("Управление реле с компьютера", 15, 35); textSize(24); fill(33); text("№", 12, 80); text("Реле", 80, 80); text("Состояние", 230, 80); textSize(24); fill(33); text(i+1, 12, 135+i*step); fill(20, 160, 133); // Зеленый Цвет stroke(33); strokeWeight(1); rect(50, 100+i*step, 150, 50, 10); fill(255); textSize(28); text("Включить", 60, 135+i*step);
Теперь осталось сделать кнопки работоспособными. Для этого используем оператор «if», при нажатии кнопки символ команды будет отправлен через последовательный порт на Arduino, и это включит или выключит реле. Следующие строки используются для выделения кнопки при ее нажатии.
// Если нажата кнопка if (mousePressed && mouseX>50 && mouseX<200 && mouseY>100+i*step && mouseY<150+i*step) { // Выделяет кнопки красным цветом при нажатии stroke(255, 0, 0); strokeWeight(3); noFill(); rect(50, 100+i*step, 150, 50, 10); if (!flagOld[i]) { flag[i] = !flag[i]; flagOld[i] = true; int s; if (flag[i]) s = i; else s = i+n; myPort.write(str(s)); // Посылает символ } } else { flagOld[i] = false; }
Изменения значения flag в массиве, изменяет состояние кнопки и статуса которые выводим ниже.
if (flag[i]) { fill(20, 160, 133); // Зеленый Цвет stroke(33); strokeWeight(1); rect(50, 100+i*step, 150, 50, 10); fill(255); textSize(26); text(onButton, 60, 135+i*step); ledStatus[i] = "ВКЛ."; } else { fill(20, 160, 133); // Зеленый Цвет stroke(33); strokeWeight(1); rect(50, 100+i*step, 150, 50, 10); fill(255, 255, 0); textSize(26); text(offButton, 60, 135+i*step); ledStatus[i] = "ВЫКЛ."; }
И для вывода определённого количества элементов управления необходим цикл.
for (int i=0; i< n; i++) { ... }
Версию программы выложу с подключением и без подключения к последовательному порту, чтобы была возможность проверить интерфейс программу.
Подключить реле можно в количестве от 1 до 5 шт. На схеме приведен пример подключения модуля с 4 реле и bluetooth hc-06 к Arduino. Вы можете использовать другое количество реле и другой модуль bluetooth. А также подключить твердотельное реле. В связи с тем, что твердотельное реле чаще всего высокоуровневое, в прошивке есть переменная, отвечающая за выбор логического уровня реле.
В связи с тем, что программа для ПК получилась универсальная и можно изменять количество управляемых реле. Скетч для Arduino нужно также сделать максимально универсальным.
Первым делом подключим библиотеку для создания программного Serial порта. И укажем переменные, к которым подключим модуль Bluetooth.
#include <SoftwareSerial.h> const int rx = 3; const int tx = 4; SoftwareSerial mySerial (rx, tx);
Также в скетче я предусмотрел настройки для изменения типа рел. Значение 1 – позволит управлять реле высокого уровня. Значение 0 – в свою очередь позволит управлять реле низкого уровня.
const bool level = 1; // 1 - реле высокого уровня 0 - реле низкого уровня int relay_num = 4; // количество реле 1-5 int sdvig_pin = 5; // начальный пин подключения
Следующие 2 переменные определяют, сколько реле мы планируем подключить и номер пина, с которого будет вестись подключение. Соответственно, если мы начинаем с 5 pin и подключим 2 реле, это означает, что реле нужно будет подключить к пинам 5,6. Если нам нужно подключить 4 реле, то для этого будем использовать уже pin 5,6,7,8. И так далее.
Это основные настройки которые нужно знать. Всю программу разбирать не буду. Если вы разбираетесь в программировании, то вы без труда в ней разберётесь. Также в программе есть один костыль. Если у вас есть решение как его исправить пишите в комментариях.
Есть у меня на сайте проект, в котором я рассказываю, как можно управлять светом с 3 мест с помощью: Пульта ДУ, Радиопульта, Переключателя. Данное управление можно переделать. И вместо или помимо Пульт ДУ + Радиопульт подключить bluetooth. И управлять освещением еще и с компьютера. Достаточно удобно! Давайте рассмотрим, как это сделать.
Как видим, схема изменилась не сильно и управлять также можно с ПК и с помощью переключателей.
Приложение для компьютера с двумя кнопками управления будет выглядеть следующим образом.
Как видим на фото ниже, вместо радиоуправления подключил bluetooth модуль hc-06. Код использую тот же, что привел выше безо всяких изменений. Только указал нужное количество реле и тип сигнала низкого уровня. После чего можно приступать к управлению светом, включать с компьютера посредством беспроводной связи по bluetooth и переключателя, который можно установить в монтажную коробку как обычный выключатель.
Вариант отличный, но имеет ряд минусов, о которых я рассказывал в проекте про управление светом с 3 мест.
Подведём итог.
Управление реле с компьютера, скорее всего не очень востребовано, так как мы редко нуждаемся в управлении светом за компьютером. Хотя… Это возможно только мое мнение!
В свези с тем, что это мое первое приложение для компьютера учтены не все моменты и имеются некоторые недочеты. Также есть смысл сделать управление реле по Wi-fi. Жду ваши мнение и предложения.Понравился проект Управление реле с компьютера при помощи Arduino и bluetooth? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
![]() |
кода Processing с подключением к последовательному порту.pde | 3 Kb | 1038 | Скачать |
![]() |
кода Processing без подключения к последовательному порту.pde | 3 Kb | 940 | Скачать |
![]() |
Пример исходного кода Arduino управления реле по Bluetooth.ino | 2 Kb | 1095 | Скачать |
Извините что то я запутался. А где взять приложение для управления по блютуз.
Arduino проекты
13 августа , 2021
Комментариев:1
Файлов для скачивания:3
Фото:10
Понравилась статья? Нажми
Виджеты для Easy HMI
Читайте также
Мы в соц сетях
Комментарии