0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino UNO开发板无线连接伺服电机方案设计

电子设计 来源:一板网 作者:风筝 2021-01-09 11:47 次阅读

机器人中使用伺服电机进行精确控制很常见。在本文中,我们将向您展示如何使用Arduino UNO开发板无线连接一个伺服电机,并且通过蓝牙连接一台Android设备。我们已经介绍过如何使用Arduino开发板控制伺服电机,这次我们使用无线蓝牙模块HC-06控制伺服电机。

所需的材料

● Arduino UNO开发板

● HC-05或HC-06蓝牙模块

● 伺服电机

● Playstore的Roboremo App

● 面包板

● 连接导线

HC-06蓝牙模块

蓝牙可以运行在以下两种模式:

1. AT指令设置模式

2. 工作模式

在AT指令设置模式下,我们可以配置蓝牙属性,如蓝牙信号的名称、密码、运行波特率等。工作模式是我们可以在PIC单片机和蓝牙模块之间发送和接收数据的一种模式。因此,在本教程中,我们将仅使用工作模式进行测试。AT指令设置模式保留为默认设置。设备名称将是HC-05,密码将为0000或1234,最重要的是所有蓝牙模块的默认波特率为9600。

o4YBAF_5JoqAC0Y4AAMvEkLG6Tk257.png

该模块工作在5V电源,信号引脚工作在3.3V,所以模块内部安装有一个3.3V稳压器。因此我们不必担心。在六个引脚中工作模式只使用了四个引脚。引脚连接表如下所示

序号 HC-05模块的引脚 MCU的引脚 PIC的引脚
1 Vcc Vdd 第31脚
2 Gnd Gnd 第32脚
3 Tx RC6 / Tx / CK 第25脚
4 Rx RC7 / Rx / DT 第26脚
5 State NC NC
6 EN(Enable) NC NC

电路原理

使用Arduino开发板蓝牙控制伺服电机的电路图:

o4YBAF_5Jp2AXX0IAAEqmNvJXuQ298.png

配置Roboremo App以控制伺服电机

第1步: 从Android Play商店下载Roboremo应用程序并将其安装到您的智能手机中。安装完成后,您将看到如下图左侧所示的应用程序窗口,然后点击“Menu”按钮,您将看到如下图右侧所示的窗口:

o4YBAF_5Jq2AGBVOAACrkOT3WIM103.png

第2步: 然后点击“connect”按钮,你会看到如下图3所示的窗口,然后你需要选择'Bluetooth RFCOMM',然后你就可以将HC-06蓝牙模块连接到Android应用'Roboremo'。

o4YBAF_5JsOAPtZKAABqqsy9Xzg845.png

第3步: 连接HC-06蓝牙模块后,返回到第2步右侧的窗口,然后点击'edit ui'按照您的需要创建用户界面。

当点击''edit ui"时,您将再次看到图1所示的窗口,然后在屏幕上的任意位置点击屏幕,您将看到如下图所示的应用程序窗口,并选择“Button”以获得一个按钮模板。

pIYBAF_5Js-AYmn_AABNFiJZrCQ555.png

第4步: 选择按钮模板后,您将在屏幕上获得一个按钮进行编辑。您可以调整大小并将结构移动到屏幕的任何位置。现在,为了设置通过蓝牙点击发送的值,需要设置“set press action”,并键入您想要从该特定按钮发送的值。就像我们通过按下Roboremo android应用程序中的'Start'按钮发送'1'来旋转伺服。

o4YBAF_5Jt2ASkdkAADLsJBIjyM590.png

第5步: 最终我们设计了一个用户界面来使用智能手机来控制伺服电机。

o4YBAF_5JuuAJ0J4AABr58LfvlU472.png

代码和说明

本文末尾给出了使用蓝牙控制伺服电机的完整Arduino代码。

Arduino自带有伺服电机库,它处理所有PWM相关的事情来旋转伺服,你只需要输入你想旋转的角度,然后使用函数servo1.write(angle)即可;该函数将使伺服电机旋转到所需的角度。

因此,我们首先定义伺服电机库和软件串行库用于定义Rx和Tx引脚。

#include

#include

在下面的代码中,我们正在初始化Arduino的Rx和Tx引脚,为伺服电机和其他事情定义变量。

Servo myServo;

int TxD = 11;

int RxD = 10;

int servoposition;

int servopos;

int new1;

SoftwareSerial bluetooth(TxD, RxD);

