基于UWB的超高精度室内定位系统
2021-10-18郝晴晴
摘 要:系统主要对室内进行二维定位,能实时定位出目标的相对位置并对其运动轨迹进行绘制。系统以STM32F411单片机作为核心处理单元,通过3个锚点建立直角坐标系,可用TOF算法与光速的乘积算出标签与锚点之间的距离差,标签用三边定位算法可得到位置坐标值,最后标签将位置坐标值传送到计算机的上位机中。实际测试结果表明:系统最终能够定位到的位置与实际位置的偏差很小,具有较高的实时性、稳定性以及抗干扰性。
关键词:超宽带定位;TOF算法;室内定位系统
0 引言
在当今社会,去一个陌生的地方都会使用地图软件进行导航,它会提供一个最便捷的路线,但是由于GPS信号在室内环境中衰减得很严重,甚至有时候会出现搜索不到信号的情况,导致室内定位不能直接采用室外定位的方法[1]。
1 室内定位的方法
室内定位主要有以下几种方法:蓝牙定位、超声波定位、WiFi定位等。
1.1 蓝牙定位技术
蓝牙可以发送和接收2.4 GHz的蓝牙信号,蓝牙定位主要是靠检测附近基站的接收信号强度指示(Received Signal Strength Indication,RSSI),获取被定位用户的位置信息。虽然蓝牙有着体积小、价格便宜、容易集成到应用设备的特点,但由于蓝牙通信距离较近以及蓝牙基站的不普及,而且蓝牙信号易受噪声信号的干扰,其稳定性较差,所以该技术只适用于小范围内定位,并且误差也很大。其定位误差范围一般在2~5 m,所以现在很少把蓝牙运用于定位系统。
1.2 超声波定位技术
超声波定位一般由1个发生设备和3个接收设备构成,当整个系统开始启动时,发生设备先发送同步信号,然后再开始发送超声波脉冲信号,当接收设备收到同步信号后开启定时器进行计数,再记录下此刻接收设备收到脉冲信号时的计数器值,然后可以分别得到发生设备与接收设备之间的距离差,实现室内定位。
1.3 WiFi定位技术
WiFi定位主要靠检测周围WiFi信号强度,然后與室内位置建立一一对应的关系,这种关系被称为指纹库。被定位的标签只需要与指纹库中的参考点进行比对,就可实现目标物体的定位。
2 系统方案设计
2.1 系统整体方案设计
本设计的主要目标是设计一套成本比较低廉的室内定位系统,目的是获取标签相对精确的位置信息,并能实时把定位到的坐标值通过无线数传模块传送到计算机上,然后在自主开发的上位机软件中对标签进行实时定位和轨迹绘制,通过观察PC端就能准确知道标签在什么位置。整个系统由硬件电路和上位机软件组成,第一部分由锚点与标签上的DWM1000模块用TOF算法算出距离值,然后标签对距离值通过求平均值处理。第二部分由微处理器STM32F411用三边定位算法算出标签的坐标值并及时显示到标签的OLED上,最后通过数据传输模块与计算机通信。上位机软件可及时更新坐标位置信息,绘制标签的轨迹。系统如图1所示。
2.2 系统设计指标
为了让室内定位更加准确,减小误差,文章提出了以下的设计指标。
(1)标签需配有OLED显示屏。如果没有OLED显示屏,佩带标签的人无法立即知道自己的位置信息,而只能通过PC端的上位机才知道自己的位置信息,所以这样会非常不方便。
(2)在放置锚点位置时,尽量避免与大地和金属接触,因为发送出去的一部分脉冲信号很容易被它们吸收掉,从而影响定位的精度。
(3)标签与锚点的供电最好采用锂电池,并且在测试的时候要将电池充满电,这样才能使DWM1000模块发射的功率一样,从而保证定位的精度。
(4)由于一般遮挡会影响定位的精度,所以在放置基站的时候尽量避免遮挡物。
3 系统的硬件电路设计
3.1 单片机整体电路的设计
3.1.1 微控制单元的电路设计
标签和锚点上的MCU使用的是一款32位单片机STM32F411,完成了电源滤波电路的设计、16 MHz的高速晶体振荡器的设计、复位电路的设计[2]。
电源滤波电路的设计:电容C34和C35,选用的是容值为100 pF的贴片电容,将它们分别与5 V电源和3.3 V电源串联,对电源进行滤波处理。
16 MHz的高速晶体振荡器的设计:需要将大小为16 MHz的晶振接到STM32F411的XIN和XOUT的引脚上,两端的电容主要作用是辅助起振。
复位电路的设计:复位电路的工作模式是上电后马上进行复位和手动进行复位。后者是当单片机程序跑飞后,为了让其继续正常工作,需要进行手动复位。电容的容值是 10 μF,电阻的阻值为10 kΩ,起分压的作用。手动按下复位开关后,C1会进行放电,此时电阻R40两端产生压降,导致单片机复位。
3.1.2 电源模块电路的设计
本系统有两种供电方案:一种是用USB供电,另一种是用3.6 V的锂电池供电。采取第一种供电方案,需要将USB的输出直接与LM1117-3.3模块的输入端相连,目的是使5 V的电压变成3.3 V。电容用来滤除电源中含有的高频和低频分量。选择USB还是锂电池供电是通过一个波动开关PW1控制的,这可以防止两种不同的方式同时进行供电时将系统烧坏。LED灯常亮则表示系统供电正常,通过电阻分压,防止通过LED的电流过大,烧坏LED灯。
3.1.3 DWM1000模块驱动电路的设计
发送超宽带脉冲信号的装置使用的是DecaWave公司生产的DWM1000模块,该模块符合IEEE802.15.4-2011标准,DWM1000模块主要完成收发时间戳的记录,通过循环的方式于各个锚点之间完成通信,从而得到标签与锚点之间的距离[3]。下面对电路进行分析,电容C28起电源滤波作用,D7,D8,D9,D10这些LED灯亮了分别代表接收成功、供电正常、模块处于接收模式、模块处于发送模式。R26和R27的作用是配置SPI的操作模式。
3.1.4 无线数传收发电路的设计
无线数传模块的工作频段为433 MHz,传输速率为 19 200 bps,该模块的功能相当于通信距离增强版的蓝牙模块。之前采用的是蓝牙模块,但在系统测试时发现蓝牙模块对DWM1000模块干扰很大,而且不适合远距离传输,所以就替换成了无限数传模块[4]。PC端的USB口接上一个无线数传模块的接收端,用来接收标签传过来的位置值。下面对电路进行分析,模块上4,5引脚给数传模块进行供电,LED1常亮说明无线数传模块供电正常。
3.1.5 OLED显示电路设计
本部分的功能主要是实时显示位置信息,且在调试期间非常方便,所以电路采用了OLED显示屏。OLED屏幕与单片机之间的通信采用的是I2C协议,由一根SCL和一根SDA构成。在进行文字显示时还要通过汉字提取软件将汉字转换成对应的数组。
3.2 系统PCB设计
电路板设计使用的是 Altium Designer软件。对元器件进行合理布局和布线,在确保电路能够正常工作的前提下,尽量使元器件摆放美观、整齐,减小走线。
4 系统的软件设计
在系统硬件设计完成之后,制作PCB电路板,在焊接时,一定要确保焊接到电路板上的元器件型号准确,不出现短路、虚焊、漏焊等情况,这样才能开始进行系统软件的设计。系统软件的设计主要由两个部分组成:一是下位机系统程序的设计;二是电脑上位机系统程序的设计。
4.1 下位机系统程序的设计
标签的程序设计:标签上的STM32F411单片机主要的功能是循环发送数据包给各个锚点,每个锚点收到数据包后产生一个应答信号返送给标签,标签与锚点之间的距离差可用TOF算法与光速的乘积算出,标签用三边定位算法可得到位置坐标值[5]。标签用无线数传模块把坐标值传给上位机,以供上位机后续对数据的处理。锚点的程序设计:锚点工作在接收模式,当锚点收到标签发送的数据包后产生一个应答信号返送给标签。
4.1.1 开发环境
对下位机程序的开发,笔者选用的是 Keil5软件,因为它更简洁,集成了官方提供的库函数。
4.1.2 TOF算法
由于每一个DWM1000一上电就会马上产生一条独立的时间戳,此时标签发射超宽带脉冲的时刻为TB1,锚点在TB2时刻接收到,然后锚点再在TA1时刻发送应答信号给标签,此时标签收到应答信号的时刻为TA2。其中标签和锚点之间的距离差可以用下列公式算出:D1=C×[(TA2-TA1)+(TB2-TB1)](C为光速)[6]。
4.1.3 三边定位算法
在放置锚点时,将3个锚点分别放置在坐标系(0,0)(0,5)(5,0)的位置上,建立笛卡尔坐标系,这样可以减少单片机的计算量。通过TOF算法可以分别得到D1,D2,D3的值,再用三边定位算法得到的位置信息是相对于这个坐标系而言的。在标签上的单片机通过最小二乘法得到一个矩阵,矩阵里面存储着X,Y的值。
4.1.4 平均值滤波算法
标签在移动的时候距离差会发生变化,为了减小定位的误差,提高定位的精度,所以本系统采用平均值滤波算法,該算法主要是将TOF算法得到的距离差求平均值。通过几组数据测试后,最后得出了每8次求一次平均值效果最好。
4.2 上位机程序设计
在确保下位机程序能够准确得到位置信息后,还需要将定位到的位置信息传送给计算机,然后在计算机上进行相关数据的处理。在满足上述这些设计的前提下,需要自行编写一个上位机软件,由于人们基本上使用的是Windows操作系统,故编写的软件能在Windows平台上运行。
4.2.1 串口通信程序的设计
在进行串口通信时,使用的是微软提供的MSComm控件,直接使用这种控件的好处就是不用花费大量的时间去了解串口通信的详细过程,缩短了软件的开发周期。首先要在项目工程中插入MSComm控件,再为其添加成员变量[7]。
4.2.2 数据处理流程
标签发送数据给电脑时是将位置信息先进行数据处理,打包后再进行发送,这样可以减小误码率,方便计算机对数据的处理。数据包的格式为:帧头+数据+帧尾。设置“A”作为帧头,“Z”作为帧尾。因为单片机发送的位置信息都是由数字构成的,所以利用帧头和帧尾可以将每个坐标值进行区分。
5 试验与测试
按下标签和锚点的电源开关按钮,确保供电正常,然后将3个标签分别放置在预先建立的坐标系(0,0)(0,5) (5,0)位置上,将标签佩戴在身上进行移动行走。
在上述步骤完成之后,打开上位机软件。上位机主要的功能是接收标签位置的坐标信息,对标签运动轨迹进行实时绘制。经过测试,当基站与标签之间的距离在30 m之内时,定位精度误差在5~15 cm;当超过30 m之后,室内定位的误差就会比较大。
6 结语
对基于UWB的超高精度室内定位系统的反复试验、修改标签的程序、修改上位机程序,进一步提高了定位的精度。本系统最终可以稳定地运行,能够满足最初的设计要求。
[参考文献]
[1]徐小龙.物联网室内定位技术[M].北京:电子工业出版社,2017.
[2]刘火良,杨森.STM32库开发实战指南:基于STM32F4 [M].北京:机械工业出版社,2017.
[3]王金龙.无线超宽带(UWB)通信原理与运用[M].北京:人民邮电出版社,2005.
[4]邬正义,徐惠钢.现代无线通信技术[M].北京:高等教育出版社,2008.
[5]朱刚.超宽带(UWB)原理与干扰[M].北京:北京交通大学出版社,清华大学出版社,2009.
[6]王江舟.高速无线通信—UWB、LTE与4G[M].北京:人民邮电出版社,2010.
[7]林立军,程斌,翁迪恩缟.Microsoft Visual Studio 2005 6.0 数据库开发指南[M].西安:西安电子科技大学出版社,2000.
(编辑 王雪芬)
Ultra-high precision indoor positioning system based on UWB
Hao Qingqing
(School of Electeical Engineering and Automation, Henan Polythchnic University, Jiaozuo 454000, China)
Abstract:The system can locate the relative position of the target in real time and draw the trajectory of the target. The system takes STM32F411 MCU as the core processing unit. The system establishes a cartesian coordinate system through three anchor points. The distance difference between the tag and the anchor points can be calculated by the product of TOF algorithm and the speed of light. The tag can get the position coordinate value by using the trilateral positioning algorithm. The actual test results show that the deviation between the final location and the actual location is small, and it has high real-time performance, stability and anti-interference.
Key words:UWB positioning; TOF algorithm; indoor positioning system
作者簡介:郝晴晴(2000— ),女,河南南阳人,本科生;研究方向:电气工程及其自动化。