Управление реле с компьютера при помощи Arduino и bluetooth.

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

Сегодня в проекте рассмотрим беспроводное управление реле с компьютера при помощи Arduino NANO и bluetooth модуля hc-06. Приложение для компьютера сделал в программе Processing. Не смотря на свой простой дизайн приложения можно использовать для управления от 1 до 5 реле. Для этого достаточно в приложении и в прошивке для Arduino изменить одну переменную. При этом в интерфейсе приложения будет отображать нужное количество кнопок управления и сопутствующей информации.


Описание программы для управления реле с компьютера при помощи Arduino и bluetooth.

Пред тем как делать программу, нужно определиться с её функциями и возможностями. По планам, мое приложение для ПК должно иметь кнопку включения и выключения реле или светодиода. Изначально планировал сделать по 2 кнопки управления, одна включает, вторая выключает реле. Но потом понял, что гораздо нагляднее будет сделать 1 кнопку для управления реле и вывести статус «включено» или «выключено» реле. В итоге получился вот такой интерфейс.

Изначально планировал сделать по 2 кнопки управления, одна включает, вторая выключает реле.

Чтобы сделать программу более функциональной, решил изменить количество управляемого оборудования. Для этого достаточно поменять 1 значение в коде и количество элементов меняется от 1 до 5.

Описание программы для управления реле с компьютера при помощи Arduino и bluetooth.

При нажатии на кнопку происходит изменение цвета обводки. Что наглядно отображает работу кнопки. А также при смене состояния реле меняется цвет шрифта на кнопке и изменяется статус: ВКЛ или ВЫКЛ.

Это мое первое приложение, сделанное в Processing, поэтому прошу строго не судить. Если вдруг увидите костыли, прошу указать на более правильное решение. Оставляйте ваши предложения в «Комментариях».

Для проекта понадобиться следующая электроника:

- ARDUINO NANO

- HC-05 hc-06 Bluetooth

- Релейный модуль 5 в 1, 2,4, 6, 8 каналов

Описание кода 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». У вас будет другой.

увидим «Последовательный порт», в моем случае это «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++) {
...
}

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

Схема подключения модуля с четырьмя реле и bluetooth hc-06 к Arduino.

Схема подключения модуля с четырьмя реле и bluetooth hc-06 к Arduino.

Подключить реле можно в количестве от 1 до 5 шт. На схеме приведен пример подключения модуля с 4 реле и bluetooth hc-06 к Arduino. Вы можете использовать другое количество реле и другой модуль bluetooth. А также подключить твердотельное реле. В связи с тем, что твердотельное реле чаще всего высокоуровневое, в прошивке есть переменная, отвечающая за выбор логического уровня реле.

Пример исходного кода 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 и модуля с двумя реле.

Схема подключения Arduino NANO, bluetooth модуля hc-06 и модуля с двумя реле.

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

Приложение для компьютера с двумя кнопками управления будет выглядеть следующим образом.

Приложение для компьютера с двумя кнопками управления будет выглядеть следующим образом.

Описание работы управлением светом с компьютера по bluetooth.

Как видим на фото ниже, вместо радиоуправления подключил bluetooth модуль hc-06. Код использую тот же, что привел выше безо всяких изменений. Только указал нужное количество реле и тип сигнала низкого уровня. После чего можно приступать к управлению светом, включать с компьютера посредством беспроводной связи по bluetooth и переключателя, который можно установить в монтажную коробку как обычный выключатель.

писание работы управлением светом с компьютера по bluetooth.

Вариант отличный, но имеет ряд минусов, о которых я рассказывал в проекте про управление светом с 3 мест.

Вариант отличный, но имеет ряд минусов, о которых я рассказывал в проекте

Подведём итог.

Управление реле с компьютера, скорее всего не очень востребовано, так как мы редко нуждаемся в управлении светом за компьютером. Хотя… Это возможно только мое мнение!

В свези с тем, что это мое первое приложение для компьютера учтены не все моменты и имеются некоторые недочеты. Также есть смысл сделать управление реле по Wi-fi. Жду ваши мнение и предложения.

Понравился проект Управление реле с компьютера при помощи Arduino и bluetooth? Не забудь поделиться с друзьями в соц. сетях.

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

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

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

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

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

кода Processing  с подключением к последовательному порту кода Processing с подключением к последовательному порту.pde3 Kb 16 Скачать
кода Processing без подключения к последовательному порту кода Processing без подключения к последовательному порту.pde3 Kb 14 Скачать
Пример исходного кода Arduino управления реле по Bluetooth Пример исходного кода Arduino управления реле по Bluetooth.ino2 Kb 25 Скачать

Комментарии

Ваше Имя*