Умные шторы. Управление шаговым двигателем на Arduino через bluetooth.

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

В своей повседневной жизни мы все чаще и чаше используем беспроводные устройства, которые облегчают нам работу и быт. Сегодня поговорим о том, как можно сделать управление шаговым двигателем на Arduino через bluetooth. На основе чего можно реализовать достаточно интересные проекты, такие как умные шторы.Давайте разберемся, как это можно сделать своими руками.

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

Планировал сделать приложение в mit app inventor, но, к сожалению что-то случилось с данным сервисом и приложение для тестирования перестало работать. Возможно, на данный момент все работает, но на момент, когда я делал проект «управление шаговым двигателем по bluetooth» наблюдалась данная проблема. Поэтому сделал приложение в APP Thunkable, по функционалу они очень похожи и исходные материалы приложений будут работать в обоих сервисах.

Интерфейс приложения достаточно простой. Несколько текстовых полей, кнопок, бегунок и список.

Интерфейс приложения достаточно простой. Несколько текстовых полей, кнопок, бегунок и список.

Блоки программы для mit app inventor.

Блоки программы для mit app inventor.

Эта часть программы, отвечающая за подключение по bluetooth.

Эта часть программы, отвечающая за подключение по bluetooth.

Управление шаговыми двигателями происходит с помощью данных элементов.

Управление шаговыми двигателями происходит с помощью данных элементов.

Я сделал процедуру, которая позволяет реже отправлять значения при перемещении бегунка.

Я сделал процедуру, которая позволяет реже отправлять значения при перемещении бегунка.

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

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

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

Схема подключения шагового двигателя 28BYJ-48, Bluetooth модель HC-05 к Arduino.

Схема подключения шагового двигателя 28BYJ-48, Bluetooth модель HC-05 к Arduino.

Как видно из схемы к Arduino NANO, подключаем шаговый двигатель 28BYJ-48, Bluetooth модель HC-05. Драйвер шагового двигателя ULN2003 запитать лучше от отдельного блока питания 5-12 В.

схема Arduino NANO, подключаем шаговый двигатель 28BYJ-48, Bluetooth модель HC-05. Драйвер шагового двигателя ULN2003 з

Если делать умные рулонные шторы, то желательно добавить в схему конечный выключатель. А лучше геркон или KY-003 модуль датчика Холла. На штору поместить магнит. Что позволит определять границы перемещения полотна.

Код (скетч) управления шаговым двигателем на Arduino через bluetooth.

В коде всего 2 переменные, которые нужно поменять в том случае если вы будете использовать другой шаговый двигатель. Первая переменная устанавливает скорость по умолчанию – это 5 оборотов в минуту. Вторая определяет сколько нужно шаговому двигателю сделать шагов, чтобы совершить 1 оборот вала.

int currentHeading = 5; // кол-во оборотов в мин
int sh = 2048; // колияество шагов для совершения 1 оборота

В следующем блоке кода подключаем библиотеку AccelStepper, которую можно скачать внизу статьи в разделе «Файлы для скачивания».

// Подключаем библиотеку AccelStepper
#include <AccelStepper.h>

Затем определяем тип двигателя (точнее тип драйвера шагового двигателя), данное подключение можно использовать с другими драйверами, такими как L293, L298 и пр.

// Определение тип интерфейса двигателя
#define motorInterfaceType 4
// подключаем двигатель
#define motorPin1  8
#define motorPin2  9
#define motorPin3  10
#define motorPin4  11
AccelStepper mySt(motorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);

Дальше идут переменные, которые нужны для работы алгоритма.

String  val; // строка для получения команд с телефона
bool flag = false; // флаг получения данных
bool flagAuto = false; // флаг бесконечного вращения ШД
bool flagLeft = false; // флаг направления вращения
bool flagStart = false; // флаг старта вращения шд

В блоке setup() определяем параметры скорости и ускорения шагового двигателя.

// Устанавливаем коэффициент ускорения,
  // начальную скорость
  mySt.setMaxSpeed(1000);
  mySt.setAcceleration(400); // Установка ускорения, в шагах в секунду за секунду.
  mySt.setSpeed(currentHeading * 68.33); // Установить скорость (в шагах за секунду). Само движение запускается функцией runSpeed().

И инициализируем соединение с Bluetooth модулем и скорость работы. У вашего Bluetooth модуля скорость работы может быть другая.

Serial.begin(9600);  //соединение и задает скорость передачи данных в бит/c (бод)

В основном цикле loop() проверяем, пришли данные или нет. Если данные получили, сохраняем их в переменную val и поднимаем флаг.

