伺服电机广泛用于机器人技术中以进行精确控制。任何人–好吧,几乎任何人–具有带有蓝牙连接功能的移动设备。在本教程中,您将找到如何使用Arduino UNO和Android设备通过蓝牙连接无线控制伺服电机。最后,您将获得更多的连接,使事情变得更加轻松,并通过触摸屏控制伺服电机。
在本文中,我将向您介绍与HC-06蓝牙模块,Arduino UNO和SG90伺服电机的蓝牙连接。此外,您需要本教程的其他资源,例如具有蓝牙功能的Android智能手机以及将命令从智能手机发送到Bluetooth模块的应用程序。
在教程的第一部分,我将向您展示如何将HC-06蓝牙模块连接到Arduino。在第二部分中,您可以找到要在HC-06蓝牙模块的AT命令模式下输入的源代码。在这里你’ll设置设备名称,密码和HC-06模块的波特率。最后,在最后一部分中,您将看到如何设置Android应用程序以及如何对Arduino进行编程,只需按一下按钮即可转动伺服电机。
要求
连接正确的部分,并使它们彼此交流。这是该项目的计划。如果您已经拥有以下所有或部分内容,那么您很幸运。整个项目将不花任何费用,或者花费几美元,以防您只购买缺少的零件。否则,您必须花费数十美元购买伺服电机,蓝牙模块,开发板和其他一些配件。为了清楚地了解成本,在此项目中使用的每个零件和配件的右侧是一个在线商店的链接。以下是部分:
- 1个Arduino UNO( 亚马孙 ) –蓝牙模块几乎与任何Arduino模型兼容,但本教程中的所有代码和原理图均适用于UNO。
- 1 X HC-06( 亚马孙 ) –这是一个从属蓝牙模块,非常易于与Arduino通过串行通信使用。
- 1 X SG90伺服电机( 亚马孙 ) –这可能是DIY社区中最受欢迎的伺服电机。
- 7 X公对公跳线( 亚马孙 )。
- 1 X面包板( 亚马孙 )。
- 1 X Android智能手机( 亚马孙 )。
设置硬件
在本节中,我将向您展示如何连接Arduino UNO和HC-06蓝牙模块。
要使用HC-06模块,只需将VCC引脚连接到Arduino上的3.3V输出,将GND引脚连接到任何Arduino GND引脚,然后将蓝牙模块的TX引脚连接到Arduino UNO的引脚10和RX引脚蓝牙连接到Arduino的引脚11。
对于伺服电机,将棕色线连接至任何Arduino GND引脚,将红色线从SG90伺服器连接至Arduino的5V输出,将橙色线从伺服电机连接至Arduino的数字引脚9。

如何使用Arduino UNO和HC-06蓝牙模块设置SG90伺服电机
Arduino的 的 Sketch和AT命令
如果是第一次使用蓝牙模块,则必须查询该蓝牙模块才能更改某些设置。可以通过所谓的AT命令更改设置。
HC-06模块允许您更改有限数量的设置。您可以更改设备名称,PIN码和波特率。
您必须在用于Arduino的IDE中运行以下AT命令。这些命令将显示HC蓝牙模块上安装的固件版本,更改PIN,更改模块名称以及将波特率设置为9600。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | / ** * @文件 如何使用Arduino和Android蓝牙模块控制伺服电机 * @作者 卡林·德拉戈斯(Calin Dragos)for inrobotics.com * @版本 V1.0 * @日期 13.12.2016 * @说明 这是设置HC-06蓝牙模块的Arduino草图 * / #包括 #define ROBOT_NAME “ Intorobotics” #define BLUETOOTH_SPEED 9600 //这是HC-06使用的默认波特率 软件系列 mySerial (10, 11); // TX | 接收 //将HC-06 TX连接到Arduino引脚10 RX。 //将HC-06 RX连接到Arduino的11 TX引脚。 虚空 设定 () { 序列号 . 开始 (9600); 序列号 . 打印 (“开始配置!”); mySerial . 开始 (BLUETOOTH_SPEED); 延迟 (1000); //应该以OK回应 序列号 . 打印 (“ AT测试命令是:”); mySerial . 打印 ( “在” ); waitResponse (); 序列号 . 打印 (“ ----------------”); //应该以其版本回应 序列号 . 打印 (“ AT版本为:”); mySerial . 打印 ( “ AT +版本” ); waitResponse (); 序列号 . 打印 (“ ----------------”); //设置销 序列号 . 打印 ( “设置图钉:” ); mySerial . 打印 ( “ AT + PIN1234” ); waitResponse (); 序列号 . 打印 (“ ----------------”); //将名称设置为ROBOT_NAME 序列号 . 打印 (“设置名称:”); 串 c = 串 ( “ AT + NAME” ) + 串 ( ROBOT_NAME ); mySerial . 打印 ( c ); waitResponse (); //将波特率设置为9600 // AT + BAUD1 OK1200 将波特率设置为1200 // AT + BAUD2 OK2400 将波特率设置为2400 // AT + BAUD3 OK4800 将波特率设置为4800 // AT + BAUD4 OK9600 将波特率设置为9600 // AT + BAUD5 OK19200将波特率设置为19200 // AT + BAUD6 OK38400将波特率设置为38400 // AT + BAUD7 OK57600将波特率设置为57600 // AT + BAUD8 OK115200 将波特率设置为115200 // AT + BAUD9 OK230400 将波特率设置为230400 // AT + BAUDA OK460800 将波特率设置为460800 // AT + BAUDB OK921600 将波特率设置为921600 // AT + BAUDC OK1382400将波特率设置为1382400 序列号 . 打印 (“ ----------------”); //将波特率设置为9600 序列号 . 打印 (“设置波特率:”); mySerial . 打印 ( “ AT + BAUD4” ); waitResponse (); 序列号 . 打印 (“配置完成!”); } 虚空 循环 () { } 虚空 waitResponse () { 延迟 (2000); 而 ( mySerial . 有空 ()) { 序列号 . 写 ( mySerial . 读 ()); } 序列号 . 写 ( “ \ n” ); } |
Android应用程序和Arduino Sketch
We’非常接近以Android智能手机无线控制SG90伺服电机。这通常是通过使用可启用设备蓝牙功能的Android应用程序来完成的。
在许多可在Android设备上启用蓝牙功能的应用程序中,我选择 Arduino的 的 蓝牙控制器 应用程序,因为它是免费的且易于使用。
在运行Android应用程序之前,请确保HC-06蓝牙模块已启动并正在运行。
在设备上安装了应用程序之后,您必须扫描设备,输入使用上面的脚本设置的PIN码,然后连接蓝牙模块。
在本教程中,我使用“Controller Mode” for 命令 s.

