APP下载

基于STM 32单片机的GPS定位技术的应用*

2020-06-18云程莉胡文雅刘忠成

计算机与数字工程 2020年4期
关键词:串口语句单片机

饶 云程 莉胡文雅刘忠成

(1.武汉工程大学电气信息学院 武汉 430205)(2.武汉易思达科技有限公司 武汉 430205)

1 引言

随着科技发展,卫星导航定位系统已逐步融入了我们的生活,为社会提供了极大的便利,正是由于卫星导航定位系统具有覆盖范围广、定位精度高、实时性好等优点,其在多个领域得到了应用。以导航技术为基础的各项应用在很大程度上提高了社会生产力,方便了人们的工作生活,对国民经济的发展有着重大意义。

本文采用广播星历的方式来实时获取接收机的当前地理位置信息,解析报文数据,通过STM32单片机进行优化处理后显示在TFT屏上。接收并解析由GPS模块发送的数据是数据处理中心的一项重要任务,处理该任务的GPS定位模块具备高可靠性(reliability)和高有效性(efficiency)。能够正确高效地分析NMEA0183协议数据。本文将编程技术运用到NMEA0183协议的解析中,实现了一种高效稳定、高精确度的解析方法。

2 工作原理

GPS模块通过接受定位卫星的广播星历计算出自己当前的位置速度等信息,然后将这些信息用NMEA0183协议封装[6~7],并通过串口发送给数据处理中心(通常为嵌入式系统)进行处理。

为了完成对卫星数据的提取和显示,采用和芯星通的UM220定位芯片,并且选择STM32F103RCT6为单片机主控芯片,配上TFT显示屏幕显示实时获取到的卫星定位信息。

CDT是和芯星通提供的一款搜星工具,能够通过串口显示GPS模块搜到的卫星个数和从卫星的广播星历中获取的地理位置信息,也可以通过ConsoleWindows配置GPS模块的显示数据的频度和消息类别。

NMEA0183协议数据类别有十几种,这些信息的作用分别是:$GPGLL:输出大地坐标信息;$GPZDA:输出UTC时间信息;$GPRMC:输出GPS推荐的最短数据信息[4]等。

$GPRMC语句中包括经纬度、速度、时间和磁偏角等字段,这些数据为导航定位应用提供了充分的信息,所以选择GPRMC返回语句作为定位信息,下面是该语句的详细语句定义信息。

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10〉,<11>,<12>

$GPRMC语句意义如表1所示。

表1 GPRMC语句意义

通过查看数据手册知道$GPRMC的消息类别ClassID是4,配置$GPRMC的频度为1,让它每秒更新一次数据,其它的消息类别全部设置为0(关闭),语句格式为$CFGMSG,msgClass,msgID,rate,所以需要通过串口向GPS模块输入配置信息如图1。

图1 GPS配置信息

在Windows10系统下,通过USB转串口线连接GPS模块,通过CDT软件配置GPS模块的串口号和波特率等参数,电脑CDT软件测试获取到的地理信息结果如图2。

图2 CDT测试显示图

测试结果显示通过串口配置GPS的定位信息能返回规则的$GPRMC,这样就能每秒获取$GPRMC报文信息,没有其他的杂项,方便编程提取串口数组成员,显示经纬度、速度和UTC时间当重要参数信息。

3 总体设计

根据MMEA0183卫星通信数据协议和软件测试结果,让单片机串口接收卫星定位芯片返回的数据,按照数据协议解析成当前所处的地理信息,发送到TFT屏幕上显示[8~11]。UM220的技术指标如表2所示。

表2 UM220的技术指标

整体设计结构框图如图3所示,UM220定位芯片模块通过天线获取GPS卫星定位信息,解算出当前经纬度并通过串口返回到STM32单片机,通过编写串口程序,依次从缓冲区提取数组成员,根据MMEA0183通信协议,解析到TFT屏幕上显示[12~14]。

图3 结构框图

4 硬件设计

定位模块整体设计电路原理图如图4所示,采用上拉10K电阻的方式来设计定位芯片的复位电路,当按键S11按下时BDRST引脚电位由高电位跳变成低电位[15~17]。系统采用2.85V电源的有源天线,通过SMA接口连接UM220模块的RF_IN和VCC_RF引脚,利用发光二极管做稳压二极管,将3.3V电压稳定到2.85V,给天线供电[18]。研究只使用了UM220模块的RXD1、TXD1引脚,这两个引脚上接入通过串口芯片连接到STM32单片机,复位电路通过S11按下时候BDRST电位由高向低跳变实现低电平复位[20~21]。

图4 定位模块电路原理图

5 软件设计

从串口调试助手分析数据后发现,定位芯片模块默认打开所有类别的数据上传频度,这样会对单片机采集数据和分析单一的$GNRMC并提取相应的信息造成极大的干扰和代码复杂度,基于单一变量原则,采用事先配置模块信息的方式来初始化模块,使它按照频度为1的速率输出单一的$GNRMC语句。配置好后采集数据分析[22],例如:

$GPRMC,074529.82,A,2429.6717,N,11804.6973,E,12.623,32.122,010806,,W,A*08

从这条语句中可以得知当前的纬度是北纬24.296717、东经118.046973,从串口缓冲数组中取数组成员[19~27]是纬度,[29]是南纬还是北纬,[31~40]是经度,[42]是东经还是西经,整个的软件设计流程图如图5。

STM32单片机开机上电后通过串口发送配置信息给UM220模块,完成初始化工作,初始化成功后UM220会向单片机返回OK,然后就是规则的$GPRMC信息发送给单片机,通过编程实现单片机解析串口数组,把每个字段信息输出到TFT显示屏的指定位置。

图5 软件设计流程图

6 结果测试

在不同的地点、时间和天气环境下得到的测试结果分别做了5次仿真实验,通过仿真结果可以很好的验证本设计具有定位准确、性能稳定的特点。

图6 Matlab仿真图

由图可知,在配置GPS定位模块只上报$GNRMC语句和不做任何处理,仅仅通过代码编程去识别的方式进行对比后发现,经过配置处理后的定位数据显示时间(晴天学校)要明显低于不经过处理的时间(阴雨天宿舍)。关于GPS定位应用研究的实物效果图如图7所示。

图7 实物效果图

7 结语

本文经过软件和硬件的电路设计,以及对卫星通信报文分析,采用STM32单片机作为数据处理和显示控制处理器,完成了对GPS卫星定位模块的初始化配置和对TFT屏的数据输出显示,针对过多的冗余定位信息进行了优化,减小了显示时间,达到了预期的实验效果。

猜你喜欢

串口语句单片机
单片机在电子技术中的应用和开发
基于EM9000工控板高性能双串口通信模型设计与实现
MCS—51单片机中的多串口通讯技术的应用
C8051F020与80C51单片机的异同点
基本算法语句
我喜欢
微机串口的测试诊断
作文语句实录
基于VC串口通信的实现
单片机I/O口模拟串行通讯的C51实现方法