[HC-05]2.如何使用两块蓝牙模块相互通讯?

1. 连接2个HC-05模块

  • 将两块HC-05都进入AT模式
  • 分别对其进行AT配置
BMaster 主 BSlave 从
AT+NAME=BMaster AT+NAME=BMaster
AT+PSWD=1111 AT+PSWD=1111
AT+ROLE=1 AT+ROLE=0

注意! 两个PSWD (密码) 要一致

除此之外还要查询模块的地址 模块地址可以用 AT+ADDR? 来查询
我的两个模块地址:
98d3:32:70f36b (BMaster)
98d3:32:20d1d4 (BSalve)

开始初始连接
初始完基本设置之后下面我们开始设置BSlave和BMaster连接

BSlave
设置串口波特率9600: AT+UART:9600,0,0
绑定BMaster的地址: AT+BIND=98d3,31,405221
注意当地址是参数是间隔用的是 “,” 而不是 “:”
重启模块,为了退出AT模式 (重新连接模块电源即可)

BMaster
设置串口波特率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脚出来,前一篇文章有介绍。

查询结果可以看见已经找到了我们的从模块,如果没找到看看 ‘从’ 模块是否接好 和 是否退出AT模式。


试探连接:AT+ PAIR=2016,3,222418,9如果9秒内返回ok那就说明可以连接.

下面我们就可以连接到BSlave:AT+LINK=98d3:32:20d1d4

最后我们需要这个BMaster模块下次开启时自动连接到BSlave模块: AT+CMODE=1
在这里我们要重启模块进入AT模式。因为用AT+LINK的时候会退出AT模式。
CMODE: 0——指定蓝牙地址连接模式 (指定蓝牙地址由绑定指令设置)
CMODE: 1——任意蓝牙地址连接模式 (不受绑定指令设置地址的约束)
CMODE: 2——回环角色(Slave-Loop)

这里我们得连接配置完成了!
现在我们重启两个模块就可以看见他们会自动连接 (hc-05灯: 每两秒闪烁一下)


传输信息
刚刚我们已经连接成功了,为了信息传输成功需要把hc-05串口波特率换成9600,为了保持全部串口一致。
Arduino代码:

#include 
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。

测试

2.参考资料

  • 作者tmirun:《Arduino hc-05》
    http://www.arduino.cn/forum.php?mod=viewthread&tid=21735&highlight=HC-05

  • HC-05连接:
    http://ruten-proteus.blogspot.com.es/2014/07/Bluetooth-Kit-tutorial-02-hc-05-02.html

  • AT指令参考手册:
    https://www.taiwaniot.com.tw/wp-content/uploads/2016/01/ADIO-HC-05-1.pdf

  • HC-05 和 HC-06连接:
    http://www.martyncurrey.com/connecting-2-arduinos-by-bluetooth-using-a-hc-05-and-a-hc-06-pair-bind-and-link/

你可能感兴趣的:([HC-05]2.如何使用两块蓝牙模块相互通讯?)