APP下载

基于STM32的北斗/GPS定位系统的设计

2018-07-27周孟强童忠晴李刚

电子制作 2018年13期
关键词:原理图数据处理解析

周孟强,童忠晴,李刚

(湖北文理学院物理与电子工程学院,湖北襄阳,441053)

0 引言

全球定位系统GPS是由美国国防部研制的全球导航卫星系统,于1993年正式投入使用,为用户提供连续、高精度的三维位置、速度和时间信息及精密导航。我国的北斗卫星导航系统于2004年开始建设,从2011开始对我国和周边地区提供测试服务,2012年底开始对亚太大部分地区提供卫星导航服务。利用此设计有很广泛的扩展性,可用于儿童和老人的行踪掌控,公路巡检,贵重货物跟踪,追踪与勤务派遣,私人侦探工具,个人财物跟踪,宠物跟踪,野生动物追踪,货运业,汽车防盗,自行车防盗,电动车防盗,摩托车防盗,银行运钞车,军警演习操控,检调追踪,公务车管理等众多方面。

1 系统工作原理

本设计以STM32F107开发板为基础,结合AN1502 ATK-NEO-6M GPS模块,实现STM32单片机和GPS模块的通信;通过GPS模块实现定位,STM32对GPS模块输入的信息进行读取和处理,然后在通过OLED显示得到的定位信息。该系统的总体结构框图如图1所示。

该设计还有如下附加功能:定位状态显示(卫星颗数、UTC时间等),SD卡数据存储功能;可以通过RS232串口传输坐标和时间至PC机,并通过上位机软件实现路径计算和网络地图定位。

2 硬件系统设计

整个系统由STM32单片机、AN1502 ATK-NEO-6M GPS模块、OLED、PC机等构成。系统总体结构图如图2所示。

图2 总体系统结构

本设计所选用的STM32是基于ARM® Cortex® M 处理器内核的 32位闪存微控制器,为MCU用户开辟了一个全新的自由开发空间,并提供了各种易于上手的软硬件辅助工具。STM32 MCU有融高性能、实时性强、功耗低、电压低等众多优点,同时保持集成度高和便于开发的特点,能方便的完成各种中小型项目。

■2.1 GPS模块设计

ATK-NEO-6M模块,是一款高性能的GPS模块,模块核心采用的是UBLOX生产的NEO-6M模组,具有50个通道,追踪灵敏度高,测量输出频率高等特性。

ATK-NEO-6M模块具有以下特点:①模块采用UBLOX公司生产的NEO-6M 模组,具有小体积和高性能的特点。②模块使用方便,只通过串口就可设置各种参数并保存在EEPROM里。③模块有高增益的LNA芯片和陶瓷天线等,有很强的搜索卫星的能力。④模块兼容3.3V和5V的电平,能外接各种单片机系统。⑤模块因为有IPX接口,可以连接各种有源天线,有很强的适应能力。⑥模块自带备用电池,可以掉电保持星历数据。ATK-NEO-6M 模块输出GPS定位数据采用的是NMEA-0183协议,并通过UBX协议用串口来控制模块。ATK-NEO-6MGPS模块的原理图如图3所示。

■2.2 OLED模块设计

图 3 ATK—NEO—6M GPS 模块原理图

OLED的全称是有机发光二极管(Organic Light-Emitting Diode),又被称为有机电激光显 示(Organic Electroluminesence Display,OELD)。OLED具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优点,被广泛应用于各种平面显示。OLED是本设计最重要的人机接口之一。

OLED具有尺寸小、高分辨率、拥有多种接口方式、工作电压小等特点。OLED模块的原理图如图4所示。

图4 OLED 模块原理图

该模块采用8×2的2.54排针与外部相连,一共有16个引脚,在本设计中,我们只使用了16条线里的15条线,其中15号线是悬空的。在已使用的15条线中,1号线接地、2号线接3.3V的电源,3~14和16号线是信号线。但在不同的模式下我们所使用的信号线的数量是不一样的,在I2C模式下我们仅仅使用了2条,而在8080模式下,我们却使用了全部的信号线。但无论在什么模式下,我们所使用的复位线RST是共同的,RST线上的低电平会导致OLED复位,因此在每次初始化之前,都应该将复位线RST置于低电平。

