基于Arduino HC-05蓝牙模块检测特定隐藏设备是否在范围内
问题解答
- 结论:仅用HC-05模块无法实现已知蓝牙地址下的非可见设备范围检测
- 核心原因:
HC-05是基于经典蓝牙(BR/EDR)的模块,AT+INQ指令执行的是经典蓝牙的通用查询扫描机制——这种扫描只能捕获主动对外广播自身存在(即手机蓝牙设置为“可见”)的设备。非可见设备不会发送可被通用扫描识别的查询响应数据包,因此HC-05无法发现它们。
可行替代方案
方案1:更换为BLE(低功耗蓝牙)模块
选择HC-08、HM-10这类BLE模块,BLE协议的特性是:
- 大部分手机开启蓝牙后,默认会持续发送BLE广播包(即使蓝牙设为不可见)
- BLE模块可以通过AT指令启动扫描,捕获周围设备的广播包,从中提取设备MAC地址和信号强度(RSSI)
- 你可以在NodeMCU中编写逻辑,匹配已知的MAC地址,同时通过RSSI值判断设备的距离(RSSI数值越大,距离越近)
方案2:基于经典蓝牙配对绑定的检测(不推荐)
如果坚持使用HC-05,可以预先让目标手机和HC-05完成配对绑定:
- 绑定后,即使手机蓝牙设为不可见,HC-05可以尝试向已知蓝牙地址发起连接请求
- 根据连接是否成功,判断设备是否在有效范围内
- 缺点:连接操作有延迟,会额外消耗模块和手机的资源,且首次配对时会触发手机的授权提示,用户体验不佳
内容的提问来源于stack exchange,提问作者DaBrot
相关产品推荐
相关产品推荐

