当前位置:   article > 正文

RISC-V MCU+基于CH32的LoRa+ibeacon的室内定位系统_mcu室内定位

mcu室内定位

第一部分  设计概述

    1. 设计目的

目前人们对室内定位的需求越来越多,比如在智能工厂中,员工管理、AGV(无人搬运车)的运行都需要室内定位技术;在养老院、医院,需要了解老人、病人、物料等在院里的位置;在大型商场、机场、高铁站和停车场等环境中,更需要室内定位,了解自己的位置,了解自己要找的商铺、候车室的位置。可以说,室内定位随着数字经济的发展,需求越来越旺盛。因此本项目设计一款基于蓝牙的室内定位系统,实现非可视内容的可视化,具有重要的实际意义。

    1. 应用领域

本作品主要应用于需要对固定人员进行监管的场所,应用领域包含但不限于以下场所:

(1)养老院、监狱、医院病房

(2)厂房、机房、幼儿园、特殊学校

    1. 主要技术特点

(1)采用蓝牙Beacon定位技术和Lora通信技术

(2)系统包括胸章、位标和网关三个部分。网关搭载了RT-Thread操作系统,能够多线程运行。

(3)在腾讯云上开发界面,可实时显示胸章位置信息,方便监管。

(4)该系统无需布线,施工及维护成本低。

    1. 关键性能指标

整套系统实现人员位置信息的远程监控,云端数据存储功能以及定位的云端可视化功能。本作品可将室内人员的位置信息展现在地图上,地图的布局与真实场景相符,同时也会展示相应的数据信息,比如胸章的编号,位标的编号,每个位标采集到的胸章的距离,以及每个胸章被采集到的最短的三个位标距离。通过数据、图形相结合,可以精确观察到室内人员的位置信息。如下图所示:

图1页面显示

通过测试,系统最关键的指标即定位精确度较高,在大部分正常的时刻,精度可达到0.6米。

    1. 主要创新点

(1)使用三点距离定位法来显示人员位置,由于定位法存在几种特殊情况,在对算法公式进行改进后,排除了这几种情况,提高了显示定位的准确度。

(2)发送位置信息的胸章十分小巧,便于佩戴,且添加了人员报警功能,可以更迅速的定位出现问题的人员区域。

(3)在位标处添加了火焰报警模块,在商城或工厂等处能够及时监测到火情能够及时监测到火情,发出警报,尽早采取消防措施,使得应用可以更加广泛。

第二部分  系统组成及功能说明

    1. 整体介绍

整个系统框架如下图:

图2 定位系统整体框图

整个系统工作流程为:当胸章进入位标系统的信号覆盖范围,位标系统能接收到胸章发送的广播信号RSSI值。位标系统中的MCU读取EFR32BG22蓝牙模块的RSSI值,处理后通过Lora发送至网关。网关接收数据,通过L610传输至腾讯云平台,云端通过定位算法计算出人员位置并在网页界面显示,如果收到的是报警信息,则弹窗提示。

    1. 各模块介绍

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操作系统的使用方法,提升了嵌入式系统的设计能力,丰富了项目经验,对于成员未来的发展非常有利。在调试系统的过程中也培养了团队成员发现问题、分析问题和解决问题的能力,锻炼了团队成员之间相互协作的能力。

第五部分  参考文献

  1. 刘丽.高校图书馆iBeacon定位技术的系统构建研究[J].辽宁工业大学学报(自然科学版),2018,38(02):103-106.
  2. BG22Ax 用户手册
  3. CH32V20x_30x 数据手册
  4. 成举炳.基于IBeacon的选煤厂人员定位系统的设计[J].煤炭加工与综合利用,2019(05):64-66+69.
  5. 上海赛睿德电子科技有限公司,RT-Thread文档中心[OL],https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/README
  6. L610操作手册
  7. 腾讯云物联网开发平台文档中心https://cloud.tencent.com/document/product/1081/44921

第六部分  附录

本项目对胸章、位标、界面进行了一定设计。使用了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上

https://github.com/bestlaohe/positioning-system.git

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/867755
推荐阅读
相关标签
  

闽ICP备14008679号