完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用伺服电机在机器人技术中很常见,以实现精确控制。在这里,在本教程中,我们将向您展示如何通过蓝牙连接将伺服电机与Arduino UNO和Android设备无线使用。这次我们使用 Arduino 和蓝牙控制伺服电机。 所需材料 Arduino UNO HC-05 或 HC-06 蓝牙模块 伺服电机 来自Playstore的Roboremo应用程序 面包板 连接线 HC-06 蓝牙模块 蓝牙可以在以下两种模式下运行: 命令模式 操作模式 在命令模式下,我们将能够配置蓝牙属性,例如蓝牙信号的名称,密码,操作波特率等。操作模式是我们能够在PIC微控制器和蓝牙模块之间发送和接收数据的模式。因此,在本教程中,我们将只玩弄操作模式。命令模式将保留默认设置。设备名称将是HC-05(我正在使用HC-06),密码将是0000或1234,最重要的是,所有蓝牙模块的默认波特率为9600。 模块采用 5V 电源供电,信号引脚工作在 3.3V,因此模块本身存在一个 3.3V 稳压器。因此,我们不必担心。在六个引脚中,只有四个将在操作模式下使用。引脚连接表如下所示 电路图 此Arduino蓝牙伺服电机控制项目的电路图如下: 配置 Roboremo 应用程序以控制伺服: 第 1 步:-从Android Play商店下载Roboremo应用程序并将其安装在智能手机中。安装后,您将看到如图1所示的应用程序窗口,通过单击“菜单”按钮,您将看到如下所示的图2所示窗口: 第 2 步:-然后单击连接按钮,您将看到下面图3所示的窗口,然后您必须选择“蓝牙RFCOMM”,然后您将能够将HC-06蓝牙模块与Android应用程序“Roboremo”连接。 第 3 步:-连接到HC-06蓝牙模块后,返回图2窗口,然后单击“编辑ui”以根据需要创建用户界面。 当单击“编辑ui”时,您将再次看到图1所示的窗口,然后单击屏幕上的任意位置,您将看到如图4所示的应用程序窗口,然后选择“按钮”以获取按钮结构。 第 4 步:-选择按钮后,您将在屏幕上看到一个按钮结构进行编辑。您可以调整结构的大小并将其移动到屏幕上的任意位置。现在,要设置通过蓝牙单击时发送的值,您有“设置按下操作”(如图 6 所示)并键入要从该特定按钮发送的值。就像,我们正在发送“1”通过按 Roboremo android 应用程序中的“开始”按钮来旋转伺服。 您可以在后面给出的表格中检查所有值,单击不同的按钮发送。 第 5 步:-最后,我们有用户界面来使用智能手机控制伺服电机。 代码和说明最后给出了通过蓝牙的Arduino控制伺服电机的完整代码。 Arduino具有伺服电机库,它处理所有与PWM相关的东西来旋转伺服器,您只需要输入要旋转的角度,并且有*功能servo1.write(angle); *这会将伺服器旋转到所需的角度。 因此,这里我们首先定义伺服电机的库,软件串行库用于定义Rx和Tx引脚。 #include <SoftwareSerial.h> #include <Servo.h> 在下面的代码中,我们正在 初始化 Rx 和 Tx 的 Arduino 引脚 ,为伺服和其他东西定义变量*。* Servo myServo; int TxD = 11; int RxD = 10; int servoposition; int servopos; int new1; SoftwareSerial bluetooth(TxD, RxD); 现在,将所有变量和组件设置为初始阶段。在这里,我们将伺服器连接到 9^千^Arduino的引脚,并使伺服的初始位置为0度。串行和蓝牙通信的波特率也已设置为 9600。 void setup() { int pos=0; myServo.attach(9); myServo.write(0); Serial.begin(9600); // start serial communication at 9600bps bluetooth.begin(9600); } 在空回路功能中,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;} } } } 使用蓝牙的伺服电机控制工作: 在这个项目中,我们使用Android应用程序“Roboremo”控制伺服电机。在此应用程序的界面中,我们创建了 5 个按钮来控制伺服电机,如前所述。下表给出了每个按钮的工作: 因此,通过按下Android应用程序Roboremo上的这些按钮,数据将通过智能手机的蓝牙发送到HC-06蓝牙模块。从HC-06模块数据由Arduino接收,Arduino以特定按钮的代码中定义的角度旋转伺服。我们还对角度 45 和 135 进行了编码,但由于 Roboremo 应用程序的限制,您只能创建 5 个按钮,因此我们跳过了两个按钮。 因此,这就是您可以使用蓝牙将数据从智能手机发送到Arduino以无线控制伺服的方法。这可用于许多应用,如玩具车、机器人等。 |
|
相关推荐 |
|
1677 浏览 1 评论
【⌈嵌入式机电一体化系统设计与实现⌋阅读体验】+磁力输送机系统设计的创新与挑战
1656 浏览 0 评论
3595 浏览 2 评论
5141 浏览 6 评论
4176 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 03:02 , Processed in 0.502460 second(s), Total 37, Slave 30 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号