赞
踩
目前人们对室内定位的需求越来越多,比如在智能工厂中,员工管理、AGV(无人搬运车)的运行都需要室内定位技术;在养老院、医院,需要了解老人、病人、物料等在院里的位置;在大型商场、机场、高铁站和停车场等环境中,更需要室内定位,了解自己的位置,了解自己要找的商铺、候车室的位置。可以说,室内定位随着数字经济的发展,需求越来越旺盛。因此本项目设计一款基于蓝牙的室内定位系统,实现非可视内容的可视化,具有重要的实际意义。
本作品主要应用于需要对固定人员进行监管的场所,应用领域包含但不限于以下场所:
(1)养老院、监狱、医院病房
(2)厂房、机房、幼儿园、特殊学校
(1)采用蓝牙Beacon定位技术和Lora通信技术
(2)系统包括胸章、位标和网关三个部分。网关搭载了RT-Thread操作系统,能够多线程运行。
(3)在腾讯云上开发界面,可实时显示胸章位置信息,方便监管。
(4)该系统无需布线,施工及维护成本低。
整套系统实现人员位置信息的远程监控,云端数据存储功能以及定位的云端可视化功能。本作品可将室内人员的位置信息展现在地图上,地图的布局与真实场景相符,同时也会展示相应的数据信息,比如胸章的编号,位标的编号,每个位标采集到的胸章的距离,以及每个胸章被采集到的最短的三个位标距离。通过数据、图形相结合,可以精确观察到室内人员的位置信息。如下图所示:
图1页面显示
通过测试,系统最关键的指标即定位精确度较高,在大部分正常的时刻,精度可达到0.6米。
(1)使用三点距离定位法来显示人员位置,由于定位法存在几种特殊情况,在对算法公式进行改进后,排除了这几种情况,提高了显示定位的准确度。
(2)发送位置信息的胸章十分小巧,便于佩戴,且添加了人员报警功能,可以更迅速的定位出现问题的人员区域。
(3)在位标处添加了火焰报警模块,在商城或工厂等处能够及时监测到火情能够及时监测到火情,发出警报,尽早采取消防措施,使得应用可以更加广泛。
整个系统框架如下图:
图2 定位系统整体框图
整个系统工作流程为:当胸章进入位标系统的信号覆盖范围,位标系统能接收到胸章发送的广播信号RSSI值。位标系统中的MCU读取EFR32BG22蓝牙模块的RSSI值,处理后通过Lora发送至网关。网关接收数据,通过L610传输至腾讯云平台,云端通过定位算法计算出人员位置并在网页界面显示,如果收到的是报警信息,则弹窗提示。
(1) 胸章部分
胸章的硬件模块为EFR32BG22蓝牙模块。BG22系列芯片结合了同类最佳的超低发射和接收电流的高性能、低功耗M33内核(工作电流27 μA / MHz;休眠电流1.2 μA),提供行业领先的能效,可将纽扣电池的寿命延长至十年。
它作为一个独立的部分,无需硬件连接,只需上电后,设置好状态便可与位标系统通信,发送位置信息和报警信息。
胸章原理图及PCB如图所示:
图3 胸章电路
(A) (B) (C)
图4 胸章PCB (A) 布局布线 (B) 3D正面 (C)3D背面
(2)位标部分
位标系统的硬件模块包括三部分,EFR32BG22蓝牙模块、CH32V307主控芯片与ATK-Lora-V3.0无线模块。CH32V307是沁恒推出的通用单片机系列,可以连接外部的PHY芯片实现100Mbps、1000Mbps的数据传输,功能强大。ATK-Lora-V3.0无线模块具有通信距离远、低功耗、灵敏度高、抗干扰性强的优势。例如,Lora和RF4432PRO无线模块的功耗都是100mw,但是Lora模块的传输距离是5公里,而RF4432PRO模块的传输距离只有1.4公里两者之间的差距非常明显。
EFR32BG22蓝牙模块用于接收胸章数据,CH32V307提取胸章数据并分析处理,将处理结果通过Lora模块发送至网关,当位标附近检测到火情时,能及时发出报警信号,在云端进行显示。EFR32BG22蓝牙模块和Lora模块分别和CH32V307的USART2和USART3连接,分别如图3和图4所示。
图5 位标系统中的Bg22与CH32V307模块
图6 位标系统中的Lora与CH32V307模块
位标系统软件架构如图:
图7 位标系统架构
位标接收信号后,MCU通过串口读取到数据。数据包含两种信息,一个是胸章的编号,一个是胸章信号的强弱。由于信号强弱随距离变化而变化,因此它可以反映出距离的大小。为确保RSSI数据足够稳定,计算误差小,MCU收集满来自同一个胸章的20个RSSI值后,求其均值,根据以下公式计算出距离,公式中各个参数的含义如表所示。
D = 10absRSSI-A10×n (1)
表1 测距算法公式各符号含义
符号 | 说明 |
D | 计算所得距离(单位:M) |
RSSI | 接收信号强度(单位:DB) |
A | 发射端和和接收端相隔1米时的信号强度 |
N | 环境衰减因子 |
(3)网关部分
网关系统硬件模块包括三部分:Lora模块,CH32V307主控芯片和L610模组。CH32V307主控芯片通过Lora模块接收位标系统发来的数据,通过串口传输至L610,并按照腾讯云平台的命令格式,通过L610传输至云平台。Lora模块和L610模块分别和CH32V307的USART2和USART3连接,分别如图5和图6所示。
图8 网关系统中的Lora与CH32V307模块
图9 L610模块与网关系统中的CH32V307模块网关软件系统架构如图:
图10 网关系统架构
RT-Thread 操作系统的邮箱用于线程通信,特点是开销比较低,效率较高。邮箱具备一定的存储功能,能够缓存一定数量的邮件数,在MCU根据冒泡法求取距离最小的前三个数据,在网关系统中执行L610的初始化,通过串口PD8控制L610发送 AT 命令连接腾讯云,将总数据与距离最小的前三个数据上传腾讯云平台,网页获取平台数据进行页面显示。
AT命令格式如下:
1.控制模块查询注册网络情况和获取 IP
发送指令:AT //检测模块
返回数据:OK
发送指令:AT+CGMR? //查询版本号
返回数据:16000.1022.00.05.02.05
OK
发送指令:AT+MIPCALL?
+MIPCALL: 1,10.172.227.8 //必须等待 IP 返回再做下面操作
返回数据:OK
发送指令:AT+MIPCALL=1 //请求 IP,有 IP 的情况下不发
“AT+MIPCALL=1”
返回数据:OK
+MIPCALL: 10.196.34.216
发送指令:AT+MIPCALL?
返回数据:+MIPCALL: 1,10.196.34.216 //必须等待 IP 返回再做下面操作
OK
2.控制模块发送 AT 命令连接腾讯云
发送指令:AT+TCDEVINFOSET=1,"SAQ6EN34JF","weilaiRoad_Lamp001","ygQHa0DR8qShQQ5kPnqRU w==" //设置平台设备信息
返回数据:OK
+TCDEVINFOSET: OK
发送指令:AT+TCMQTTCONN=1,20000,240,1,1 //设置连接参数并连接
返回数据:OK
+TCMQTTCONN: OK
3.云端信息交互
发送指令:AT+TCMQTTSUB="$thing/down/property/SAQ6EN34JF/weilaiRoad_Lamp001",1
返回数据:OK
+TCMQTTSUB: OK
4.设备上传信息到云端
发送指令:AT+TCMQTTPUB="$thing/up/property/SAQ6EN34JF/weilaiRoad_Lamp001",1,"{\"method\":\ "report\",\"clientToken\":\"123\",\"params\":{\"power_switch\":0}}"
//上报数据
返回数据:
OK
(4)网页部分
网页从腾讯云读取数据后,项目组通过进行距离与经纬度的换算,利用五个位标采集到的最近的三个距离来进行计算,从而显示人员定位。
以下即为确定人员位置的基本数学原理:
首先根据五个位标采集到的胸章的距离,确定出距离最小的三个值以及对应位标的编号与坐标。设为C1,C2和C3,如图所示。分别以位标1的位置C1及位标2的位置C2为圆心,以两个位标各自采集到的胸章距离为半径画做圆,两个圆交叉与A点和B点。分别计算位标3的位置C3和A点,B点之间的距离,距离小的点则为胸章的位置。
图11 三点定位算法示意
考虑胸章所采集到的胸章距离信息和实际会有所偏差,需要对公式进行校正。具体的偏差情况大致有如下四种:
(A) (B)
(C) (D)
图12 四种误差情形
误差情形一,位标采集到的三个距离不存在相交的情况,此情况出现的可能性很小,除非三个位标所采集的距离都存在较大偏差,否则难以发生此种情况。误差情形二,三个位标采集到的距离稍有偏差,导致人员位置不好确定,只能确定出其大致范围,这种误差情况是最为常见的。误差情况三是以三个位标采集的距离分别绘制圆,三个圆恰好相切,这也是一种特殊情形,出现概率较低;误差情况四是两个位标采集的距离符合要求,而另外一个位标采集的距离小于正常的距离。
基于上述所列举的误差情况,对于算法公式进行改进,计算人员坐标的具体公式如下:
x = r12-r22-x12-y12+x22+y2²2*(y2-y1)x2-x1y2-y1-x3-x1y3-y1 - r12-r32-x12-y12+x32+y3²2*(y3-y1)x2-x1y2-y1-x3-x1y3-y1
y = r12-r22-x12-y12+x22+y2²2*(x2-x1)y2-y1x2-x1-y3-y1x3-x1 - r12-r32-x12-y12+x32+y3²2*(x3-x1)y2-y1x2-x1-y3-y1x3-x1
其中x、y即为人员的具体坐标值,r1、r2、r3分别为三个测量距离,x1和y1、x2和y2、x3和y3分别为相应测距位标的坐标。
定位显示页面由三部分组成。第一部分为totaldata和minidata显示,即所有位标接收到的总数据与距离徽章最近的三个位标的距离显示;第二部分为人员位置信息显示,在创新实验室定位图示进行显示;第三部分为报警信息显示,当有火警或人员报警时,会在网页上方进行弹窗显示。
(A)
(B)
(C) (D)
图13 界面显示效果 (A)多个胸章的情形 (B)一个胸章的情形
(C) 人员报警显示 (D)火焰报警显示
上图A显示的是五个位标检测到三个胸章的情形,图B显示的是检测到一个胸章的情形,图C和图D为人员和火焰报警显示。每个位标检测到胸章到它们的距离大小,并且提取出最短的三个距离,然后将人员的位置显示在定位图示部分。
下图为产品测量误差:
表2 测量误差分析
测量数据 | 实际测量数据 | 误差/m | |||
数据类型 | totaldata | minidata | totaldata | minidata | |
第一次测量 | [2,3,2, 2,2,2, 3,3,2, 2,2,2, 2,2,1, 2,2,2, 3,3,2, 2,2,2, 2,1,2, 2,2,2] | [1,1,2, 5,2,1, 1,3,2, 3,1,2, 3,2,2, 2,3,2, 5,1,2, 1,2,3, 3,3,2] | [2.4,2.8,2.5,2,2,2, 2.9,3,2.1, 2,2,2, 2.1,2.4,1.7, 2,2,2, 2.8.2.9.2.1,2,2,2, 2.1,0.9,1.8,2,2,2] | [1,1,2.4, 5,2,0.9, 1,3,2.5, 3,1,2.1, 3,2,2.4, 2,3,2.1, 5,1,2.1, 1,2,2.5, 3,3,1.7] | 0.66 |
第二次测量 | [2,3,2, 2,2,2, 3,3,2, 2,2,2, 2,2,2, 2,2,2, 3,3,2, 2,2,2, 2,1,2, 2,2,2] | [1,1,2, 5,2,1, 1,3,2, 3,1,2, 3,2,2, 2,3,2, 5,1,2, 1,2,3, 3,3,2] | [2.4,2.8,2.5,2,2,2, 2.9,3,2.1, 2,2,2, 2.1,2.4,1.7, 2,2,2, 2.8.2.9.2.1,2,2,2, 2.1,0.9,1.8,2,2,2] | [1,1,2.4, 5,2,0.9, 1,3,2.5, 3,1,2.1, 3,2,2.4, 2,3,2.1, 5,1,2.1, 1,2,2.5, 3,3,1.7] | 0.58 |
第三次测量 | [3,3,2, 2,2,2, 3,3,2, 2,2,2, 2,2,1, 2,2,2, 3,3,2, 2,2,2, 2,1,2, 2,2,2] | [1,1,2, 5,2,1, 1,3,2, 3,1,2, 3,2,2, 2,3,2, 5,1,2, 1,2,3, 3,3,2] | [2.4,2.8,2.5,2,2,2, 2.9,3,2.1, 2,2,2, 2.1,2.4,1.7, 2,2,2, 2.8.2.9.2.1,2,2,2, 2.1,0.9,1.8,2,2,2] | [1,1,2.4, 5,2,0.9, 1,3,2.5, 3,1,2.1, 3,2,2.4, 2,3,2.1, 5,1,2.1, 1,2,2.5, 3,3,1.7] | 0.7 |
第四次测量 | [2,3,2, 2,2,2, 3,3,2, 2,2,2, 2,3,2, 2,2,2, 3,3,2, 2,2,2, 2,1,2, 2,2,2] | [1,1,2, 5,2,1, 1,3,2, 3,1,2, 2,2,3, 2,3,2, 5,1,2, 3,2,3, 3,3,2] | [2.4,2.8,2.5,2,2,2, 2.9,3,2.1, 2,2,2, 2.1,2.4,1.7, 2,2,2, 2.8.2.9.2.1,2,2,2, 2.1,0.9,1.8,2,2,2] | [1,1,2.4, 5,2,0.9, 1,3,2.5, 3,1,2.1, 3,2,2.4, 2,3,2.1, 5,1,2.1, 1,2,2.5, 3,3,1.7] | 0.64 |
第五次测量 | [2,3,3, 2,2,2, 3,3,2, 2,2,2, 2,3,2, 2,2,2, 3,3,2, 2,2,2, 2,1,2, 2,2,2] | [1,1,2, 5,2,1, 2,3,2, 3,1,2, 2,2,3, 3,3,2, 5,1,2, 3,2,3, 4,3,2] | [2.4,2.8,2.5,2,2,2, 2.9,3,2.1, 2,2,2, 2.1,2.4,1.7, 2,2,2, 2.8.2.9.2.1,2,2,2, 2.1,0.9,1.8,2,2,2] | [1,1,2.4, 5,2,0.9, 1,3,2.5, 3,1,2.1, 3,2,2.4, 2,3,2.1, 5,1,2.1, 1,2,2.5, 3,3,1.7] | 0.64 |
其中totaldata的前六个数据分别为位标1到徽章1、2、3的距离,位标1和徽章1、2、3的报警信息,2代表安全状态,3表示报警。minidata的前九个数据为最近的三个位标距徽章1的距离,以此类推。根据多次测量计算可得,本产品的定位误差范围在0.6米左右。
4.1可扩展之处
(1)位标所采集的人员距离信息存在些许误差,最终导致界面人员的显示位置出现偏差,还需算法上的优化。
(2)网页界面还比较粗糙,项目组将向专业网页美工人员虚心请教,进一步完善作品。
(3)胸章及位标系统的硬件部分还需进一步优化,如为胸章部分的电路封装上3D外壳后,EFR32BG22模块发送信号的强度也会受到干扰,需要减轻3D外壳对内部电路的静电屏蔽现象等问题。
4.2未来展望
本产品在未来将推出语音交互模块,在发生灾害时,位标系统无需布线、电池供电的特性能有效降低灾害对系统正常运行架构所带来的损害。即使所处环境发生变化,语音交互模块也能使人员通信保持正常,提高救援效率。项目组还将优化火焰报警模块,可以精确检测出火势距离、方向及大小,根据这些信息采取合适的灭火方案,同时,灭火后可根据距离、方向信息排查起火原因,排除安全隐患。
4.3心得体会
本作品基于将非可视内容可视化的创意,将室内人员的位置信息显示在客户端网页界面上。项目组充分发挥电子专业长处,采用软硬件结合的方式,通过绘制电路原理图、PCB制板、利用MCU主控编写程序处理外接设备的数据、利用无线传输模块传输数据并制作客户端界面等步骤,设计出室内人员定位系统。从工作量来看,包含胸章制作、位标系统搭建、网关系统搭建、云端与上位机设计四个部分,项目组人员在近几个月内全情投入,经常在实验室尽心测试调试,工作量非常饱满,最终完成了整个系统的搭建,实现了课题的所有内容,作品的完成度较好。在项目实施过程中,项目组成员掌握各个硬件模块和RT-Thread操作系统的使用方法,提升了嵌入式系统的设计能力,丰富了项目经验,对于成员未来的发展非常有利。在调试系统的过程中也培养了团队成员发现问题、分析问题和解决问题的能力,锻炼了团队成员之间相互协作的能力。
本项目对胸章、位标、界面进行了一定设计。使用了3D打印技术,制作出了胸章外观和位标外观,并在外观上附上了本队logo。如下图:
胸章的实物图如下:
(A) (B) (C)
图14 胸章3D及实物图 (A)胸章外观 (B)胸章内部电路 (C)3D
位标系统:
(A) (B)
(C)3D
图15 位标实物图及3D (A)位标内部结构 (B)位标外观 (C)3D
图13 徽章与位标实物图
网关系统:
图16 网关与L610连接图
界面显示:
项目组将数据信息通过L610上传到腾讯云平台,主要使用了腾讯云控制台在线调试设备、采集设备上报数据、通信日志、事件等信息的功能,即采集来自于通信模组的数据。通过消息推送窗口,实时捕获项目上下行所有节点的数据包,通过命令对节点进行操作,从而获取节点实时信息、控制节点状态等。具体的数据推送与接收如下图所示:
图17 串口发送数据页面
图18 腾讯云平台数据接收界面
本项目已开源在github上
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。