蓝牙模块:用于与蓝牙信标通信,实时获取 RSSI 值。
蓝牙信标:放置在已知位置,用于发出蓝牙信号。
通过蓝牙模块检测并连接三个蓝牙信标。
实时监测信标的 RSSI 值,为后续定位提供数据支持。
RSSI 值处理与距离估算:
收集和滤波 RSSI 值,减小噪声,提高测量精度。
利用 RSSI 值与距离的关系公式,准确估算蓝牙模块与信标之间的相对距离。
采用加权最小二乘法、卡尔曼滤波等优化算法,计算蓝牙模块的相对坐标。
保证定位结果的准确性和稳定性,提供可靠的定位数据。
实现高速数据传输协议,将相对坐标数据发送至开发板。
开发板接收并解析数据,进行实时显示和进一步处理。
直接显示坐标位置,并根据算法判断是否在区域内,向主控器发送通知并实时显示。
本项目使用开发板、STM32 最小系统板以及蓝牙模块,构建了一个蓝牙三
角定位系统。该系统通过测量三个蓝牙信标的 RSSI 值,利用算法将这些值转换为相对坐标,
最终在 STM32WB55RG 开发板上进行显示和处理。
收集从三个蓝牙信标获取的 RSSI 值。
对 RSSI 值进行滤波和校正,以提高测量精度。
将 RSSI 值转换为相对距离,作为后续三角定位的输入数据。
采用三角测量法,利用获取的相对距离数据,计算出蓝牙模块与各个蓝牙信标之间的相对坐标。
使用算法处理定位数据,确保定位结果的准确性和稳定性。
数据传输与处理:
将计算出的相对坐标数据通过通信接口发送至开发板。
在 开发板上进行数据接收、解析和显示。
提供实时坐标显示功能,以及其他相关的数据处理和应用功能。
在商场和购物中心,为顾客提供实时导航服务,帮助其快速找到所需商铺或服务设施在博物馆和展览馆,为参观者提供位置导航和展品介绍,提升参观体验。在复杂多变的室内环境中,它如同指南针,指引人们迅速准确地找到目的地,无论是商店、办公室还是紧急出口。这不仅提高了个人和团队的效率,还极大地提升了用户体验,减少了因迷路带来的不便和焦虑。同时,对于建筑管理者而言,室内导航数据有助于优化空间布局,提升运营效率。通过收集和分析用户的导航数据,管理者可以深入了解建筑内部的人流分布和流动规律,从而优化空间布局、调整资源配置,进一步提升建筑的使用效率和舒适度。此外,室内导航系统还可以与建筑内的其他智能系统(如安防、消防等)进行联动,形成一体化的智能管理体系,为建筑的安全和稳定运行提供有力保障。在机场和车站,帮助旅客快速找到登机口、候车室、服务台等重要设施。
RSSI 测量与处理:
距离估算:RSSI(Received Signal Strength Indication,接收的信号强度指示)是无线发送层
的一个部分,用于判定链接质量以及是否增大广播发送强度。它通过接收到的信号强弱来测
定信号点与接收点之间的距离,进而根据相应数据进行定位计算。根据 RSSI 值与距离的关
4
系,准确估算蓝牙模块与信标之间的相对距离。接收机测量电路接收到信号后,会进行一系
列处理以获取信号的强度。在 RSSI 的具体实现中,通常在 104 微秒内进行基带 IQ 功率积
分,得到 RSSI 的瞬时值(即 RSSI(瞬时)=sum(I2+Q2))。然后,在约 1 秒内对 8192 个 RSSI
的瞬时值进行平均,得到 RSSI 的平均值(即 RSSI(平均)=sum(RSSI(瞬时))/8192)。同时,还
会给出 1 秒内 RSSI 瞬时值的最大值和 RSSI 瞬时值大于某一门限的比率。
多点定位:利用三角测量法,通过三个已知信标的位置和蓝牙模块测得的距离,计算出蓝牙模块的相对坐标。在室内环境中,由于 GPS 信号无法穿透建筑物,因此需要其他定位技术。三角定位算法可以与蓝牙等技术结合,通过测量信号强度或传输时间等参数来确定目标在室内空间中的位置。由于三角定位算法需要至少两个观测站才能确定目标的位置,且观测站之间的相对位置对定位精度有较大影响,当测量数据存在误差或观测站位置不准确时,定位结果可能会出现偏差,在复杂环境中,如多径效应严重的室内环境或信号遮挡严重的区域,三角定位算法的精度可能会受到影响。所以我们在其中对部分参数实时测试并调整参数。
采用多种优化算法,提高定位精度和稳定性。
实时数据传输与处理:
高速通信接口:使用高效的数据传输协议,实现实时、可靠的数据传输。
实时处理与显示:开发板实时接收并处理定位数据,提供快速的坐标更新和显示。使用 IIC 协议的 OLED 模块显示数据。IIC(Inter-Integrated Circuit)总线是一种两线式串行总线,用于连接微控制器以及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据,在 CPU 与被控 IC 之间、 IC 与 IC 之间进行双向传送。
硬件模块化:蓝牙模块、STM32 最小系统板和开发板等组件模块化设计,方便维护和升级。
软件模块化:软件架构采用模块化设计,便于功能扩展和代码重用。
节能算法:采用低功耗算法和机制,延长设备的电池寿命。
硬件优化:选用低功耗蓝牙模块和 STM32 系列微控制器,降低整体功耗。
RF-BM-BG22A3 蓝牙主机性能指标
2.2 V~3.8 V工作频段:2402 MHz ~2480 MHz最大发生功率+6dB睡眠模式:3.23 μA 。(5V 供电)连接模式:100 ms 连接间隔电流34.68 μAStm32wb55rg 工作电压:2.2 V~3.8 V工作频段:2402 MHz ~2480 MHz1.25DMIPS/MHz睡眠模式46μA运行模式107μARF-B-SRI 信标 供电电压1.71V~3.8V平均功耗:15.46μA广播间隔500ms
1.优化的三角定位算法:
使用多种优化算法,提升系统的定位精度和稳定性。
适应不同环境中的复杂情况,保证定位结果的可靠性。
2.实时数据传输与处理:
高速通信接口,实现数据的实时传输和处理。
快速的坐标更新机制,满足动态环境中的定位需求。
硬件和软件的模块化设计,便于系统的维护、升级和功能扩展。
硬件模块化便于不同应用场景的配置,软件模块化便于代码重用和扩展。
采用低功耗硬件和节能算法,延长系统的电池寿命。
适合长时间运行的应用场景,降低功耗成本。
首先是蓝牙信标组网,形成一个三角形范围,对周围不断辐射数据,对周围的空间进行发射数据,为了避免密集情况,我们特别选出教室作为模拟场所,便于收发。蓝牙模块连接从设备 STM32F4,开始接收周围辐射的数据,并选择是否收发给其他设备。之后主设备上电,根据蓝牙协议栈向从设备 STM32F4 发送请求,开始接收数据,由现场测出的可接收范围划出工作区域,设定指标。
0.96 寸 OLED
OLED 采用有机材料涂层和玻璃基板,当有电流通过时有机材料就会发光,所以 OLED 具有自发光特性,不需要背光源。显示区域是 128X64 的点阵(分辨率 128*64),每个点都可以自己独立发光,所以不需要背光,可以显示汉字、ASIIC 码、图案等,支持多种接口方式,OLED 裸屏接口包括:6800/8080 两种并行接口方式、3 线或 4 线的方式,我们用 IIC 接口方式(只需要 2 根线就可以控制 OLED )
STM32F4 开发板便宜,且在 F 系列中比赛能用。这是 USB 串口同
APM32F407ZGT6 的串口 1 进行连接的接口,标号 RX 和 TX 是 USB 转串口的 2 个数据口(对 CH340 来说),而 PA9(TXD)和 PA10(RXD)则是 APM32
的串口 1 的两个数据口(复用功能下)。他们通过跳线帽对接,就可以连接在一起了,从而实现 APM32 的程序下载以及串口通信。
RF-BM-BG22A3:
EFR32BG22低功耗蓝牙模组是采用 SILICON LABS 芯片 EFR32BG22C224F512GM32-C 设计的远距离低功耗蓝牙模块,输出功率 Max 为 6 dBm,接收灵敏度 -106.7 dBm (125kbps GFSK),该模块采用 SILICON LABS 稳定的参考设计而改进,支持 Bluetooth 5.2。模块采用 IPEX 1 代外接天线座模式。EFR32BG22低功耗蓝牙模组具有优秀的超低功耗性能,4.1 mA 发射电流@0dbm 输出功率,3.6 mA 接收电流(1Mbit/S GFSK)。使用购买的 RF-BM-BG22A3
模块串口与 mcu 相连接,主要引脚 A7 模块 TX 引脚,A8 模块 RX 引脚,A5 模块 reset 引脚。
蓝牙主机模块:采用 RF-BM-BG22A3 和 stm32f407 作为蓝牙信标(蓝牙主机)。RF-BM-BG22A3 串口和 stm32f407 串口相连接,stm32f407 通过发送 AT 指令让 RF-BM-BG22A3 模块完成:获取 rssi→打开自定义 UUID→连接从设备→发送坐标数据的功能。 蓝牙从机模块:采用 开发板当蓝牙从机接收蓝牙主机发送的数据,根据得到的数据,计算出蓝牙主机存在性定位,并作出判断。
模拟场景:当前工作人员不在工厂工位,工厂老板通过蓝牙定位发现摸鱼员工,于是空过蓝牙定位提醒不在工位的员工,于是员工从距离工位(3 个蓝牙信标)很远的地方,数值(70,75,80);跑到距离工位一半工厂大的地点,发现蓝牙定位仍不在工位范围内,数值(60,65,70);于是继续跑步,到工位很近的地方,但仍然不在工位范围内,数值(64,36,65);直到他跑到工位,数值(42,43,42),于是放弃摸鱼,只好继续工作。以下为检测到的数据。
特性成果(逐个展示功能、性能参数等量化指标)比较是否在工厂工位上的指标
比较是否接收了蓝牙信号的指标
/使用方法;将接受到的 RSSI 值计算成半径后存入 ref_d[3]中,设置三角定位三个信标的 X,Y 坐标 ps[3]
//不用去管 RSSI_Point()的内容,使用一个结构体指针接收 RSSI_Point()的返回值,
解引用即可;
//步骤一;设置三个信标坐标,对应结构体数组值 ps[3]
//步骤二;使用蓝牙传入 RSSI 值到 double RSSItrans_distance(double rssi, double rssi0,
double n)函数,返回值为距离,用 ref_d[3]接收
//步骤三;
//换算公式 RSSI=RSSI0??10×n×log10?(distance)
//RSSI0 是距离一米时 RSSI 值
//n 为信号衰减指数,常取值为 2~4(可调)
// RSSItrans_distance((double)RSSI1, 48.0, 3.0);
// 计算出的三组 (d[i]方-d[j]方-x[i]方+y[j]方+x[j]方-y[i]方)/(2(x[j]-x[i])) double dxyx[3];
// 计算出的三组 (d[i]方-d[j]方-x[i]方+y[j]方+x[j]方-y[i]方)/(2(y[j]-y[i])) double dxyy[3];
// 计算出的三组 (x[i]-x[j])/(y[i]-y[j]) double x_divide_y[3];
// 计算出的三组 (y[i]-y[j])/(x[i]-x[j]) double y_divide_x[3];
// 计算出的三组 x y 坐标
(1) 硬件扩展增加蓝牙信标数量:可以增加更多的蓝牙信标,以提高定位精度和覆盖范围。
电源管理模块:替换其他类型的电池模块,提高系统的续航能力。
增加更高性能处理器利用 AI 分析其位置和偏好,提高奖惩机制。
(2) 软件扩展
多算法支持:可集成多种定位算法(如质心算法、粒子滤波算法等),以适应不同的应用场景。
多平台设计:开发安卓平台,使用手机参与定位环节