Управление реле с компьютера при помощи Arduino и bluetooth.
Сегодня в проекте рассмотрим беспроводное управление релес компьютера при помощи Arduino NANO и bluetoothмодуля hc-06. Приложение для компьютера сделал в программе Processing. Не смотря на свой простой дизайн приложения можно использовать для управления от 1 до 5 реле. Для этого достаточно в приложении и в прошивке для Arduino изменить одну переменную. При этом в интерфейсе приложения будет отображать нужное количество кнопок управления и сопутствующей информации.
Описание программы для управления реле с компьютера при помощи Arduino и bluetooth.
Пред тем как делать программу, нужно определиться с её функциями и возможностями. По планам, мое приложение для ПК должно иметь кнопку включения и выключения реле или светодиода. Изначально планировал сделать по 2 кнопки управления, одна включает, вторая выключает реле. Но потом понял, что гораздо нагляднее будет сделать 1 кнопку для управления реле и вывести статус «включено» или «выключено» реле. В итоге получился вот такой интерфейс.
Чтобы сделать программу более функциональной, решил изменить количество управляемого оборудования. Для этого достаточно поменять 1 значение в коде и количество элементов меняется от 1 до 5.
При нажатии на кнопку происходит изменение цвета обводки. Что наглядно отображает работу кнопки. А также при смене состояния реле меняется цвет шрифта на кнопке и изменяется статус: ВКЛ или ВЫКЛ.
Это мое первое приложение, сделанное в Processing, поэтому прошу строго не судить. Если вдруг увидите костыли, прошу указать на более правильное решение. Оставляйте ваши предложения в «Комментариях».
Описание кода Processing IDE для создания программы управления Arduino.
Сначала подключаем библиотеку для работы с последовательным портом и создадим объект, чтобы включить последовательное соединение, а также создадим массив для хранения статуса реле. Самая важная переменная это 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.
Теперь осталось сделать кнопки работоспособными. Для этого используем оператор «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 в массиве, изменяет состояние кнопки и статуса которые выводим ниже.
И для вывода определённого количества элементов управления необходим цикл.
for (int i=0; i< n; i++) {
...
}
Версию программы выложу с подключением и без подключения к последовательному порту, чтобы была возможность проверить интерфейс программу.
Схема подключения модуля с четырьмя реле и bluetooth hc-06 к Arduino.
Подключить реле можно в количестве от 1 до 5 шт. На схеме приведен пример подключения модуля с 4 реле и bluetooth hc-06 к Arduino. Вы можете использовать другое количество реле и другой модуль bluetooth. А также подключить твердотельное реле. В связи с тем, что твердотельное реле чаще всего высокоуровневое, в прошивке есть переменная, отвечающая за выбор логического уровня реле.
Пример исходного кода 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. И так далее.
Это основные настройки которые нужно знать. Всю программу разбирать не буду. Если вы разбираетесь в программировании, то вы без труда в ней разберётесь. Также в программе есть один костыль. Если у вас есть решение как его исправить пишите в комментариях.
Беспроводное управление светом с 2 мест с помощью bluetooth и переключателя.
Есть у меня на сайте проект, в котором я рассказываю, как можно управлять светом с 3 мест с помощью: Пульта ДУ, Радиопульта, Переключателя. Данное управление можно переделать. И вместо или помимо Пульт ДУ + Радиопульт подключить bluetooth. И управлять освещением еще и с компьютера. Достаточно удобно! Давайте рассмотрим, как это сделать.
Схема подключения Arduino NANO, bluetooth модуля hc-06 и модуля с двумя реле.
Как видим, схема изменилась не сильно и управлять также можно с ПК и с помощью переключателей.
Приложение для компьютера с двумя кнопками управления будет выглядеть следующим образом.
Описание работы управлением светом с компьютера по bluetooth.
Как видим на фото ниже, вместо радиоуправления подключил bluetooth модуль hc-06. Код использую тот же, что привел выше безо всяких изменений. Только указал нужное количество реле и тип сигнала низкого уровня. После чего можно приступать к управлению светом, включать с компьютера посредством беспроводной связи по bluetooth и переключателя, который можно установить в монтажную коробку как обычный выключатель.
Вариант отличный, но имеет ряд минусов, о которых я рассказывал в проекте про управление светом с 3 мест.
Подведём итог.
Управление реле с компьютера, скорее всего не очень востребовано, так как мы редко нуждаемся в управлении светом за компьютером. Хотя… Это возможно только мое мнение!
В свези с тем, что это мое первое приложение для компьютера учтены не все моменты и имеются некоторые недочеты. Также есть смысл сделать управление реле по Wi-fi. Жду ваши мнение и предложения.
Понравился проект Управление реле с компьютера при помощи Arduino и bluetooth? Не забудь поделиться с друзьями в соц. сетях.
Комментарии