基于STM32 的三维空间无线定位
2024-01-23孙婷
孙 婷
(北京信息科技大学 信息与通信工程学院,北京 100083)
0 引 言
随着科技发展,由中国的北斗、美国的GPS、俄罗斯的GLONASS、欧盟的GALILEO 组成的全球导航卫星系统(Global Navigation Satellite System, GNSS)能够在地球表面任意地点为任何用户提供定位服务。然而,由于该系统存在自身的局限性,很难在微弱甚至没有信号的环境中进行定位。地质勘测、矿产开采等户外作业对于任何国家及社会的发展都具有重要作用。近年来,随着煤矿、油气资源勘探等应用需求的不断增加,对实现无GPS 信号的仪器定位提出了更高的要求。世界各国对于无线定位的研究主要集中在一般环境下即GPS 信号强的环境。针对微弱信号下的无线定位研究主要依靠软件接收机的相关算法,算法难度和应用成本较高。文献[1]设计了弱GNSS 信号软件接收机,利用全比特补零算法捕获信号,基于非相干结构的跟踪环跟踪信号,通过BDS/GPS 粗时段导航伪距进行定位。文献[2]使用北斗二代信号,结合频率估计与定位算法PMF-FFT 实现了弱信号条件下的精确定位。文献[3]使用GPS 和北斗系统混合定位来应对西藏等弱信号区域的应急无线通信。
目前针对弱信号条件下的定位已取得一定研究成果,但无信号条件下的研究仍处于初步阶段,还须不断完善。此外,有线单片机通信系统布线复杂、人力物力消耗过大、成本较高,不适用于需要大规模布置数据采集仪器的地质勘探和煤矿开采等领域。基于上述研究现状,本文从硬件设计出发,基于STM32F407 单片机进行了仪器的三维无线定位研究。
1 系统总体方案
系统主要由STM32F407 单片机、无线通信模块、GPS接收模块、测距模块、液晶显示模块组成。系统的总体框图如图1 所示。其中,单片机A 为无信号环境下需要定位的仪器,单片机B、C、D 为可接收到信号的仪器。
图1 系统框图
以单片机B 为例,首先,利用搭载的GPS 接收模块接收GPS 信号并计算得到单片机B 的三维位置,即经度、纬度和高度;其次,利用无线通信模块与单片机A 取得联络,获取测距命令并进行单向测距,并将测得距离显示在液晶显示模块上;最后,通过无线通信模块将获得的信息告知单片机A,单片机A 在收到信息后将单片机B 的位置与相对距离显示在液晶显示模块上。单片机C、D 重复上述操作,最终单片机A 处获得其余三个单片机的位置及三个相对距离,通过数据仿真即可推断出单片机A 的位置。由于实际场景位于旷野平原,地势平坦,高度变化较小,求取单片机A 的高度时,可取单片机B、C、D 高度的平均值。
2 系统硬件设计
2.1 开发板
本文所用单片机为STM32F407[4-6],使用ARM Cortex-M4 32 位RISC 内核,工作频率高达168 MHz,包含高速嵌入式内存,可连接到两条APB 总线、三条AHB 总线和一个32 位多AHB 总线矩阵的各种增强型I/O 和外围设备,是一款高性能且实用的开发板,实物如图2 所示。
图2 STM32F407 单片机
2.2 液晶模块
由于TFTLCD 模块具有自动化程度高、易于集成、低成本等优点,本文选用驱动芯片为ILI9341,支持64K 彩色显示,使用以RGB565 格式存储彩色数据并自带显存的TFTLCD 作为液晶显示模块。
2.3 GPS 定位
本文选用的GPS 定位模块为BLOX NEO-6M,具有灵敏度高、精度高、功耗低、体积小等优点,能够在复杂环境下进行定位。BLOX NEO-6M 模块遵循NMEA-0183 协议,系统设计所需要的定位信息的相关解析函数如下:
(1)可见卫星数函数(GPGSV),提取可以搜到的卫星总数、卫星编号、卫星仰角、卫星方位角及卫星信噪比信息。
(2)GPS 定位信息函数(GPGGA),提取GPS 状态、正在使用的定位卫星数、高度信息。
(3)当前卫星信息函数(GPGSA),提取定位类型、定位卫星编号、各精度因子的信息。
(4)推荐定位信息函数(GPRMC),提取UTC 时间(协调世界时)、纬度、南北纬、经度、东西经、UTC 日期。
2.4 无线测距
由于本文的设计要求为无线定位距离达到千米级,对比超声波测距、激光测距、UWB 测距、雷达测距、红外测距等模块可知,只有激光模块可以满足设计要求。
应用脉冲法进行激光测距的原理为发射的激光在空气中传播,一旦有相关物体即目标测量物挡住其传播后就会反射,直到超声波重新被接收,由计时器测量激光从发射到接收这一过程所需的时间。激光测距公式为:
式中:s为测量距离;c为传播速度;t为传播时间。
实物测试时,由于激光测距的成本过高,实物实现较为困难,因而使用测距原理相近的超声波测距模块[7-8]代替,超声波的传播速度为340 m/s。比较市面上多种型号的超声波模块,如HC-SR04、RCWL-1601、US-015、HY-SRF05、US-100 等,考虑到性能、成本等因素,选用性能较好的US-100 模块。US-100 模块的测距范围大概为0.02 ~4.5 m,具有允许输入电压范围大、功耗低、成本低等优点,内置温度传感器可有效校准测量结果,并支持GPIO、串行口等通信方式。US-100 模块背面有模式选择跳线,插入跳线帽时,在串行端口触发模式下工作;拔下跳线帽时,在电平触发模式下工作。
本设计中选择电平触发模式,在打开开发板电源即给设备上电之前,先卸下模式选择跳线上的跳线帽,以将模块置于电平触发模式。使用电平触发测距的时序原理如图3 所示。
图3 电平触发测距时序原理
首先给超声波US-100 模块的Trig 端输入一个作为触发信号的10 μs 以上的高电平;然后,发射探头会自动循环发出8 个40 kHz 的脉冲;同时,Echo 端的电平变高,当遇到目标物体遮挡后反射的超声波被模块接收时,Echo 端电平变低,通过Echo 端维持高电平的时间和超声波在空气中的传输速度进行距离计算。
2.5 无线通信
NRF24L01 无线通信模块主要是通过电磁波进行数据的传输,可以实现一个接收端和一个发射端即点对点通信或一个接收端和六个发送端即一对六无线通信。该模块采用串行外设接口通信,易与单片机进行连接。由于有126 个调频通道,可以满足本设计多点通信的需求[9]。只包含NRF24L01芯片的模块的传输距离为5 m 左右,测量距离较短,加板载天线后的无线通信模块在无遮挡空旷地的无线通信距离一般可以达到20 m 左右,但仍不满足千米级的研究场景需求。因此,本次设计选用AS01-ML01DP5 无线通信模块,在使用NRF24L01P 射频芯片的基础上,集成了RFX2401C 功放芯片,具有接收灵敏度高、抗干扰能力强等特点。由于自带SMA-K 天线接口,传输距离可达2 km,满足设计要求。
NRF24L01 无线通信模块作为接收端(RX)时,内部最多可以同时存在6 个接收地址,通过配置可以分别启用/禁用一个或多个接收地址。如果启用了多个地址,当RX 接收数据信号时,依次进行地址比较;当地址能够完全匹配时,RX 接收并处理数据[10]。虽然RX 有多个可以接收数据的通道,但NRF24L01 只有一个射频模块,同一时刻只能接收一份数据。如果使用多对一通信时,需要注意错开各自发送时间。
3 系统软件设计
3.1 CH340 驱动
当代的电脑普遍使用USB 口代替9 针串口,如果将USB 口应用为串口,则需要安装驱动。CH340 驱动是一种连接计算机和单片机实现USB 到RS 232 驱动程序的黑色连接线。与其他USB 转串口的芯片相比,CH340 因成本较低且在一般场景性能已经足以满足使用需求,实际更受欢迎[11]。
3.2 程序烧录软件
本文设计中使用FlyMCU 将程序下载到单片机,它是一个免费的、功能强大的STM32 最新的串行口烧录软件,可以帮助用户连接到用于通信的串行端口,轻松地烧写程序,支持编程、校验、读取设备信息,可以使用连续下载程序模式,已成为用户进行硬件调试的必备软件。
3.3 串口调试助手
本文使用的串口调试助手为ATK XCOM。与其他的串口调试软件相比,XCOM 具有使用界面简单大方、易于使用、能准确地识别串口等优点。在系统前期进行测距校准调试时大量使用此软件。
4 实物测试及分析
本次设计的实物测试部分只实现单台设备的定位、两台设备之间的测距和通信等功能。由于测距模块本身的局限性,被测设备的表面需保持平整,否则所得数据与实际结果之间会出现较大偏差。实物测试如图4 所示。
为保证测量结果的准确性,在程序中设置连续测量5 次距离,对5 次距离求平均值后再通过串口输出1 次结果。本次设计的触发方式选择电平触发,在连接好硬件后进行测试的过程中,串口调试助手XCOM 的主页面上会自动显示每次的测量数据。分别对0.05 m、0.1 m、0.15 m、0.2 m、0.5 m、1 m 进行测量,得到的结果及测量误差见表1 所列。
表1 测距误差
通过对表1 数据进行分析,测距在1 m 之内的测量误差基本在0.262 6%以内,为可控范围。在传输数据的过程中必须保持收发端所设置的地址一致,否则会收不到数据。经过实地测量,若两台单片机之间无别的物体遮挡,在1.5 m的范围内收发端的数据可以保持一致即测量误差为0,超过1.5 m 后数据丢包现象严重。考虑到室内环境和无线信号的影响使其测量无误差的范围减小,若在空旷的室外环境下,其传输距离将会增大。
5 结 语
本文在STM32 单片机基础上应用GPS 定位、无线通信、无线测距等模块实现无信号室外仪器无线定位。实验结果表明,所设计系统的误差较小且测量精度较高。实际应用时应将超声波测距模块更换为激光模块,增大测距范围,更好地满足应用场景。