- Управляем шаговым двигателем с телефона. Двигатель 28byj 48.
- Умные шторы. Управление шаговым двигателем на Arduino через bluetooth.
- Приложение для телефона позволяющее управлять шаговым двигателем.
- Блоки программы для mit app inventor.
- Для проекта понадобиться следующая электроника:
- Схема подключения шагового двигателя 28BYJ-48, Bluetooth модель HC-05 к Arduino.
- Код (скетч) управления шаговым двигателем на Arduino через bluetooth.
- Умные рулонные шторы своими руками на Arduino.
- Механическая часть умной рулонной шторы.
Управляем шаговым двигателем с телефона. Двигатель 28byj 48.
Сегодня я расскажу как управлять шаговым двигателем 28byj 48 5v. Для управления двигателем мы будем использовать драйвер на микросхеме ULN2003. Так как управлять работой двигателя мы будем по WIFI то и подключать будем к плате ESP8266. Кому интересно подключение к Ардуино, то советую посмотреть вот это видео. Та подробно рассказано про шаги и про библиотеку для управления. Я в том примере использовал библиотеку AccelStepper.
Вот небольшой пример сегодняшнего урока. Слева – это как выглядит на телефоне наше приложение, а справа я управляю шаговым двигателем. Что бы не заслонять сам мотор мне пришлось держать телефон под наклоном. Но думаю, что и так всё видно. Теперь про работу. Управление мотором происходит при нажатии на кнопку. У вас есть выбор, движение по часовой стрелке или против неё. Остановить двигатель можно ещё раз нажав на туже, активную, кнопку или нажав на кнопку Стоп. Текущее состояние мотора можно узнать по изменению цвета кнопки с зелёного на красный, а также сверху дублируется состояние работы.Давайте рассмотрим схему подключения шагового двигателя.
к плате ESP.
Подключение очень простое. Сначала вставляем разъём идущий от шагового двигателя к драйверу ULN2003, а контакты с драйвера соединяем с платой ESP. Что бы было проще, я соединил так.
Питание.
контакт – соединил с землёй на плате, а + с контактом VIN.
Это уже 4 видео из серии — Управляем устройствами с телефона. Посмотреть их, можно здесь.
А теперь пробежимся по скетчу.
Это установленные библиотеки. Вам ничего дополнительно устанавливать не придётся. Все они входят в комплект ARDUINO IDE.
- Сюда вставляем имя WIFI сети и пароль.
- Создаём переменные для хранения значений к каким контактам на плате ESP подключен драйвер двигателя, для удобного обращения к ним.
- Так как мы не используем никаких библиотек для работы с шаговым двигателем, то нам придётся самим управлять шагами, Вот здесь мы и указываем, что делать при об обращении к этим массивам.
- Это переменная для обращения к команде стоп. Если она равна 3, то остановить двигатель.
- Здесь я создал переменную отвечающую за скорость вращения.
- 1 это максимальная скорость. А 70 это очень медленное вращение. Эти цифра – это просто delay в цикле между шагами.
- А это названия которые будут выведены на кнопках.
Следующий код
- Весь этот HTML код отвечает за вывод на экран кнопок при включенном состоянии и выключенном.
- Это кодировка для распознавания русского шрифта.
- Это title страницы.
- Здесь все основные настройки. Такие как ширина и высота, размер шрифта и цвет шрифта. И другие. Всё это будет работать, если дальше в тексте не будут внесены изменения.
- Это вывод на экран заголовка. Заголовок 3 уровня и выравнивание по центру.
- Здесь мы показываем каким шрифтом, цветом фона и выравниванием по центру будет выведено состояние двигателя. Крутится ли он по часовой или против, или вообще остановлен.Этот код отвечает за состояние и цвет кнопок, во включенном или выключенном состоянии. Ширину кнопок я указал 310 пикселей.
Такой setup мы уже рассматривали десятки раз. Указываем, что выводы ESP работают на выход. Подключаемся у WIFI сети и получаем IP адрес по которому будем заходить на web страницу и запускаем сервер.
В цикле loop обрабатываем значение нажатой кнопки.
Если статус 1, то поворачиваем двигатель по часовой, а если 2, то против часовой. А это тот delay который мы установили в начале кода, и который отвечает за скорость вращения.
Этот код устанавливает значения статуса двигателя в зависимости от полученных сервером значений.
Если на сервер пришёл ON, установить статус 1 и крутить мотор в одну сторону, если 2, то в другую, а если 3, то остановить двигатель.
А это сама команда на вращение или остановку.
Теперь давайте ещё раз посмотрим как работает наша схема.
При нажатии на кнопку, например по часовой, двигатель начинает вращаться по часовой стрелке. Если нажать против часовой, то двигатель сразу начнёт вращаться в другую сторону. Так, что остановка двигателя, пред сменой направления не обязательна.
Остановку можно произвести с помощью специальной кнопки или ещё раз нажав на активную в данный момент кнопку.
Состояние двигателя можно увидеть сверху или по красному фону кнопки.
Переключения происходят практически без задержек.
Если вам интересна эта тема, то я могу снять продолжение этого видео. Можно вывести на экран не только смену направления движения, но и скорость или количество градусов на которое повернётся двигатель.
Объём вашего интереса, я буду оценивать по количеству лайков и комментариев. Чем их будет больше, тем быстрее выйдет новое видео.
Ну, а если вам нравятся мои уроки, то ставьте лайк и делитесь моими видео, с другими. Это очень поможет мне в продвижении канала, а меня будет стимулировать выпускать уроки чаще и интереснее.
Вы видите ссылки на видео, которые, я думаю будут вам интересны. Перейдя на любое из этих видео вы узнаете что-то новое, а ещё поможете мне. Ведь любой ваш просмотр — это знак YOUTUBE, что это кому-то интересно и что его надо показывать чаще.
Спасибо.
А пока на этом всё.
Умные шторы. Управление шаговым двигателем на Arduino через bluetooth.
В своей повседневной жизни мы все чаще и чаше используем беспроводные устройства, которые облегчают нам работу и быт. Сегодня поговорим о том, как можно сделать управление шаговым двигателем на Arduino через bluetooth. На основе чего можно реализовать достаточно интересные проекты, такие как умные шторы.Давайте разберемся, как это можно сделать своими руками.
Приложение для телефона позволяющее управлять шаговым двигателем.
Планировал сделать приложение в mit app inventor, но, к сожалению что-то случилось с данным сервисом и приложение для тестирования перестало работать. Возможно, на данный момент все работает, но на момент, когда я делал проект «управление шаговым двигателем по bluetooth» наблюдалась данная проблема. Поэтому сделал приложение в APP Thunkable, по функционалу они очень похожи и исходные материалы приложений будут работать в обоих сервисах.
Интерфейс приложения достаточно простой. Несколько текстовых полей, кнопок, бегунок и список.
Блоки программы для mit app inventor.
Эта часть программы, отвечающая за подключение по bluetooth.
Управление шаговыми двигателями происходит с помощью данных элементов.
Я сделал процедуру, которая позволяет реже отправлять значения при перемещении бегунка.
Вот такое приложение для телефона, позволяющее управлять шаговым двигателем с помощью блютуз.
Для проекта понадобиться следующая электроника:
Схема подключения шагового двигателя 28BYJ-48, Bluetooth модель HC-05 к Arduino.
Как видно из схемы к Arduino NANO, подключаем шаговый двигатель 28BYJ-48, Bluetooth модель HC-05. Драйвер шагового двигателя ULN2003 запитать лучше от отдельного блока питания 5-12 В.
Если делать умные рулонные шторы, то желательно добавить в схему конечный выключатель. А лучше геркон или KY-003 модуль датчика Холла. На штору поместить магнит. Что позволит определять границы перемещения полотна.
Код (скетч) управления шаговым двигателем на Arduino через bluetooth.
В коде всего 2 переменные, которые нужно поменять в том случае если вы будете использовать другой шаговый двигатель. Первая переменная устанавливает скорость по умолчанию – это 5 оборотов в минуту. Вторая определяет сколько нужно шаговому двигателю сделать шагов, чтобы совершить 1 оборот вала.
int currentHeading = 5; // кол-во оборотов в мин int sh = 2048; // колияество шагов для совершения 1 оборота
В следующем блоке кода подключаем библиотеку AccelStepper, которую можно скачать внизу статьи в разделе «Файлы для скачивания ».
// Подключаем библиотеку AccelStepper #include
Затем определяем тип двигателя (точнее тип драйвера шагового двигателя), данное подключение можно использовать с другими драйверами, такими как 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 (flagLeft) < if (sh >0) sh = -1 * sh; mySt.setSpeed(-currentHeading * 68.33); > else
Следующие 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 моделями для печати и модернизировать обычную штору.
Используя электронику из проекта, получится вот такая умная рулонная штора.
Управление шаговым двигателем через Bluetooth имеет ряд ограничений. Самое главное ограничение – это возможность подключиться только к одному устройству. Соответственно управлять сможем одновременно только одним устройством. А в случае со шторой, как правило, их в квартире 3-4 и больше и управлять ими желательно одновременно, что можно реализовать с помощью Wi-Fi управления. Если вам интересно продолжение данной темы, пишите в комментарии.
Понравился проект Умные шторы. Управление шаговым двигателем на Arduino через bluetooth? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Гость: Владимир (24 декабря, 2022 в 09:36)
Почему бы не сделать реализацию данного проекта через WI-FI? И управление через telegram бота, это было бы интересно
Драйвер мотора MX1508
Датчик жестов, освещенности, цвета и приближения APDS-9960
Создание проектов с сенсорным экраном без кода!
Поддержите равитие конструктора интерфйсов DWIN Box
Выбор и подготовка SD карты для HMI дисплеев DWIN, Nextion.
KY-011 — модуль 2-цветного светодиода. Подключение к Arduino
Программатор чипов Mimaki серий UJF-3042, UJF-6042, JFX-1615, JFX-1631, JFX200-2513, JFX500-2131, UJV500-160, UJV-160.