在使用蓝牙模块的时候,如果要用AT指令进行主机和从机的配对,需要知道从机的物理地址,那么从机的物理地址如何获取呢?

方法一

如果你的从机也是一个蓝牙模块,那么将蓝牙模块通过USB转TTL模块连接至电脑。通过串口助手发送AT+ADDR?指令,即可获取模块本身的物理地址。

举例说明:
模块蓝牙设备地址为:12:34:56:ab:cd:ef
发送:
AT+ADDR?\r\n
返回:
+ADDR:1234 :56:abcdef
OK

方法二

有的时候,我们的蓝牙模块并不是一个独立的模块,而是作为一个子模块,被焊接在其他模块上。例如:

android 获取蓝牙电话本 获取本机蓝牙地址_android 获取蓝牙电话本


这时候无法通过杜邦线连接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

指令说明:

android 获取蓝牙电话本 获取本机蓝牙地址_物联网_02


这里物理地址相同的返回,其实是同一个蓝牙模块,不过是被反复检测到了而已。

接下来,哪个是我们要找的那个蓝牙模块呢?要用到以下指令:

android 获取蓝牙电话本 获取本机蓝牙地址_android 获取蓝牙电话本_03


只要知道了远程蓝牙的物理地址,就可以获得该蓝牙的名称。

例如:

模块蓝牙设备地址为:00:02:72:od:22:24,设备名称为:Bluetooth

发送:

AT+RNAME? 0002,72,od2224 \r\n

返回:

+RNAME: Bluetooth

OK

由于我们要找的蓝牙模块的名称是容易知道的,只要对上面通过AT+INQ指令获取的物理地址逐一查询蓝牙的名称,就能找到我们需要的蓝牙模块的物理地址了。(因为周边没有其他蓝牙模块在使用的情况下,一般如果查询到HC-05(HC-05蓝牙模块一般默认名称就是这个),就是我们要找的蓝牙模块了,其他设备例如手机虽然也有蓝牙功能,但一般默认都以手机品牌进行命名。)