现在,将所有变量和组件设置为初始阶段。在这里,我们使用Arduino开发板的第9脚连接了伺服电机,并将伺服电机的初始位置设置为0度。串行和蓝牙通信的波特率也设置为9600。

void setup() {

int pos=0;

myServo.attach(9);

myServo.write(0);

Serial.begin(9600); // start serial communication at 9600bps

bluetooth.begin(9600);

}

在void loop()函数中,Arduino将始终检查输入值,并根据智能手机接收到的值旋转伺服器。所有的值将通过串行通信接收。

如果该值为0,伺服将旋转到0度。同样,如果我们从蓝牙应用程序发送45、90、135和180,则伺服器将分别旋转到45、90、135和180度角。

void loop() {

if (bluetooth.available()){

String value = bluetooth.readString();

servoposition = value.toInt();

if (value.toInt() == 0){

Serial.println(servoposition);

myServo.write(0);

}

if (value.toInt() == 45){

Serial.println(servoposition);

myServo.write(45);

}

if (value.toInt() == 90){

Serial.println(servoposition);

myServo.write(90);

}

if (value.toInt() == 135){

Serial.println(servoposition);

myServo.write(135);

}

if (value.toInt() == 180){

Serial.println(servoposition);

myServo.write(180);

}

如果我们通过按下开始按钮发送值'1',伺服将一直旋转,直到按下停止按钮。在这里我们按下停止按钮时发送'2',Arduino开发板读取后,它将跳出while循环,伺服电机停止旋转。

while(value.toInt()==1){

if (bluetooth.available())

{

value = bluetooth.readString();

Serial.println(value);

if (value.toInt()==2)

{Serial.println("YYY");break; }

}

servopos++;

delay(30);

Serial.println(servopos);

myServo.write(servopos);

if (servopos ==180 )

{servopos=0;break;}

}

}

}

使用蓝牙的伺服电机控制的工作过程

pIYBAF_5JvuAM8k7AAWJgoI8eVM718.png

在这个项目中,我们使用Android应用程序“Roboremo”来控制伺服电机。在这个应用程序的界面中,我们创建了5个按钮来控制伺服电机,如前所述。每个按钮的功能在下表中给出:

序号 按钮名称 发送值 描述
1 Start 1 该按钮用于开始将伺服从0°旋转到180°。
2 Stop 2 该按钮用于在任何时候停止伺服。
3 0⁰ 0 该按钮用于将伺服旋转至0°。
4 90⁰ 90 该按钮用于将伺服旋转至90°。
5 180⁰ 180 该按钮用于将伺服旋转至180°。

因此,通过在Android应用程序Roboremo上按下这些按钮,数据将通过智能手机的蓝牙发送到HC-06蓝牙模块。Arduino接收来自该HC-06模块的数据,然后根据代码中按钮表示的角度旋转伺服电机。我们也可以编写角度45和135的代码,但由于Roboremo应用程序的限制,只能创建5个按钮,所以我们跳过了这两个按钮。

通过使用这种方式,我们可以使用蓝牙将数据从智能手机发送到Arduino开发板,然后以无线方式控制伺服器。这可以用于许多应用程序,如玩具车、机器人等。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 伺服电机
    +关注

    关注

    82

    文章

    1828

    浏览量

    56040
  • Arduino
    +关注

    关注

    184

    文章

    6422

    浏览量

    184630
  • 伺服电机控制

    关注

    0

    文章

    12

    浏览量

    7455