在本教程中,我使用“Controller Mode”
界面布局提供10个按钮,这些按钮专门设计用于在按下时连续发送命令。目前,我们仅使用两个按钮:一个按钮发送“1”,另一个发送“2”。因此,请使用应用程序的设置来设置值“1” and value “2”两个按钮。这些值将由蓝牙模块接收,并在Arduino草图中用于控制伺服电机。

我使用这两个按钮将命令发送到蓝牙模块
Android应用程序设置完成后,我们必须返回Arduino并上传代码以控制伺服电机。下面是Arduino草图,用于将伺服电机旋转到特定位置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | / ** * @文件 如何使用Arduino和Android蓝牙模块控制伺服电机 * @作者 卡林·德拉戈斯(Calin Dragos)for inrobotics.com * @版本 V1.0 * @日期 13.12.2016 * @说明 这是用蓝牙模块HC-06和Arduino蓝牙控制器应用程序控制伺服电机SG90的Arduino草图 * / #包括<SoftwareSerial.h> #包括<Servo.h> 软件系列 mySerial (10, 11); // RX | 德克萨斯州 伺服 伺服 ; 整型 伺服针 = 9; 整型 伺服角度 = 0; //伺服位置(以度为单位) 烧焦 命令 ; 虚空 设定 () { 序列号 . 开始 (9600); mySerial . 开始 (9600); 序列号 . 打印 (“您通过蓝牙连接”); 伺服 . 连接 ( 伺服针 ); } 虚空 循环 () { 如果 ( mySerial . 有空 ()) { 命令 =( mySerial . 读 ()); 如果 ( 命令 == '1') { 序列号 . 打印 (“伺服电机达到10度”); 伺服 . 写 (10); 延迟 (500); } 其他 如果 ( 命令 == '2') { 序列号 . 打印 (“伺服电机至120度”); 伺服 . 写 (120); 延迟 (500); } } } |
如果您按照上述步骤操作,事情就可以了!
结论
本教程的关键部分是蓝牙模块。这些模块具有各种名称和功能。仅连接到Arduino板的伺服电机对您的兴趣不足以使您长期保持兴趣。但是,展望未来,仅从本教程开始,您就可以做很多出色的事情。您可以通过旋转智能手机来控制机械臂,控制连接到云台系统的相机等。
很好的信息。
嗨,卡林,
我按照以下步骤操作并下载了代码,它非常适合SG90伺服电机,但是,如果我使用HS-5485HB高科技伺服器更换电机,则电机’根本不要动。当我在伺服器信号线的电压下测量电压为0.6伏时,我认为该电压太小,无法使HS-5485HB高科技伺服器移动。请建议我如何增加信号线上的电压,以使高科技伺服电机也能正常工作。谢谢。
唐’直接从Arduino上获得动力伺服’s 5v,请使用外部电源。
和唐’t将蓝牙模块的RX引脚直接连接到Arduino,而不是5v容忍的。使用电平转换器或分压器。
您能否仅使用按钮而不是应用程序来无线控制电动机?如果是这样,请告诉我
是
我做到了,而且效果很好。谢谢!