做课程设计要用到两个HC-05连接,之前用过HC-06,拿原来那个方法配还是有些坑,搞了一下午最后还是成功了。尝试了两个方案,一是用usb转TTL配置;二是用Arduino(其它单片机也行)的串口直接配置
一,使用USB转TTL配置
接线
一般HC-05模块上有六个脚:VCC GND TX RX EN RESET
HC-05 | USB-TTL |
---|
VCC | 5V |
GND | GND |
TX | RX |
RX | TX |
EN | VCC |
接好线后,按住HC-05模块的复位键,上电,就能进入AT模式,此时指示灯慢闪。
AT指令
找一个串口上位机,设置:
波特率 38400,文本模式, 发送回车
对从机(SLAVE):
指令 | 功能 |
---|
AT | OK |
AT+ORGL | 恢复出厂设置 |
AT+NAME=BTSLAVE | 设置蓝牙名称 |
AT+PSWD=“1234” | 设置连接密码1234,注意加英文双引号 |
AT+ROLE=0 | 0为从机模式 |
AT+CMODE=0 | 连接模式为任意连接 |
AT+ADDR? | 查询mac地址,比如98d3:71:f61a16 ,每个设备都不一样 |
AT+UART=9600,0,0 | 波特率9600,1个停止位,无校验 |
对主机(MASTER):
指令 | 功能 |
---|
AT | OK |
AT+ORGL | |
AT+NAME=BTMASTER | |
AT+PSWD=“1234” | 这个就是从机的密码 |
AT+ROLE=1 | 1为主机模式 |
AT+CMODE=0 | 任意连接 |
AT+BIND=98d3,71,f61a16 | 绑定从机地址,就是上面那个,: 换成, |
AT+UART=9600,0,0 | 与从机保持一致 |
这里有个坑就是指令必须大写,小写会报错
配置好后把HC-05上的EN接线去掉,重新上电,这时候HC-05指示灯快闪;等待几秒钟,指示灯变成每隔5秒闪两次就说明已经连接上了。
二,用Arduino串口直接写入指令
适合批量写入,如果你刚好有一个Arduino板板,配置好的话会更快。接线除了RX,TX还要把EN连到Arduino的D2脚上
#define MASTER 1
const unsigned char EN = 2;
void set_AT_cmd(char *cmd)
{
char buff = '0';
Serial.println(cmd);
while(Serial.available())
{
buff = Serial.read();
Serial.print(buff);
}
delay(500);
}
void setup()
{
pinMode(EN, OUTPUT);
digitalWrite(EN, HIGH);
Serial.begin(38400);
set_AT_cmd("AT");
set_AT_cmd("AT+ORGL");
set_AT_cmd("AT+CMODE=0");
set_AT_cmd("AT+PSWD=\"1234\"");
set_AT_cmd("AT+UART=9600,0,0");
#if MASTER
set_AT_cmd("AT+NAME=BTMASTER");
set_AT_cmd("AT+ROLE=1");
set_AT_cmd("AT+BIND=98d3,71,f61a16");
#else
set_AT_cmd("AT+NAME=BTSLAVE");
set_AT_cmd("AT+ROLE=0");
#endif
}
void loop()
{
while(Serial.available())
{
buff = Serial.read();
Serial.print(buff);
}
}
参考:
- 解决HC05蓝牙模块主从配对失败及AT模式设置方案
- 两个HC-05蓝牙模块互相绑定构成无线串口模块
- [HC-05]2.如何使用两块蓝牙模块相互通讯?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)