如何使用Arduino和Android蓝牙模块控制伺服电机

伺服电机广泛用​​于机器人技术中以进行精确控制。任何人–好吧,几乎任何人–具有带有蓝牙连接功能的移动设备。在本教程中,您将找到如何使用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 And​​roid智能手机( 亚马孙 )。

设置硬件

在本节中,我将向您展示如何连接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。

C ++
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草图,用于将伺服电机旋转到特定位置。

C ++
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板的伺服电机对您的兴趣不足以使您长期保持兴趣。但是,展望未来,仅从本教程开始,您就可以做很多出色的事情。您可以通过旋转智能手机来控制机械臂,控制连接到云台系统的相机等。

6条评论 » Write a comment

  1. 嗨,卡林,

    我按照以下步骤操作并下载了代码,它非常适合SG90伺服电机,但是,如果我使用HS-5485HB高科技伺服器更换电机,则电机’根本不要动。当我在伺服器信号线的电压下测量电压为0.6伏时,我认为该电压太小,无法使HS-5485HB高科技伺服器移动。请建议我如何增加信号线上的电压,以使高科技伺服电机也能正常工作。谢谢。

  2. 唐’直接从Arduino上获得动力伺服’s 5v,请使用外部电源。
    和唐’t将蓝牙模块的RX引脚直接连接到Arduino,而不是5v容忍的。使用电平转换器或分压器。

  3. 您能否仅使用按钮而不是应用程序来无线控制电动机?如果是这样,请告诉我

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *