如何搭建一个蓝牙定位系统(蓝牙定位系统,移动开发)

时间:2024-04-29 19:30:06 作者 : 石家庄SEO 分类 : 移动开发
  • TAG :

    %E5%A6%82%E4%BD%95%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%93%9D%E7%89%99%E5%AE%9A%E4%BD%8D%E7%B3%BB%E7%BB%9F

1、准备设备

所需硬件设备:

(1)低功率蓝牙定位器若干(如:10个),网上有卖(单价从几十到几百都有)

(2)android设备一台,系统版本4.2以上(SDK版本大于17)

(3)iOS设备一台,支持蓝牙4.0 BLE

2、设置蓝牙定位器

移动设备扫描周边低功率蓝牙设备,可以获得蓝牙设备对应的Proximity UUID、Major、Minor等属性信息。而刚采购来的蓝牙设备属性可能都相同,互相区别不开,所以我们需要设置每台设备的属性。

设备厂商都会提供相关手机应用,共用户设置属性信息。给蓝牙设备装上电池,打开手机应用,靠近蓝牙设备就能发现,然后就可以设置其属性值了,其中:

UUID是一个32位的16进制数,表示设备厂商,该字段可以沿用出厂设置

Major表示不同区域(比如:某一楼层、某一地区),取值范围0到6万多

Minor表示不同的设备,取值范围0到6万多

样例:UUID = e2c56db5-dffb-48d2-b060-d0f5a71096e0, Major = 1001, Minor = 10001

每台设备设置完属性后准备一个标签,填上属性信息,贴到设备上,方便以后部署。

3、部署蓝牙设备

首先,准备目标场地地图数据,可以是基于经纬度坐标,也可以是简单图片坐标,看具体使用情况。

接下来,将蓝牙设备挨个部署到场地指定位置上,顺便记录每个设备地理坐标或图片坐标。

最后,得到一张表格信息,记录着每台蓝牙设备属性和位置信息。这张表就是整个定位系统的指纹库,为定位算法使用。

固定蓝牙设备到场地指定位置比较容易,不过记录设备坐标信息可能复杂一点,需要在地图或图片上获得相应位置点。可以开发一个App从而快速准确地记录位置信息,顺便将相关信息录入指纹库(数据库,比如:SQLite)。

部署蓝牙设备还有一个关注点就是部署间隔。低功率蓝牙设备容易受场地、环境影响,比较不稳定,所以根据场地条件每隔几米或十几米部署一台蓝牙设备。间隔太大会影响定位精度,不过太密也是资源浪费,不是越密集定位精度越高。

4、客户端App开发

客户端app主要功能就是扫描周围蓝牙设备,将设备列表信息上传定位服务器,从而获得定位效果,并展现给终端用户。

4.1 Android应用开发

工程所需SDK版本大于17。

1. App所需权限(AndroidManifest.xml文件)

2. 创建beacon数据项类

其中,address属性可以不要,因为iOS设备获取不到该属性!

3. 创建扫描工具类

扫描结果放在mapBltScanResult里,该HashMap的key由设备Mac地址和名称组成(address_name),value是个ArrayList,记录着该蓝牙设备多次扫描得到的信息(IBeaconRecord)序列,请求定位服务或本地计算定位之前,这些序列要进行平均处理(其实只是平均rssi值)。经过RSSI值多次平均处理后,一定程度上减小蓝牙设备不稳定因素。

关于请求定位服务,展现定位效果,还有定位算法都不是本文重点!关于蓝牙定位算法也可以参考其他文献资料!

4.2 iOS应用开发

iOS部分参考了AirLocate源码(苹果官方蓝牙样例工程)。

1. 引用基础配置类“APLDefaults”(来自AirLocate)

APLDefaults.h文件

APLDefaults.m文件

2. 定义变量

3. 初始化

4. 开始扫描、停止扫描和请求定位服务

其中,请求定位服务部分每个人都不一样,依赖自身定位服务。

5. 监听回调,解析扫描获得的蓝牙设备信息,存入dicBeacons变量

5. 定位服务开发

部署蓝牙设备时组建了最原始的蓝牙指纹库(数据表),利用这张表可以开发一套定位服务。

客户端上传过来的是一组蓝牙设备信息列表,例如:

本文:如何搭建一个蓝牙定位系统的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Spring Boot修改启动端口的方法下一篇:

6 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18