3 系统软件设计

北斗/GPS的功能是把经纬度、高度、速度、温度、面积、卫星数、UTC时间等信息在液晶上显示。本系统是通过GPS模块实现定位,STM32对GPS模块输入的信息进行读取和处理,然后在通过OLED显示得到的定位信息。因此,本设计处理程序主要由GPS数据处理程序、OLED数据处理程序等组成。

■3.1 GPS数据处理设计

开启GPS模块后,接收NMEA-0183格式的信息,提取其中的“GPRMC”语句,若之有效,则提取其中的时间、日期、经纬度;无效则使用RTC提供的时间和日期。再将时间转换成东八区的时间,判断位置是否匹配在进行显示。具体数据流程图如图5所示。

这部分代码主要分为2个部分,一部分采用NMEA-0183协议解析GPS定位数据,另一部分是利用UBX协议对模块进行配置。

■3.2 OLED数据处理设计

OLED模块的控制器是SSD1306。SSD1306的显存的大小为128×64bit,SSD1306将这些显存分一共分成了8个部分。这样就组成了128×64大小的点阵。在读写操作的时候会出现一个问题,因为该模块是按字节来写入的,所以当我们只使用写方式来使用这个模块的时候,每次都要写入8个点,这样的话就必须要清楚所设置的点的字节的每个位当前的状态是0还是1,否则后写入的数据会覆盖掉之前所表现的状态,结果就会出现混乱,该显示的点没有显示出来,不该显示的点显示了出来。如果在读的模式下,我们可以事先读出来要写入的那个字节的当前的状况,在修改了要改的位的状态后再写入GRAM,这样就能避免在只写操作下出现的问题。但是这需要能读GRAM,该模块在3线或4线SPI模式下不仅不支持读,而且该方式的速度也很慢。

为了避免出现这种问题,采用的办法是在STM32的内部建立一个OLED的GRAM(共128×8个字节),那么在每次修改数据的时候,只用修改STM32上的GRAM,修改完成之后可以一次性把STM32上建立的GRAM的信息写入到OLED模块的GRAM。SSD1306初始化框图如图6所示。

OLED模块显示步骤如下:①设置STM32与OLED模块相连接的IO。②初始化OLED模块。启动OLED模块要对控制OLED模块的相关寄存器进行初始化,为接下来的步骤做铺垫。③通过函数处理字符和数字并在OLED模块上显示。

4 部分主要程序摘选

void GPS_Analyse(nmea_msg *gpsz,u8 *buf)

{ NMEA_GPGSV_Analyse(gpsz,buf); //GPGSV 解析

NMEA_GPGGA_Analyse(gpsz,buf); //GPGGA 解析

NMEA_GPGSA_Analyse(gpsz,buf); //GPGSA 解析

NMEA_GPRMC_Analyse(gpsz,buf);//GPRMC解析

NMEA_GPVTG_Analyse(gpsz,buf); //GPVTG 解析 }

//gpsz:nmea:信息结构体

图5 GPS数据处理流程图

图6 SSD1306初始化框图

//buf:首地址

该部分是NMEA-0183协议解析GPS数据的部分函数,通过数逗号法来解析。NMEA-0183协议是以$GPGSV格式作为开头,固定输出格式,因此不论是否有数据输出,都会有逗号存在,而且有效数据都是以“*”结尾,所以,我们利用NMEA-0183协议的数据格式,采用数逗号的方法,来解析收到的GPS数据。本代码实现了GPGGA解析、GPGSA解析、GPGSV解析、GPRMC解析和GPVTG解析。

5 结束语

基于STM32的北斗/GPS定位系统的设计,能实现基本的定位功能,也能让我们熟练的掌握GPS模块和OLED模块的原理和使用方法,同时增强对STM32单片机的理解和使用能力。这项设计贴近我们的生活,同时有很强的延展性,而且具有功耗小、实用性强、可开发性强等优点。

猜你喜欢

原理图数据处理解析
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
基于低频功率数据处理的负荷分解方法
无人机测绘数据处理关键技术及运用
电路原理图自动布图系统的设计与实现
基于Protel DXP 2004层次原理图的设计
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
睡梦解析仪
电子电路识图方法的探究
电竞初解析