当前位置:首页 > 工业用地 >arduino与服务器无线通信(arduino可以控制伺服电机吗)

arduino与服务器无线通信(arduino可以控制伺服电机吗)

机器人中通常使用伺服电机来实现精确控制。在本文中,我们将向您展示如何使用Arduino UNO开发板通过蓝牙无线连接伺服电机和Android设备。我们已经介绍了如何使用Arduino开发板来控制伺服电机,这次我们使用无线蓝牙模块HC-06来控制伺服电机。

所需材料

arduino与服务器无线通信(arduino可以控制伺服电机吗)

Arduino UNO开发板

HC-05或HC-06蓝牙模块

伺服电机

Playstore 上的Roboremo 应用程序

面包板

连接线

HC-06 蓝牙模块

蓝牙可以工作在以下两种模式:

1. AT指令设置模式

2、工作模式

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

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

序列号HC-05 模块引脚MCU 引脚PIC 引脚1VccVdd 第31 个引脚2GndGnd 第32 个引脚3TxRC6/Tx/CK 第25 个引脚4RxRC7/Rx/DT 第26 个引脚5StateNCNC6EN (Enable) NCNC 电路原理图

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

配置Roboremo App来控制伺服电机

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

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

步骤3:连接HC-06蓝牙模块后,返回步骤2右侧窗口,点击“edit ui”,根据您的需要创建用户界面。

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

步骤4:选择按钮模板后,您将在屏幕上看到一个用于编辑的按钮。您可以调整结构大小并将其移动到屏幕上的任何位置。现在,为了设置通过蓝牙单击发送的值,您需要设置“设置按下操作”并输入要从该特定按钮发送的值。就像我们通过按Roboremo android 应用程序中的“开始”按钮发送“1”来旋转伺服器一样。

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

代码和说明

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

Arduino 附带一个伺服电机库,它处理所有与PWM 相关的事情以旋转伺服器。你只需要输入你想要旋转的角度,然后使用函数servo1.write(angle);该功能将使伺服电机旋转到所需的角度。所需的角度。

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

包括

包括

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

伺服myServo;

整数TxD=11;

接收端数据=10;

int 伺服位置;

int 伺服位置;

int new1;

软件串口蓝牙(TxD,RxD);

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

无效设置(){

整数位置=0;

myServo.attach(9);

myServo.write(0);

串行.开始(9600); //以9600bps开始串行通信

蓝牙.开始(9600);

}

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

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

无效循环(){

如果(蓝牙.available()){

字符串值=bluetooth.readString();

伺服位置=value.toInt();

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

Serial.println(伺服位置);

myServo.write(0);

}

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

Serial.println(伺服位置);

myServo.write(45);

}

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

Serial.println(伺服位置);

myServo.write(90);

}

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

Serial.println(伺服位置);

myServo.write(135);

}

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

Serial.println(伺服位置);

myServo.write(180);

}

如果我们通过按下启动按钮发送值“1”,伺服电机将继续旋转,直到按下停止按钮。这里我们在按下停止按钮时发送“2”,Arduino板读取后,会跳出while循环,伺服电机停止旋转。

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

如果(蓝牙.可用())

{

值=蓝牙.readString();

Serial.println(值);

if (value.toInt()==2)

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

}

伺服系统++;

延迟(30);

Serial.println(servopos);

myServo.write(servopos);

如果(伺服位置==180)

{伺服位置=0;中断;}

}

}

}

利用蓝牙控制伺服电机的工作流程

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

序列号按钮名称发送值说明1Start1 此按钮用于开始将舵机从0 旋转到180。 2停止2 该按钮用于随时停止舵机。 300此按钮用于将舵机旋转至0。 49090此按钮用于将舵机旋转90。 5180180此按钮用于将舵机旋转180。因此,通过按下Android 应用程序Roboremo 上的这些按钮,数据将通过智能手机的蓝牙发送到HC-06 蓝牙模块。 Arduino接收来自HC-06模块的数据,然后根据代码中按钮代表的角度旋转伺服电机。我们还可以编码角度45 和135,但由于Roboremo 应用程序的限制,只能创建5 个按钮,因此我们跳过了这两个。

通过这种方法,我们可以使用蓝牙将数据从智能手机发送到Arduino板,然后无线控制服务器。这可用于许多应用,例如玩具车、机器人等。

编辑:hfy

最新资讯

推荐资讯