Управление сервоприводами по bluetooth

Arduino control Servo Motor via Bluetooth

In this tutorial, we will learn how to program an Arduino to control a Servo Motor using either Bluetooth (HC-05 module) or BLE (HM-10 module). Instructions for both modules are provided.

We will use the Bluetooth Serial Monitor App on smartphone to send the angle value to Arduino. Arduino will control the servo motor according to the received value.

Arduino Servo Motor Bluetooth

Hardware Required

Or you can buy the following sensor kit:

Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.

About Servo Motor and Bluetooth Module

If you are unfamiliar with Servo Motors and Bluetooth Modules, including their pinouts, functionality, and programming, please refer to the following tutorials for more information:

Wiring Diagram

To control a Servo Motor using Classic Bluetooth, use the HC-05 Bluetooth module, and refer to the wiring diagram provided below.

Arduino Servo Motor Bluetooth Wiring Diagram

This image is created using Fritzing. Click to enlarge image

To control a Servo Motor using BLE, use the HM-10 BLE module, and refer to the wiring diagram provided below.

Arduino Servo Motor BLE Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Arduino Code — controls Servo Motor via Bluetooth/BLE

The code provided below is compatible with both the HC-10 Bluetooth module and the HM-10 BLE module.

/* * Created by ArduinoGetStarted.com * * This example code is in the public domain * * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-controls-servo-motor-via-bluetooth */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins # include < Servo .h>Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup () < Serial . begin (9600); servo. attach (11); // attaches the servo on pin 11 to the servo object >void loop () < if ( Serial . available ()) < // if there is data comming int angle = Serial . parseInt (); if (angle >= 0 && angle <= 180) < servo. write (angle); // rotate servo Serial . print ( "Rotated servo to angle: " ); // reports action to smartphone app Serial . println (angle); >else < Serial . print ( "Invalid angle: " ); // reports invalid value to smartphone app Serial . println (angle); >> >

Читайте также:  Самые маленькие блютуз колонки

Quick Steps

If you have trouble uploading the code, try disconnecting the TX and RX pins from the Bluetooth module, uploading the code, and then reconnecting the RX/TX pins again.

Open the Bluetooth Serial Monitor App on your smartphone and select the Classic Bluetooth or BLE option, depending on the module you are using.

Bluetooth Serial Monitor App

Bluetooth Serial Monitor pairing

Bluetooth Serial Monitor App

Bluetooth Serial Monitor App

If the Bluetooth Serial Monitor app is useful for you, please give it a 5-star rating on Play Store. Thank you!

Video Tutorial

We are considering to make the video tutorials. If you think the video tutorials are essential, please subscribe to our YouTube channel to give us motivation for making the videos.

Источник

Подключаем сервомашинку и управляем со смартфона

В данной статье вы узнаете, как при помощи данного сервиса RemoteXY очень легко управлять сервомашинками. Сервомашинкой мы будем управлять при помощи элемента управления «Слайдер».

Управляем сервомашинкой со смартфона

Кратко о том, что представляет из себя сервомашинка. Это электромотор с редуктором и схемой управления в одном корпусе. На выходе мы получаем управляемое перемещение вала редуктора. Что бы управлять таким перемещением, сервомашинка имеет специальный входной сигнал управления. Сигнал представляет из себя импульс определенной длительности, который должен повторяться 50 раз в секунду. Временная ширина импульса определят положения выходного вала сервомашинки, к которому его стремится повернуть двигатель. То есть, задавая определенную ширину импульса и повторяя его 50 раз в секунду мы можем ожидать, что выходной вал сервы займет определенное желаемое положение.

Среднему положению выходного вала сервомашинки соответствует ширина импульса 1500 мс. Крайнему левому 500 мс, крайнему правому 2500 мс. Нам не придется вручную генерировать последовательность импульсов для нашей сервомашинки, мы используем библиотеку Arduino «servo.h», которая проделает за нас всю работу. Мы только ей укажем, какая ширина импульса нам необходима в данный конкретный момент.

Читайте также:  Android how to connect bluetooth device

Есть одна особенность использования библиотеки «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 среднее значение). Получаем такую формулу:

Читайте также:  Рейтинг бюджетных гарнитур bluetooth

Так же в функции setup мы установим начальное положения слайдера равным 50 — среднее положение. При подключении со смартфона первым делом приложение считывает состояния всех элементов управления. Тем самым положение слайдера установится на середину. У меня получился следующий простой код:

В коде мы подключаем библиотеку servo.h и определяем одну серву с именем myservo. В процедуре инициализации setup инициализируется библиотека RemoteXY (как в примере), далее инициализируется серва на пин 9, и устанавливается среднее положение слайдера. В глобальном цикле — процедуре loop первым делом запускается обработчик RemoteXY. Далее вычисляется длительность импульса по формуле. И эта длительность передается в качестве параметра в функцию writeMicroseconds, тем самым задавая положение вала сервомашинки, соответствующее положению слайдера на смартфоне, в каждом цикле программы.

Схема соединения

Мы использовали микросервомашинку, питание которой подключили напрямую к +5V питания платы Arduino. Это не является правильным решением, так как сервомашинка потребляет достаточно большой ток под нагрузкой, и может мешать работе микроконтроллера. Правильным решением будет являться питание сервомашинок от отдельного источника. Но она у нас вращается свободно, и мы сможем провести тест. На схеме показано соединение сервомашинки и модуля Bluetooth к плате Arduino. Bluetooth модуль HC-06 подключен к аппаратному последовательному порту. Его необходимо отключать при программировании микроконтроллера.

Схема соединения сервомашинка с Arduino

Если вы собрали схему, вам осталось загрузить скетч в вашу Arduino. Далее загрузите мобильное приложение RemoteXY, и можете соединиться с вашей Arduino. Перемещая слайдер на экране смартфона/планшета вы сможете управлять сервомашинкой.

Источник

Оцените статью
Adblock
detector