- Подключаем сервомашинку и управляем со смартфона
- Интерфейс управления
- Программа управления
- Схема соединения
- Серводвигатель, управляемый Bluetooth, с использованием Arduino
- Необходимый материал
- Модуль Bluetooth HC-06
- Принципиальная электрическая схема
- Настройка приложения Roboremo для управления сервоприводом:
- Код и объяснение
- Работа управления серводвигателем через Bluetooth:
Подключаем сервомашинку и управляем со смартфона
В данной статье вы узнаете, как при помощи данного сервиса RemoteXY очень легко управлять сервомашинками. Сервомашинкой мы будем управлять при помощи элемента управления «Слайдер».
Кратко о том, что представляет из себя сервомашинка. Это электромотор с редуктором и схемой управления в одном корпусе. На выходе мы получаем управляемое перемещение вала редуктора. Что бы управлять таким перемещением, сервомашинка имеет специальный входной сигнал управления. Сигнал представляет из себя импульс определенной длительности, который должен повторяться 50 раз в секунду. Временная ширина импульса определят положения выходного вала сервомашинки, к которому его стремится повернуть двигатель. То есть, задавая определенную ширину импульса и повторяя его 50 раз в секунду мы можем ожидать, что выходной вал сервы займет определенное желаемое положение.
Среднему положению выходного вала сервомашинки соответствует ширина импульса 1500 мс. Крайнему левому 500 мс, крайнему правому 2500 мс. Нам не придется вручную генерировать последовательность импульсов для нашей сервомашинки, мы используем библиотеку Arduino «servo.h», которая проделает за нас всю работу. Мы только ей укажем, какая ширина импульса нам необходима в данный конкретный момент.
Есть одна особенность использования библиотеки «servo.h». Ее нельзя использовать совместно с библиотекой программного последовательного порта «SoftwareSerial.h». Эти библиотеки используют совместные ресурсы микроконтроллера. Сервоприводы будут подергиваться, так как поддержание постоянной ширины импульсов будет невозможно. Для решения этой проблемы для обмена данными со смартфоном настроим библиотеку RemoteXY на аппаратный последовательный порт.
Однако аппаратный последовательный порт, использующий пины 0 и 1 используется для программирования чипа. Если к этим пинам подключить Bluetooth модуль, то программирование станет невозможно. Если у вас плата Arduino Mega, вы можете использовать один из трех дополнительных аппаратных последовательных портов. Если все же необходимо использовать единственный порт на стандартной Arduino, то для программирования придется отсоединять модуль Bluetooth.
Интерфейс управления
Войдите в редактор на этом ресурсе и сконструируйте следующий интерфейс управления: разместите всего один слайдер, можете сделать его достаточно крупным. Вот что получилось у нас:
В настройках проекта выберите целевую платформу «Arduino (Serial), library version». Этим мы указываем, что хотим получить код для аппаратного последовательного порта. Напомним, что настройки проекта открываются при нажатии кнопка-карандаша, расположенного справа от имени проекта.
Нажимаем кнопку «Получить код» и загружаем исходный код на свой компьютер. Открываем в IDE Arduino.
Программа управления
Теперь нам необходимо написать код программы, который будет являться промежуточным звеном между слайдером и сервомашинкой. Информация о положении слайдера находится в структуре RemoteXY в поле slider_1 (если вы переименовали ваш слайдер, имя переменной будет соответствовать имени слайдера).
Нам необходимо написать математическую формулу, которая пересчитывает значение положения слайдера, изменяемое от 0 до 100 в величину длительности импульса для управления сервой. Длительность импульса изменяется от 500 до 2500 (1500 среднее значение). Получаем такую формулу:
Так же в функции setup мы установим начальное положения слайдера равным 50 — среднее положение. При подключении со смартфона первым делом приложение считывает состояния всех элементов управления. Тем самым положение слайдера установится на середину. У меня получился следующий простой код:
В коде мы подключаем библиотеку servo.h и определяем одну серву с именем myservo. В процедуре инициализации setup инициализируется библиотека RemoteXY (как в примере), далее инициализируется серва на пин 9, и устанавливается среднее положение слайдера. В глобальном цикле — процедуре loop первым делом запускается обработчик RemoteXY. Далее вычисляется длительность импульса по формуле. И эта длительность передается в качестве параметра в функцию writeMicroseconds, тем самым задавая положение вала сервомашинки, соответствующее положению слайдера на смартфоне, в каждом цикле программы.
Схема соединения
Мы использовали микросервомашинку, питание которой подключили напрямую к +5V питания платы Arduino. Это не является правильным решением, так как сервомашинка потребляет достаточно большой ток под нагрузкой, и может мешать работе микроконтроллера. Правильным решением будет являться питание сервомашинок от отдельного источника. Но она у нас вращается свободно, и мы сможем провести тест. На схеме показано соединение сервомашинки и модуля Bluetooth к плате Arduino. Bluetooth модуль HC-06 подключен к аппаратному последовательному порту. Его необходимо отключать при программировании микроконтроллера.
Если вы собрали схему, вам осталось загрузить скетч в вашу Arduino. Далее загрузите мобильное приложение RemoteXY, и можете соединиться с вашей Arduino. Перемещая слайдер на экране смартфона/планшета вы сможете управлять сервомашинкой.
Серводвигатель, управляемый Bluetooth, с использованием Arduino
В робототехнике часто используется серводвигатель для точного управления. В этом уроке мы покажем вам, как использовать серводвигатель по беспроводной сети с Arduino UNO и устройством Android через соединение Bluetooth. Мы уже управляли сервоприводом с помощью Arduino, на этот раз мы управляем сервомотором с помощью Arduino и Bluetooth.
Необходимый материал
- Arduino UNO
- Модуль Bluetooth HC-05 или HC-06
- Серводвигатель
- Приложение Roboremo из Playstore
- Макетная плата
- Соединительный провод
Модуль Bluetooth HC-06
Bluetooth может работать в следующих двух режимах:
В командном режиме мы сможем настроить свойства Bluetooth, такие как имя сигнала Bluetooth, его пароль, рабочую скорость передачи данных и т. Д. Рабочий режим — это тот, в котором мы сможем отправлять и получать данные между микроконтроллером PIC. и модуль Bluetooth. Следовательно, в этом руководстве мы будем играть только с рабочим режимом. Для командного режима будут оставлены настройки по умолчанию. Имя устройства будет HC-05 (я использую HC-06), а пароль будет 0000 или 1234 и, что наиболее важно, скорость передачи данных по умолчанию для всех модулей Bluetooth будет 9600.
Модуль работает от источника питания 5 В, а сигнальные контакты работают от напряжения 3,3 В, следовательно, в самом модуле присутствует регулятор 3,3 В. Следовательно, нам не о чем беспокоиться. Из шести контактов только четыре будут использоваться в рабочем режиме. Таблица соединений выводов приведена ниже.
S.No | Пин на доске HC-05 / HC-06 | Имя пина на MCU | Номер пина в PIC |
1 | Vcc | Vdd | 31 — й контактный |
2 | Vcc | Gnd | 32- й пин |
3 | Tx | RC6 / Tx / CK | 25 — й контактный |
4 | Rx | RC7 / Rx / DT | 26- й контакт |
5 | состояние | NC | NC |
6 | EN (включить) | NC | NC |
Ознакомьтесь с нашими другими проектами, чтобы узнать больше о Bluetooth-модуле HC-05 с другими микроконтроллерами:
- Игрушечная машинка с управлением по Bluetooth и Arduino
- Система домашней автоматизации с управлением по Bluetooth с использованием 8051
- Голосовое управление подсветкой с использованием Raspberry Pi
- FM-радио, управляемое смартфоном, с использованием Arduino и обработки
- Взаимодействие модуля Bluetooth HC-06 с микроконтроллером PIC
Также проверьте здесь все проекты, связанные с bluetooth.
Принципиальная электрическая схема
Принципиальная схема для этого проекта управления сервомотором Arduino Bluetooth приведена ниже:
Настройка приложения Roboremo для управления сервоприводом:
Шаг 1: — Загрузите приложение Roboremo из Android Play Store и установите его на свой смартфон. После его установки вы увидите окно приложения, как показано на рисунке 1, и, нажав кнопку «Меню» , вы увидите окно, показанное на рисунке 2 ниже:
Шаг 2: — Затем нажмите кнопку подключения , и вы увидите окно, показанное на рисунке 3 ниже, затем вам нужно выбрать « Bluetooth RFCOMM», после чего вы сможете подключить модуль Bluetooth HC-06 к своему приложению для Android «Roboremo».
Шаг 3: — После подключения к модулю Bluetooth HC-06 вернитесь к окну Figure2 и нажмите « Edit ui » для создания пользовательского интерфейса в соответствии с вашими потребностями.
При нажатии на «edit ui» вы снова увидите окно, показанное на рисунке 1, затем щелкните в любом месте экрана, вы увидите окно приложения, подобное рисунку 4, и выберите « Button », чтобы получить структуру кнопок.
Шаг 4: — После выбора кнопки на экране появится структура кнопок для редактирования. Вы можете изменять размер и перемещать структуру в любом месте экрана. Теперь, чтобы установить значение, которое будет отправляться при нажатии через Bluetooth, вы должны «установить действие при нажатии» (как показано на рисунке 6) и ввести значение, которое вы хотите отправить с этой конкретной кнопки. Например, мы отправляем «1» для поворота сервопривода, нажав кнопку «Пуск» в приложении Roboremo для Android.
Вы можете проверить все значения, отправляемые при нажатии на разные кнопки, в таблице в следующем разделе.
Шаг 5: — Наконец, у нас есть пользовательский интерфейс для управления серводвигателем с помощью смартфона.
Код и объяснение
Полный код для сервомотора управления Arduino через Bluetooth приведен в конце.
В Arduino есть библиотека для сервомоторов, и она обрабатывает все вещи, связанные с ШИМ, для поворота сервопривода, вам просто нужно ввести угол, на который вы хотите повернуть, и есть функция servo1.write (angle); который будет вращать сервопривод на желаемый угол.
Итак, мы начинаем с определения библиотеки для серводвигателя, а программная последовательная библиотека используется для определения выводов Rx и Tx.
#включают #включают
В приведенном ниже коде мы инициализируем выводы Arduino для Rx и Tx, определяя переменные для сервопривода и других вещей .
Серво myServo; int TxD = 11; int RxD = 10; int сервопозиция; int servopos; int new1; Программное обеспечение Последовательный Bluetooth (TxD, RxD);
Теперь настройте все переменные и компоненты на начальную стадию. Здесь мы прикрепили сервопривод к 9- му контакту Arduino и установили начальное положение сервопривода на 0 градусов. Скорость передачи данных для последовательной связи и связи Bluetooth также установлена на 9600.
В функции void loop Arduino будет постоянно проверять входящие значения и вращать сервопривод в соответствии со значением, полученным от смартфона. Все значения будут получены по последовательной связи.
Если значение равно 0, сервопривод повернется на 0 градусов. Точно так же, если мы отправим 45, 90, 135 и 180 из приложения Bluetooth, сервопривод будет вращаться на угол 45, 90, 135 и 180 градусов соответственно.
Если мы отправим значение «1», нажав кнопку Start , сервопривод будет вращаться непрерывно, пока не будет нажата кнопка остановки . Здесь мы направляем «2» при нажатии стоп кнопки, которая будет читаться в Arduino и сломается то время как петли и серво будет остановлен.
Работа управления серводвигателем через Bluetooth:
В этом проекте мы управляем серводвигателем с помощью Android-приложения «Roboremo». В интерфейсе этого приложения мы создали 5 кнопок для управления серводвигателем, как объяснялось ранее. Работа каждой кнопки приведена в таблице ниже:
Название кнопки
Отправка значения
Эта кнопка используется для запуска вращения сервопривода от 0⁰ до 180⁰.
Эта кнопка используется для остановки сервопривода в любой момент.
Эта кнопка используется для поворота сервопривода на 0⁰.
Эта кнопка используется для поворота сервопривода на 90⁰.
Эта кнопка используется для поворота сервопривода на 180⁰.
Таким образом, при нажатии этих кнопок в Android-приложении Roboremo данные будут отправлены через Bluetooth смартфона на модуль Bluetooth HC-06. Из этого модуля HC-06 данные принимаются Arduino, и Arduino вращает сервопривод под углом, определенным в коде для конкретной кнопки. Мы также закодировали угол 45 и 135, но из-за ограничений приложения Roboremo вы можете создать только 5 кнопок, поэтому мы пропустили две кнопки.
Вот как вы можете отправлять данные со смартфона на Arduino с помощью Bluetooth для управления сервоприводом по беспроводной сети. Это можно использовать во многих приложениях, таких как игрушечные машинки, роботы и т. Д.