蓝牙终端定位
基本概念
BLE设备:BLE设备厂商生产出来的基于iBeacon协议的蓝牙信号发生源,BLE设备会周期性的向周围发送BLE广播帧,帧的内容遵从iBeacon协议。
- AP:负责扫描BLE设备发送的BLE广播帧,获取BLE设备的UUID、RSSI校准值、BLE电量等信息,并将BLE设备信息上报给AC,将蓝牙终端定位报文信息上报给AC或者服务器。
- AC:负责蓝牙定位功能的配置下发,以及向定位服务器上报蓝牙终端定位报文信息、低电量告警和故障告警信息。
- 定位服务器:负责设置BLE基站位置,制作定位地图模型,监控BLE基站状态,计算蓝牙终端的位置。
- APP应用服务器:负责从定位服务器获取地图信息和BLE位置信息并推送信息给蓝牙终端。
- 蓝牙终端:会周期性的向周围发送iBeacon协议广播帧。负责收集BLE基站信号强度和传感器数据,配合手机APP通过定位算法来计算蓝牙终端的位置。
实现原理
获取BLE设备和蓝牙终端设备的UUID、RSSI校准值、BLE电量等信息。
AP中内置的蓝牙模块通过扫描周边环境中的BLE设备和蓝牙终端设备,收集BLE设备和蓝牙终端设备发射的广播帧,广播帧中携带设备的UUID和RSSI校准值等信息,帧的内容遵从iBeacon协议。
BLE设备和蓝牙终端设备不需要接入WLAN网络,只负责周期性的发送iBeacon协议广播帧。其中,广播帧的格式如图21-2所示。各字段含义如下:- UUID:设备的唯一识别码,用来识别BLE设备或者蓝牙终端设备。
- Major:设备厂商自定义字段,用于标识大的分组。
- Minor:设备厂商自定义字段,用于标识小的分组。
- Reference RSSI:RSSI校准值,AP距离BLE设备或者蓝牙终端设备1米时的RSSI参考值。
- AP向周边BLE设备或者蓝牙终端设备发送电量查询信息请求,设备收到请求后在广播信道上发送携带有电量信息的广播报文scan response。其中,scan response广播帧的格式如图21-3所示。
各字段含义如下:
- Data Length:前部分数据长度,Local name和Data数据长度和。
- Local name:iBeacon协议数据格式,说明后续的数据是设备名称。
- Data:设备厂商自定义的设备名称。
- Data Length:后续部分数据长度,Service Data、Service UUID和Battery volume数据长度和。
- Service Data:iBeacon协议数据格式,说明后续的数据是UUID。
- Service UUID:设备厂商自定义的唯一识别码,用来识别BLE设备或者蓝牙终端设备。
- Battery volume:表示电池电量等级,十进制的0~100对应电量等级0%~100%。
AP将获取到的BLE设备的UUID、RSSI校准值、BLE电量等信息后上报给AC,将蓝牙终端定位报文信息上报给AC或者服务器。
对于不布放独立BLE设备的场景,可以开启AP内置蓝牙模块的蓝牙广播功能,将AP作为BLE设备来发送BLE广播帧。此时,AP无需扫描,就可以直接将内置蓝牙模块的UUID、RSSI校准值、电量等信息上报给AC。
- AC主动向定位服务器上报蓝牙终端定位报文信息、BLE设备低电量告警和故障告警信息。
- 在定位服务器上规划楼层地图并制作定位地图模型,添加BLE设备和设置BLE设备摆放位置,同时对BLE设备状态进行监控,计算蓝牙终端的位置。
- APP应用服务器从定位服务器获取地图信息和BLE位置信息。
- APP应用服务器推送地图信息和BLE位置信息给蓝牙终端。
- 在蓝牙终端(如手机)上安装定位APP,并打开APP来完成如下步骤:
- 收集扫描到的BLE设备信息和信号强度。
- 收集手机本身的传感器(如加速度传感器、陀螺仪等)信息。
- 向定位服务器获取地图信息。
- 蓝牙终端上计算位置信息并显示。