HC-05蓝牙与Arduino串口通信完全指南
注意:如果不出现这样的情况的话,可以跳过啦😝
问题1、我们拿到hc-05蓝牙的时候可能会遇到手机蓝牙搜索不出来的情况(可能是已经和其他蓝牙配对了),
那么解决方法是要把蓝牙恢复出厂设置如下:
步骤一:先连接arduino uno和hc-05蓝牙
步骤二:烧录知识点二的代码进入AT模式(请具体看知识点二)
步骤三:使用AT指令,恢复出厂设置。具体看知识点二。
恢复出厂设置之后(再次进入AT模式进行修改),一定要改掉之前的蓝牙名字和密码,不然会连接错别人的蓝牙,或者自己的蓝牙被别人连接(深刻的教训)
主要讲的是hc-05蓝牙和arduino uno和arduino mega 2560通信的问题。
主要原因是arduino uno只有一个硬串口,如果arduino的硬串口接了蓝牙的话,那么arduino uno的程序烧录就会有问题,根本烧录不了。
而arduino mega2560的话就不止一个硬串口,它有4组硬串口,那么我们接蓝牙的时候和烧录程序的时候就不会冲突。不过要注意的是蓝牙不要结tx0和rx0的那组串口,不然烧录的时候会出现烧录不成功。
知识点1:arduino uno和电脑串口进行通信控制板子LED灯的亮灭
代码如下:
//这是一个通过串口发送指令控制arduino uno开发板上led灯的亮灭实验
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600); //设置串口波特率9600
}
int val=0;
void loop() {
val = Serial.read(); //读取计算机发送给控制板的指令复制给val
if(val=='1'){ //如果计算机通过串口发送数字1,灯就点亮
digitalWrite(LED_BUILTIN,HIGH); //点亮LED
Serial.println("LED ON"); //并输出
}
if(val=='2'){ //如果发送数字2,灯就熄灭。
digitalWrite(LED_BUILTIN,LOW); //熄灭LED
Serial.println("LED OFF"); //并输出
}
}
知识点2:手机蓝牙连接hc-05蓝牙进行与电脑互发信息
此知识点是通过电脑连接arduino uno,arduino uno连接蓝牙,蓝牙无线连接手机。进行相互发信息。
#include <SoftwareSerial.h> // 设置Arduino软件串口,10连接RX,11连接TX。这个实验是手机和电脑自己的互发信息
const int BT_RX = 10;// Pin10为RX,接HC05的TXD,软串口不一定非是这两个数字脚都可以
const int BT_TX = 11;// Pin11为TX,接HC05的RXD
SoftwareSerial BT(BT_RX, BT_TX );
char val; //定义val类型
void setup() {
Serial.begin(9600); //初始化Arduino串口,波特率自定,这里选9600,如果想进入AT模式,改成38400
Serial.println("BT is ready!"); //测试与PC之间串口是否正常,正常则显示上述文字,异常则显示乱码
BT.begin(9600); // HC-05的AT模式默认通信波特率为9600,如果想进入AT模式,改成38400
}
void loop() {
if (Serial.available())
{
val= Serial.read();
BT.print(val); //将PC发来的数据存在val内,并发送给HC-05模块然后传给手机
}
if (BT.available())
{
val= BT.read();
Serial.print(val); //将手机的信息发给HC-05模块发来的数据存在val内,并发送给PC
}
}
如果你想用蓝牙来控制小车的话,你就接上arduino的单片机,然后通过手机上的蓝牙串口软件,给小车发送一个指令就可以控制小车执行任务啦——》软件在这里
链接:https://pan.baidu.com/s/1hcQcGZMlKnQyzeLZxWDAWA?pwd=ents
提取码:ents
知识点三:hc-05蓝牙互连,进行互发信息
基础知识
蓝牙一般指令
功能 |
指令 |
说明 |
恢复出厂设置 |
AT+ORGL |
|
查询蓝牙名字 |
AT+NAME? |
可以查询当前蓝牙的名称 |
地址查询 |
AT+ADDR? |
|
查询主从模式 |
AT+ROLE? |
返回当前主从模式,1表示主机,0表示从机。 AT+ROLE=X,修改主从模式,X为1或0,对应主机和从机。 |
查询蓝牙密码 |
AT+PSWD? |
AT+PSWD=XXXX,XXXX为新密码 |
查询修改绑定连接地址 |
AT+BIND? |
AT+BIND=XX,XX,XX,修改绑定地址,在CMODE=0时可用,注意冒号改为逗号 |
查询修改连接模式 |
AT+CMODE? |
返回连接模式,1表示任意蓝牙地址连接模式,0表示指定蓝牙地址连接模式,需要地址绑定 AT+COMDE=X。 |
如何进入AT模式
-
烧录代码
-
蓝牙断电,长按hc-05按钮,然后上电,如果hc-05的led灯出现2秒慢闪的情况,说明进入了AT模式
-
在串口监视器中,切换成如下图模式,随后可以在串口监视器中输入指令(特别要注意的是图中圈出来的地方,我们要切换成那个样子。(波特率要改成38400)
两个蓝牙互连具体步骤:
-
两个蓝牙分别长按按钮进入AT模式。
-
蓝牙A作为主蓝牙,蓝牙B作为从蓝牙。
-
蓝牙B所需要执行的操作为先设置B的角色为从机角色,代码为AT+ROLE=0。
-
然后设置B的配对密码,代码为:AT+PWSD="1111"(具体密码是根据你的实际情况,想改什么就改什么)。
-
最后查询蓝牙B代码的地址,代码为:AT+ADDR?,得到B的地址:XX:XX:XX(到这里B的操作就完成了)。
-
设置A的配对码,代码为AT+PWSD="1111"(两个蓝牙的配对码一定要一样)。
-
然后到蓝牙A的操作:先设置蓝牙A为主模式,代码为:AT+ROLE=1。
-
设置A指定地址连接,AT+CMODE=0。
-
A绑定B,AT+BIND=XX,XX,XX(这里需要注意的是数字之间的分隔是逗号)。
-
两个蓝牙重新接上电后,如果两个蓝牙是每 隔6到7秒快闪一次,说明配对成功。