if (Serial.available() > 0) // пришли данные
  {
    val = Serial.readString(); // получаем строку из порта
    flag = true;
  }

После поднятия флага проверяем, какую команду получили. Если ни одна не совпадает, то проверяем, возможно, это число скорости вращения шагового двигателя.

if (flag)
  {
    if (val == "auto")       // если 1 то включаем светодиод
    {
      flagAuto = true;
      Serial.println("auto"); // вывод данных с переносом строки
      flag = false;
    }
    else if (val == "non")       // если 0 то выключаем светодиод
    {
      flagAuto = false;
      Serial.println("non");  // вывод данных с переносом строки
      flag = false;
    }
    else if (val == "left")       // если 0 то выключаем светодиод
    {
      flagLeft = true;
      Serial.println("left");  // вывод данных с переносом строки
      flag = false;
      flagStart = true;
      mySt.setCurrentPosition (0); // обнулить позицию двигателя
    }
    else if (val == "right")       // если 0 то выключаем светодиод
    {
      flagLeft = false;
      Serial.println("right");  // вывод данных с переносом строки
      flag = false;
      flagStart = true;
      mySt.setCurrentPosition (0); // обнулить позицию двигателя
    }
    else
    {
      currentHeading = val.toInt();
      Serial.println(currentHeading);  // вывод данных с переносом строки
      flag = false;
    }
  }

Затем переходим к алгоритму управления шаговым двигателем, в котором определяем статус запуска вращения шагового двигателя «flagStart».

if (flagStart) {

После чего, проверяем направление вращения двигателя и устанавливаем скорость вращения с учетом направления.

if (flagLeft) {
      if (sh > 0)
        sh = -1 * sh;
      mySt.setSpeed(-currentHeading * 68.33);
    }
    else {
      if (sh < 0)
        sh = -1 * sh;
      mySt.setSpeed(currentHeading * 68.33);
    }

Следующие 2 строчки заставляют шаговый двигатель сделать один оборот.

mySt.moveTo(sh);
mySt.runSpeed();  // Ждем пока двигатель не встанет в заданную позицию

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

if (mySt.currentPosition() == sh )
    {
      if (!flagAuto)
        flagStart = false;
      mySt.setCurrentPosition (0); // обнулить позицию двигателя
      Serial.println("zero");  // вывод данных с переносом строки
    }

Такой небольшой код, который можно дополнить и сделать управление рулонными шторами с помощью телефона. А также другие интересные проекты с использованием Arduino и шагового двигателя.

Умные рулонные шторы своими руками на Arduino.

На основе приложения и кода можно сделать своими руками умные рулонные шторы на Arduino. Даже без добавления дополнительных элементов. Для этого достаточно замерить, сколько оборотов делает штора, чтобы достигнуть конечного положения. И добавить в программу данное значение, вместо значения перемещения на 1 оборот. И после чего, при нажатии у вас будет сворачиваться, и разворачиваться штора. Но для безопасной работы лучше установить конечный выключатель или, как рассказывал ранее датчик холла. Чтобы определять конечное положение.

Механическая часть умной рулонной шторы.

Чтобы реализовать механизм умной рулонной шторы можно воспользоваться готовыми 3D моделями для печати и модернизировать обычную штору.

Чтобы реализовать механизм умной рулонной шторы можно воспользоваться готовыми 3D моделями для печати

Используя электронику из проекта, получится вот такая умная рулонная штора.

Используя электронику из проекта, получится вот такая умная рулонная штора.

Заключение.

Управление шаговым двигателем через Bluetooth имеет ряд ограничений. Самое главное ограничение – это возможность подключиться только к одному устройству. Соответственно управлять сможем одновременно только одним устройством. А в случае со шторой, как правило, их в квартире 3-4 и больше и управлять ими желательно одновременно, что можно реализовать с помощью Wi-Fi управления. Если вам интересно продолжение данной темы, пишите в комментарии.

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

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

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

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

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

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

Код (скетч) управления шаговым двигателем на Arduino через bluetooth. Код (скетч) управления шаговым двигателем на Arduino через bluetooth..ino4 Kb 59 Скачать
Приложение для телефона позволяющее управлять шаговым двигателем Приложение для телефона позволяющее управлять шаговым двигателем.aia5 Kb 28 Скачать
Приложение для телефона позволяющее управлять шаговым двигателем Приложение для телефона позволяющее управлять шаговым двигателем.apk3778 Kb 33 Скачать

Комментарии

Ваше Имя*