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

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

    关注

    85

    文章

    2046

    浏览量

    57817
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    186962
  • 伺服电机控制

    关注

    0

    文章

    16

    浏览量

    7502
收藏 人收藏

    评论

    相关推荐

    Arduino Nano Matter开发板正式上市

    Silicon Labs(芯科科技)和Arduino在近日共同宣布Arduino Nano Matter开发板现已正式上市。这是延续今年3 月芯科科技和Arduino释出
    的头像 发表于 12-10 13:50 175次阅读

    使用恩智浦无线FRDM开发板实现创新无线解决方案

    开发人员现在面临着前所未有的挑战,需要为各种产品设计复杂的软件,通常还要使用不同的处理器。恩智浦的MCUXpresso Developer Experience通过适用于多种MCU平台的通用框架解决了许多挑战。恩智浦推出了新的无线FRDM
    的头像 发表于 11-26 17:40 330次阅读
    使用恩智浦<b class='flag-5'>无线</b>FRDM<b class='flag-5'>开发板</b>实现创新<b class='flag-5'>无线</b>解决<b class='flag-5'>方案</b>

    基于Arduino的串口通信项目

    基于Arduino的串口通信项目涉及多个方面,包括硬件连接、软件编程、串口参数配置等。 一、硬件准备 Arduino开发板 :确保你有一块Ardui
    的头像 发表于 11-22 09:24 481次阅读

    如何使用Arduino实现CAN总线通信

    开源硬件平台,通过添加CAN总线模块,也可以实现CAN通信。 硬件准备 Arduino开发板 :可以选择Arduino Uno、Mega等型号。 CAN总线模块 :如MCP2515或M
    的头像 发表于 11-12 10:09 749次阅读

    ​Banana Pi BPi-M4 Zero 开源硬件开发板评测试: 全志科技H618 方案设计 ,板载4G 内存,32G eMMC

    ​Banana Pi BPi-M4 Zero 开源硬件开发板评测试: 全志科技H618 方案设计 ,板载4G 内存,32G eMMC
    的头像 发表于 10-15 12:04 533次阅读

    迅为2K0500开发板硬件连接快速测试

    迅为2K0500开发板硬件连接快速测试
    的头像 发表于 08-13 15:40 306次阅读
    迅为2K0500<b class='flag-5'>开发板</b>硬件<b class='flag-5'>连接</b>快速测试

    瑞萨在无线连接领域的创新与未来展望

    去年12月,我受邀参与瑞萨电子高管博客系列的问答访谈,讨论瑞萨多年来开发和收购的一系列无线连接解决方案,并分享我们如何将这些互补性技术整合至智能、互联的网络边缘产品组合中,以实现高增长的战略愿景。
    的头像 发表于 07-26 09:48 456次阅读
    瑞萨在<b class='flag-5'>无线连接</b>领域的创新与未来展望

    RL78/G24快速原型开发板资料包大全

      RL78/G24快速原型开发板资料包大全  RL78/G24 快速原型开发板配备RL78/G24微控制器,是一种专门用于各种应用开发试产的原型开发板。它只需
    发表于 06-04 16:21 2次下载

    LoRa模块 WT99C262-SG 开发板使用教程

    WT99C262-SG模块是全新一代的Wi-Fi+BLE+LoRa无线扩频模块,基于启明云端WTLRC262-SG系列模组设计开发的新一代LoRa扩频芯片方案设计无线串口模块。具有多
    的头像 发表于 05-16 08:03 754次阅读
    LoRa模块 WT99C262-SG <b class='flag-5'>开发板</b>使用教程

    鸿蒙OpenHarmony开发板解析:【芯片解决方案

    芯片解决方案是指基于某款开发板的完整解决方案,包含驱动、设备侧接口适配、开发板sdk等。
    的头像 发表于 05-10 15:42 1229次阅读
    鸿蒙OpenHarmony<b class='flag-5'>开发板</b>解析:【芯片解决<b class='flag-5'>方案</b>】

    SiliconLabs携手Arduino演示基于MGM240模块的新型Nano Matter开发板

    Arduino Nano Matter开发板,从而将Matter协议引入Arduino生态系统,为广大的开发人员提供一个快速涉足Matter互联互通设计的绝佳途径。
    的头像 发表于 04-11 17:35 648次阅读
    SiliconLabs携手<b class='flag-5'>Arduino</b>演示基于MGM240模块的新型Nano Matter<b class='flag-5'>开发板</b>

    Arduino Uno R3开发版简化

    本人小白,想把Atmega328p-AU芯片单独拿出来用来控制LED阵列,但Arduino R3开发板的原理图真看不懂!想知道除了328芯片还需要什么以及线路怎么连接,感谢各位大佬!
    发表于 04-02 08:38

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

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

    如何使用Arduino UNO和TIP120晶体管驱动和控制直流电机的速度

    在本 Arduino 电机指南中,您将学习如何使用 Arduino UNO 和 TIP120晶体管驱动和控制直流电机的速度。在此示例中,您将
    的头像 发表于 02-11 10:08 1458次阅读
    如何使用<b class='flag-5'>Arduino</b> <b class='flag-5'>UNO</b>和TIP120晶体管驱动和控制直流<b class='flag-5'>电机</b>的速度