在使用蓝牙模块的时候,如果要用AT指令进行主机和从机的配对,需要知道从机的物理地址,那么从机的物理地址如何获取呢?
方法一
如果你的从机也是一个蓝牙模块,那么将蓝牙模块通过USB转TTL模块连接至电脑。通过串口助手发送AT+ADDR?指令,即可获取模块本身的物理地址。
举例说明:
模块蓝牙设备地址为:12:34:56:ab:cd:ef
发送:
AT+ADDR?\r\n
返回:
+ADDR:1234 :56:abcdef
OK
方法二
有的时候,我们的蓝牙模块并不是一个独立的模块,而是作为一个子模块,被焊接在其他模块上。例如:
这时候无法通过杜邦线连接USB转TTL模块,也无法直接发送AT指令来获取物理地址,那么要获取蓝牙模块的物理地址该怎么办呢?
1、将另外一个蓝牙模块通过USB转TTL模块连接至电脑,打开串口助手,设置波特率38400.
2、逐条发送如下指令:
AT+INIT \r\n ——初始化 SPP库(必须执行这一步,否则执行AT+INQ时会报错)
返回:OK
AT+IAC =9e8b33\r\n——查询任意访问码的蓝牙设备
返回:OK
AT+CLASS =0 \r\n ——查询各种蓝牙设备类
AT+INQM =1,9,48\r\n——1代表查询模式为带 RSSI信号强度指示,超过9个蓝牙设备响应则终止查询,设定超时为 48x1.28=61.44秒,这里的参数可以根据需要更改,如果周围蓝牙设备较多,可以增大第二个参数。
AT+INQ \r\n ——查询周边蓝牙设备
示例返回:
+INQ:2019:12:133379,1F00,FFD0
+INQ:2019:12:133379,1F00,FFCD
+INQ:14C6:97:AEC1D8,5A020C,FFB7
+INQ:14C6:97:AEC1D8,5A020C,FFB9
+INQ:2019:12:133379,1F00,FFD0
+INQ:14C6:97:AEC1D8,5A020C,FFB7
+INQ:14C6:97:AEC1D8,5A020C,FFB9
+INQ:50EB:71:6A3EBA,2A010C,FFB7
+INQ:14C6:97:AEC1D8,5A020C,FFB4
指令说明:
这里物理地址相同的返回,其实是同一个蓝牙模块,不过是被反复检测到了而已。
接下来,哪个是我们要找的那个蓝牙模块呢?要用到以下指令:
只要知道了远程蓝牙的物理地址,就可以获得该蓝牙的名称。
例如:
模块蓝牙设备地址为:00:02:72:od:22:24,设备名称为:Bluetooth
发送:
AT+RNAME? 0002,72,od2224 \r\n
返回:
+RNAME: Bluetooth
OK
由于我们要找的蓝牙模块的名称是容易知道的,只要对上面通过AT+INQ指令获取的物理地址逐一查询蓝牙的名称,就能找到我们需要的蓝牙模块的物理地址了。(因为周边没有其他蓝牙模块在使用的情况下,一般如果查询到HC-05(HC-05蓝牙模块一般默认名称就是这个),就是我们要找的蓝牙模块了,其他设备例如手机虽然也有蓝牙功能,但一般默认都以手机品牌进行命名。)