做课程设计要用到两个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脚上
// 配置从机时把这个宏定义改为 0,主机为 1
#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);
}
}
参考:
本文详细介绍了如何配置HC-05蓝牙模块进行主从连接。通过USB转TTL或Arduino串口两种方式,阐述了接线步骤和AT指令的使用,特别指出指令必须大写以避免错误。成功配置后,HC-05模块的指示灯将显示连接状态。
411

被折叠的 条评论
为什么被折叠?



