hc-05 模块教程2 (两个hc-05连接)

  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+UART=[PARAM1], [PARAM2], [PARAM3] OK
PARAM1:鮑率(baud rate(bit/s)可設定之數值如下:4800,9600,19200,38400,57600,115200,23400,460800,921600,1382400
PARAM2:停止位元(stop-bit)0 – 1 bit1 – 2 bits
PARAM3:同位元檢查(parity bit)0 – None1 – Odd parity2 – Even parity預設值:9600,0,0

AT+IAC
指 令 回 應 參 數
AT+IAC=[PARAM] 成功 OK PARAM:查詢訪問碼預設值是 9E8B33
失敗 FAIL
AT+IAC? +IAC:[PARAM] OK

AT+CLASS
指 令 回 應 參 數
AT+CLASS=[PARAM] OK PARAM:藍牙裝置類別。預設值是 0
AT+CLASS? 成功 +CLASS:[PARAM] OK
失敗 FAIL

AT+INQM
指 令 回 應 參 數
AT+INQM=[PARAM1], [PARAM2], [PARAM3] 成功 OK
PARAM1:查詢存取碼0 – 標準查詢模式1 – RSSI 查詢模式
PARAM2:最大回應數目
PARAM3:逾時查詢時間逾時範圍:1-48(對應時間為:1.28s – 61.44s)預設值:1,1,48

AT+RNAME
指 令 回 應 參 數
AT+RNAME?_[PARAM1]: 底線是代表空格 +NAME:[PARAM2] OK PARAM1:遠端藍牙裝置的位址
PARAM2:遠端藍牙裝置的名稱

AT+LINK
指 令 回 應 參 數
AT+LINK=[PARAM] 成功 OK
PARAM:遠端藍牙裝置位址xxxx,xx,xxxxxx
PARAM2:藍牙裝置類型 ( CoD ) PARAM3:RSSI 訊號強

AT+CMODE
指 令 回 應 參 數
AT+CMODE=[PARAM] 成功 OK
PARAM:
0——指定蓝牙地址连接模式 (指定蓝牙地址由绑定指令设置)
1——任意蓝牙地址连接模式 (不受绑定指令设置地址的约束)
2——回环角色(Slave-Loop)
如果你想了解关于CLASS 和 IAC 可以参考 baseband 蓝牙基频


连接2个hc-05模块
基于上个教程 Arduino hc-05 模块教程1(进入AT模式),我们需要两组 hc-05模块

!hc-05 有 EN 脚模块的同学需要在这里焊接一条KEY脚(上个教程里面有说明怎么做), 因为后面我们需要
这里我们有2和hc-05模块分别是:

BMaster 主 BSlave 从
AT+NAME=BMaster AT+NAME=BMaster
AT+PSWD=1111 AT+PSWD=1111
AT+ROLE=1 AT+ROLE=0
地址: 98d3:31:405221 地址: 2016:3:222418

注意! 两个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连接

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脚出来,前一个教程有说明。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。


参考

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值