收藏 人收藏

    评论

    相关推荐

    如何使用Arduino UNO板和电位器控制伺服电机

    在本Arduino伺服电机教程中,您将学习如何使用Arduino UNO板和电位器控制伺服
    的头像 发表于 02-11 10:11 391次阅读
    如何使用<b class='flag-5'>Arduino</b> <b class='flag-5'>UNO</b>板和电位器控制<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>

    小安派Arduino开发板 ,全新支持以太网口

    前面几款小安派出来的时候,经常有粉丝询问是否支持Arduino?其它款小安派也是支持的,大家可以去安信可社区搜索查看,小安派-UNO-ET485 Arduino开发板来了,兼容
    的头像 发表于 12-06 16:00 327次阅读
    小安派<b class='flag-5'>Arduino</b><b class='flag-5'>开发板</b> ,全新支持以太网口

    小安派-UNO-ET485 Arduino开发板简介

    前面几款小安派出来的时候,经常有粉丝询问是否支持Arduino?其它款小安派也是支持的,大家可以去安信可社区搜索查看,小安派-UNO-ET485 Arduino开发板来了,兼容
    的头像 发表于 12-03 09:58 430次阅读
    小安派-<b class='flag-5'>UNO</b>-ET485 <b class='flag-5'>Arduino</b><b class='flag-5'>开发板</b>简介

    低功耗Wi-Fi无线连接解决方案

    无线连接,将在恶劣条件和具有挑战性的RF(射频)环境中,为各种IIoT应用提供支持。本文将为您介绍IIoT的应用需求与低功耗Wi-Fi无线连接的特性,以及由Silicon Labs(芯科科技)推出的低功耗Wi-Fi无线连接解决
    的头像 发表于 11-15 10:13 519次阅读
    低功耗Wi-Fi<b class='flag-5'>无线连接</b>解决<b class='flag-5'>方案</b>

    Arduino IDE打开开发板管理器搜索Arduino SAM的开发板不能找到怎么解决?

    Arduino IDE打开开发板管理器搜索Arduino SAM的开发板不能找到怎么解决 可能被墙 也没有其他源可以替换 或者手动安装这个开发板
    发表于 11-10 08:29

    如何使用Arduino Uno和三个LED制作简单的电子蜡烛?

    在本文中,工程师展示了如何使用Arduino Uno开发板和三个LED制作简单的电子蜡烛,你可以根据需要增加LED的数量。
    的头像 发表于 07-11 09:49 1025次阅读
    如何使用<b class='flag-5'>Arduino</b> <b class='flag-5'>Uno</b>和三个LED制作简单的电子蜡烛?

    Arduino伺服电机避障机器人

    电子发烧友网站提供《Arduino伺服电机避障机器人.zip》资料免费下载
    发表于 06-29 14:38 0次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>避障机器人

    伺服电机连接Arduino

    电子发烧友网站提供《将伺服电机连接Arduino.zip》资料免费下载
    发表于 06-28 09:38 1次下载
    将<b class='flag-5'>伺服</b><b class='flag-5'>电机</b><b class='flag-5'>连接</b>到<b class='flag-5'>Arduino</b>

    Arduino伺服电机温度计

    电子发烧友网站提供《Arduino伺服电机温度计.zip》资料免费下载
    发表于 06-27 10:46 0次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>温度计

    星形与网状网络拓扑:物联网无线连接基础

    物联网应用有多种不同的无线连接解决方案。考虑到广泛的用例,选择合适的无线连接解决方案来满足给定物联网应用的要求可能非常具有挑战性。
    发表于 06-24 17:26 1223次阅读
    星形与网状网络拓扑:物联网<b class='flag-5'>无线连接</b>基础

    这么漂亮的Arduino开发板你见过吗?

    摘要:找到几块基于Arduino UNO形状的开发板,一起来欣赏下。
    的头像 发表于 06-06 09:52 1021次阅读
    这么漂亮的<b class='flag-5'>Arduino</b><b class='flag-5'>开发板</b>你见过吗?

    Arduino开发板使用NRF24L01进行无线通信

    ”消息,在第二个例子中,我们将在Arduino开发板之间进行双向通信, 其中我们使用在第一个Arduino开发板的操纵杆,控制在第二个Arduin
    发表于 05-30 10:22 2次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>开发板</b>使用NRF24L01进行<b class='flag-5'>无线</b>通信

    使用Arduino开发板控制伺服电机

    大多数情况下,直流电机控制的控制方法都是非常简单的(只需要连接电源和地)。伺服电机有一些不同,它使用3根线连接 (电源、地和信号)将
    发表于 05-06 10:15 0次下载
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>开发板</b>控制<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>

    Huzzah ESP8622连接Arduino Uno,Wifi未连接的原因?

    了一块 ESP8266 Huzzah 开发板,认为它适合 wifi 连接,并且可以连接到家里的 Arduino Uno(如果需要,我也有 F
    发表于 05-04 08:36

    使用Arduino板(UNO)连接不同类型的电机

    在本章中,我们将使用Arduino板(UNO)连接不同类型的电机,并向你展示如何连接电机并从电路板上驱动它。 有三种不同类型的
    发表于 03-30 11:08 0次下载
    使用<b class='flag-5'>Arduino</b>板(<b class='flag-5'>UNO</b>)<b class='flag-5'>连接</b>不同类型的<b class='flag-5'>电机</b>