基于PXA270嵌入式开发板GPS定位系统的设计

2011-04-23 01:37
海峡科学 2011年2期
关键词:开发板电子地图串口

郭 堃



基于PXA270嵌入式开发板GPS定位系统的设计

郭 堃

仰恩大学计算机与信息学院

随着GPS推广应用,嵌入式GPS系统是目前的一个发展趋势。GPS模块结合PXA270嵌入式开发系统对GPS信号进行处理,对电子地图进行定位、重构并最终显示在LCD上。

GPS PXA270 嵌入式 定位

作为一种成熟的卫星导航系统,GPS具有性能好、精度高、应用广的特点,是迄今为止应用最多的导航定位系统。把GPS与嵌入式技术融合在一起,形成一个嵌入式的地理平台,是当前GPS领域的一个重要趋势。本文是在PXA270嵌入式开发板和GPS模块上开发实现。在Linux下的嵌入式开发环境中利用C++设计完成定位。嵌入式系统利用软件设计主要完成GPS定位信号的处理、电子地图的移植、地球坐标的转换、定位的显示等功能。

1 系统概述

嵌入式系统是控制、监视或者辅助装置、机器和设备运行的装置。嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。嵌入式系统有着无法比拟的友好人机界面,对于LCD及GPS模块有很好的支持。嵌入式系统主要完成提取GPS定位信号的数据、坐标转换、电子地图的显示等功能。软件设计流程如图1所示。

图1 设计流程图

2 嵌入式系统软件设计

2.1 GPS模块输出的信息的提取

GPS模块上电后,会自动搜索卫星信号,并且把计算好的数据从串口输出。所有GPS接收机最通用的数据输出格式是NMEA[1]。NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有:$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。如图2。

图2 数据块

用串口连接宿主机与开发板的串口0。宿主机进入LINUX,打开Minicom终端。设置波特率115200,8位数据,1位停止,无校验,无流控。串口的设备文件为/dev/ttyS*,其中,ttyS0为串口一,ttyS1为串口二,以此类推。在对串口通信之前,首先要对串口参数进行初始化、设置它的属性以保证通信双方的通信参数保持一致。初始化完串口,就可以进行读取操作了。由于GPS发送的数据类型都是以&GPGGA符号开头,所以检测&GPGGA符号,进而进行下一步的处理。关键代码如下:

if (c==’c’)

{GPS->latitude=get_double_number(&buf[GetComma(3,buf)]);

GPS->NS =buf[GetComma(4,buf)];

GPS->longitude=get_double_number(&buf[GetComma(5,buf)]);

GPS->EW =buf[GetComma(6,buf)];

…}

2.2 坐标转换

GPS模块输出的地理坐标是WGS-84坐标系。而国内地图一般是以54北京坐标系作高斯-克吕格平面投影。所以必须作一个坐标转换,即将GPS坐标(WGS-84坐标系)转换到电子地图坐标(54北京坐标系)。坐标转换的具体步骤:

(1)空间直角坐标转换成国家大地坐标,国家大地坐标转换成地图平面坐标。

(2)x,y的具体推算过程很复杂,在这里就不全部列举出来,只给出结果:

(3)地图平面坐标转换成屏幕坐标。例如,地图比例尺为1:k,窗口要显示的区域长、宽各为M、Nkm,窗口像素点位A*B点,则定位数据xs,ys(平面高斯坐标)在窗口上坐标分别为:

下面给出部分代码:

#include "stdlib.h"

const double a=6378137.0;

const double flattening=1/298.257223563;

const double delta=0.0000001;

typedef struct tagCRDCARTESIAN{

double x;

double y;

double z;

}CRDCARTESIAN;

typedef CRDCARTESIAN *PCRDCARTESIAN;…

2.3 电子地图重构

一般来说,电子地图包含的数据格式都不能直接用在嵌入式平台,所以需要对电子地图的数据进行提取、存储、重构[3]。目前主要使用的是桌面电子地图系统MapInfo。MapInfo是美国MapInfo公司的桌面地理信息系统软件,是一种数据可视化、信息地图化的桌面解决方案。MapInfo数据格式主要分为TAB和MIF两种格式。 MIF格式是MapInfo公司提供的一种与外界交换数据的机制。它主要用来保存空间对象的几何数据。将电子地图的数据读出后,再在嵌入式平台下,用绘图工具重新组成电子地图即可。下面给出一部分实现代码:

int n;

int x,y; …

fopen("D:\\data\\XXXX.mif","r");

while(!feof(fp2))

{ fscanf(fp2,"%s",str);

if(strcmp(str,"pline")==0)

{fscanf(fp2,"%d",&n); …

void CMapText::Draw(CDC *pDC)

{ long x1, y1;

long x2, y2;

long fontheight;

m_pDoc->ConvToXY(m_fMaxX, m_fMaxY,x2, y1);

m_pDoc->ConvToXY(m_fMinX, m_fMinY, x1, y2);

m_pDoc->LPtoDP(x1, y1);

m_pDoc->LPtoDP(x2, y2);

CRect rect(x1, y1, x2, y2);//

fontheight=rect.Width() * 2 / m_strText.GetLength();

…}

3 仿真测试

点测试,线测试,面测试如图3所示。

图3 仿真测试

4 结论

整个测距定位系统在PXA270嵌入式开发系统下完成,工程系统比较庞大,整个系统基本功能已实现,由于本系统软硬件平台有很强的升级能力,许多指标与功能可以进一步完善与提高。GPS定位数据到电子地图数据的转换,需要一系列复杂的算法。该算法有待进一步改进和简化,以提高系统运行效率和数据准确性。

[1] 田家林,陈利学,寇向辉.LINUX嵌入式操作系统在ARM上的移植[J].微计算机信息,2007,23(4):60-61.

[2] 陈未峰,李兵.ARM-Linux平台下GPS信号的采集与处理研究[J].信息化纵横,2009,(13): 41-44.

[3] 胡菲菲.SQLite在嵌入式电子地图中的应用[J].工程地质计算机应用,2008,(2): 31-36.

猜你喜欢
开发板电子地图串口
浅谈AB PLC串口跟RFID传感器的通讯应用
基于灵活编组的互联互通车载电子地图设计及动态加载
基于Mapserver的增强现实电子地图的设计与实现
浅析单片机开发板的设计与制作
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
电子地图在初中地理教学中的应用实践
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板