http://www.arduino.cn/thread-21735-1-1.html
最近在做项目需要建立两个hc-05通讯,但网上教程有限和有很多都不是很清楚所以整合了下资料重新做了一份个人认为比较详细的教程和大家一起分享学习。
这个教程说明怎么样用hc-05查找附近的hc-05模块并与它建立通讯。
原文:http://www.tmirun.com/arduino-hc-05-模块教程2连接
下面列出一些将在教程内用到的AT命令 (为了省时间 表格都是抄过来的 所以是繁体字)
AT+UART
AT+IAC
AT+CLASS
AT+INQM
AT+RNAME
AT+LINK
AT+CMODE
如果你想了解关于CLASS 和 IAC 可以参考 baseband 蓝牙基频
连接2个hc-05模块
基于上个教程 Arduino hc-05 模块教程1(进入AT模式),我们需要两组 hc-05模块
!hc-05 有 EN 脚模块的同学需要在这里焊接一条KEY脚(上个教程里面有说明怎么做), 因为后面我们需要
这里我们有2和hc-05模块分别是:
注意! 两个PSWD (密码) 要一致
第一步先设置我们的模块, 用上个教程的代码来进入AT模式设置, 还不会的同学请参考 Arduino hc-05 模块教程1(进入AT模式)
#include <SoftwareSerial.h>
//初始一个软件串口 serial2(Txd, Rxd)
SoftwareSerial serial2(6,7);
void setup() {
//连接电脑串口
Serial.begin(9600);
//连接hc-05串口,AT模式默认串口速度是38400:
serial2.begin(38400);
Serial.println("init serial port AT");
}
void loop() {
//把电脑输入串口的字符 写入到 hc-05 的串口中
if(Serial.available())
serial2.write(Serial.read());
//把hc-05的串口输出的字符 输出到电脑串口中
if(serial2.available())
Serial.write(serial2.read());
}
设置hc-05从模块: BSlave:
- AT+NAME=BSlave
- AT+PSWD=1111
- AT+ROLE =0
- 用 AT+ADDR? 来查询模块地址: +ADDR:2016:3:222418
设置hc-05主模块: BMaster:
- AT+NAME=BMaster
- AT+PSWD=1111
- AT+ROLE =1
- 用 AT+ADDR? 来查询模块地址: +ADDR:98d3:31:405221
初始完基本设置之后下面我们开始设置BSlave和BMaster连接
设置串口波特率9600: AT+UART:9600,0,0
绑定BMaster的地址: AT+BIND=98d3,31,405221
!注意当地址是参数是间隔用的是 “,” 而不是 “:”
重启模块,为了退出AT模式 (重新连接模块电源即可)
设置串口波特率9600: AT+UART:9600,0,0
设置查询模式:AT+INQM=1,5,10
开始查询:AT+INQ
如果出现ERROR(16)或(17)用 AT+INIT, 来启动spp,再次输入 AT+INQ。 那些有EN脚的同学小心了,我在用这个命令的时候会重启模块,因为没有key脚所以重启后加入不了AT模式,正因为这样所以建议大家把 Master 模块焊接条key脚出来,前一个教程有说明。Arduino hc-05 模块教程1(进入AT模式)。
查询结果可以看见已经找到了我们的 从模块,如果没找到看看 ‘从’ 模块是否接好 和 是否退出AT模式
试探连接:AT+ PAIR=2016,3,222418,9如果9秒内返回ok那就说明可以连接.
介绍: AT+PAIR=<地址>, <连接超时>
下面我们就可以连接到BSlave:AT+LINK=2016,3,222418
最后我们需要这个BMaster模块下次开启时自动连接到BSlave模块: AT+CMODE=1
在这里我们要重启模块进入AT模式。因为用AT+LINK的时候会退出AT模式。
- CMODE: 0——指定蓝牙地址连接模式 (指定蓝牙地址由绑定指令设置)
- CMODE: 1——任意蓝牙地址连接模式 (不受绑定指令设置地址的约束)
- CMODE: 2——回环角色(Slave-Loop)
这里我们得连接配置完成了!!!!
现在我们重启两个模块就可以看见他们会自动连接 (hc-05灯: 每两秒闪烁一下)
刚刚我们已经连接成功了,为了信息传输成功需要把hc-05串口波特率换成9600,为了保持全部串口一致。
#include <SoftwareSerial.h>
SoftwareSerial serial2(6,7);
void setup() {
Serial.begin(9600);
//把hc05模块的串口波特率从38400改成9600
serial2.begin(9600);
Serial.println("init serial port AT");
}
void loop() {
if(Serial.available())
serial2.write(Serial.read());
if(serial2.available())
Serial.write(serial2.read());
}
加载把代码到两个arduino上面。
打开两边的串口窗口, 在上面输入文字就会自动通过Bluetooth传输到另个Arduino。
参考
HC-05 和 HC-06连接:http://www.martyncurrey.com/conn ... pair-bind-and-link/