APP下载

嵌入式北斗定位便携终端的设计与实现

2017-07-12张海林张卿杰张逸飞王健羽

电子设计工程 2017年12期
关键词:编译器导航系统串口

张海林,张卿杰,张逸飞,王健羽

(南京农业大学 工学院,江苏 南京 210031)

嵌入式北斗定位便携终端的设计与实现

张海林,张卿杰,张逸飞,王健羽

(南京农业大学 工学院,江苏 南京 210031)

北斗卫星导航系统是我国自主研制,致力于向全球用户提供高质量的定位、导航和授时服务的卫星导航系统。相对于GPS双频信号,北斗使用的三频信号可以更好的消除高阶电离层延迟影响,提高了定位的可靠性和抗干扰能力。另外,北斗导航系统独创了短报文通信服务功能。本文研究了一种基于arm与linux的北斗定位便携终端,此终端以i.MX28应用处理器为核心,采用5.7寸的电阻式触摸屏作人机交互设备,系统采用超大容量的铿离子聚合物电池供电,使用UM220-III N双系统高性能GNSS模块来同时获取BD2 B1、GPS L1两个频点的定位数据。在linux虚拟机上通过Qt编程,使用SerialPort类串口通信获取定位数据。通过matlab分析终端获取的北斗与GPS定位数据,可知在本地区北斗的定位精度与GPS相当。

北斗卫星导航系统;便携终端;linux;Qt编程;matlab

目前GPS等主流的卫星定位系统均是为军事应用而发展起来的,完全由军方控制,一旦爆发战争,卫星的拥有国会控制卫星系统或从卫星中获取其他国家的机密信息,使得其他国家处于完全被动的地位。另外,现在人们对于导航、定位的依赖性越来越大,由卫星导航系统衍生出的产品具有很大的市场和很好的发展前景。为了保证国家安全与人民生活的方便,中国自主研制了卫星导航系统——中国北斗卫星导航系统。

Linux是一套免费使用和自由传播的开源操作系统,是一个基于POSIX和UNIX的多任务、支持多线程和多CPU的操作系统。Linux的设计思想是以网络为核心,是一个性能稳定的,技术成熟的多用户网络操作系统。

1 北斗数据的接收与解析

1.1 北斗卫星定位系统的工作原理

目前正在建设的“北斗二代”卫星定位系统保留了之前北斗一代的短报文功能。其基本原理是利用高速运动卫星的瞬间位置作为起算数据,采用的方法是空间距离后方交会,从而确定待测点的位置。如图1北斗二代工作原理,假设t时刻在地面待测点上安置北斗卫星定位系统接收机,可以测得北斗卫星定位系统信号到达接收机的时间△t,再利用接收机所接收到的卫星星历等其他数据可以确定以下方程式[1-2]:上述4个方程式中待测点坐标x、y、z和vt0为未知参数,其中 di=c△ti(i=1、2、3、4)。 di(i=1、2、3、4)分别为卫星1至卫星4到接收机之间的距离。△ti(i=1、2、3、4) 分别为卫星 1 至卫星 4 的信号到接收机所经历的时间,c为光速。

图1 北斗二代工作原理

方程式中各参数意义如下:x、y、z为待测点坐标的空间直角坐标。 xi、yi、zi(i=1、2、3、4) 分别为卫星 1至卫星4在t时刻的空间直角坐标,可由卫星导航电文求得。 vti(i=1、2、3、4) 分别为卫星 1 至卫星 4 的卫星钟的钟差,由卫星星历提供。Vt0为接收机的钟差。由以上4个方程即可解算出待测点的坐标x、y、z和接收机的钟差vto。

1.2 北斗模块数据的读取

本文使用UM220-ⅢN北斗模块,在此模块中,串口1为主要串口,支持数据的传输、固件升级等功能,输入输出信号类型为LVTTL电平。默认波特率为9 600 bps,最高可设置为115 200 bps。打开PC上的串口通信软件,将PC机连接串口1读取相应的数据。串口2可作为备用串口,只可以进行数据的传输,而不能进行固件升级等。

从图中数据可以看出此地 (南京农业大学浦口校区)经纬度为:东经:118°41',北纬:32°08'。

图2 北斗模块显示原始数据

2 便携终端设计

2.1 便携终端系统拓扑结构

此便携终端主要包括:主控模块,UM220-III N北斗模块,RS232模块,人机交互模块,电源模块。如图3所示。

图3 便携终端拓扑结构

北斗定位便携式终端系统的硬件设计根据此终端的具体功能需求,在现有北斗模块的基础上,合理设计各部分电路,降低功耗。充分使用集成电路的小型化,使得终端系统集功耗低,集成度高,软件兼容性好为一体,整个硬件设计结构简单,性能可靠。

2.2 便携终端硬件系统

2.2.1 主控模块设计

本终端系统采用i.MX283A芯片作为核心处理器,处理器主频最高达454 MHz,在模块上集成2路UART、2路 USB Host接口、1路 USB Device接口、NAND FLASH控制器、同步串口、异步串口等。使用USB Device接口下载linux内核,利用linux的开源特性,方便系统功能的实现及扩展。使用USB Host接口挂载U盘,方便文件和数据的传输。

主控模块通过将这些部件的高度集合,具有成本低廉,功耗小、集成度高、软件兼容性好等优势。在模块上设置有RESET键,方便在模块运行出现异常时及时停止并重新启动设备。同时run,error,NAND,power4个指示灯分别显示主控模块的工作状态和连接状况。

2.2.2 人机交互硬件设计

通过控制模块上的TFT接口将控制模块与AP_TFT7.0 4线电阻式触摸屏相连,触摸屏分辨率达800×480,灵敏度较高,完全可以满足用户控制和操作终端上软件的要求。

2.2.3 电源模块设计

通过miniUSB数据线将铿离子聚合物电池与主控模块的5 V供电接口相连。铿离子聚合物电池提供的电压稳定,工作时无噪声,携带方便,能耗低,可循环充电使用。

2.3 便携终端嵌入式软件系统

linux是目前全球最受欢迎的开源操作系统。在使用linux之前,需要一个linux的环境,在本文中我们采用在windows下安装虚拟机的方式,使用linux系统。

2.3.1 安装交叉编译器

交叉编译器能够使在一种计算机环境中运行的程序,编译出在另外一种环境下运行的代码。在本文中,需要进行ARM模块linux操作系统的开发,因此选用arm-linux-gcc交叉编译器[3]。在VMware Player软件下,安装Ubuntu虚拟机。下载arm-none-linuxgnueabi.tar.bz2,并将其解压到"/home/ctools/"下。解压命令如下:tar xjvf arm-none-linux-gnueabi.tar.bz2-C/home/ctools/,执行命令即可完成安装。

采用修改全局配置文件的方法设置全局变量。在终端输入“sudo vi/etc/profile”命令打开profile文件,在末尾添加:export PATH=$PATH:/home/ctools/arm-2011.03/bin/,输入“./etc/profile”执行 profile 文件。此时已完成交叉编译器的安装。在终端中输入arm-none-linux-gnueabi-gcc即可进行测试,当输出为no input files表示此交叉编译器可以进行正工作。

当计算机上使用的系统为64位时,由于此交叉编译器是以32位发布的,此时会出现错误。可以安装32位的兼容库解决错误。在终端输入如下命令:sudo apt-get install ia32-libs。

2.3.2 Qt编程

Qt是跨平台C++图形用户界面应用程序开发框架,使用Qt[4]只需要一次性开发应用程序,无需重新编写源代码,便可以跨不同的嵌入式操作系统运行这些程序。在虚拟机中编写的串口通信程序,使用serialport类编程,进行串口通信时,需要通过设置SerialPort类的属性来设置相应参数,主要参数包括:通讯端口号及波特率、数据位、停止位和校验位。编程结束后在Qt中编译成功即可显示读取串口数据的界面。

2.3.3 交叉编译

将程序移植到arm模块前,执行命令:

将生成的文件夹通过U盘,转至arm模块,在电脑上通过串口软件(Tera Term)进入相应的目录下,执行:./文件名-qws即可实现其功能。

2.3.4 便携式终端的实现

将编译成功的串口通信qt程序移植到开发板上,添加开机自动执行命令,并且禁止开机启动图形界面:系统的/etc/rc.d/init.d/start_userapp文件为开机时自动执行的脚本,可在脚本then后添加开机需要打开的串口通信界面,添加命令如下:

cd/111/serialport ./serialport-qws

并且在/usr/share/zylauncher/start_zylauncher>/dev/null&前添加“#”,禁止开机启动图形界面。此时开机之后显示为串口通信界面。使用串口线将arm和北斗模块相连,设置相应的端口、波特率就可以读取数据。如图4所示。

图4 便携终端内部结构

3 便携终端的精度分析

通过便携式终端获取南京部分地点的经纬度数据如表1所示。

利用matlab,将上述数据绘制成点状图,其中B表是北斗数据,G表示GPS数据,如图5所示。

表1 GPS与北斗获取经纬度数据

图5 北斗与GPS数据对比

假设地球是一个球体,则其半径为R=6 378.140 km。如果以0度经线为基准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值)。设第一点A的经纬度为(LonA,LatA),第二点 B 的经纬度为(LonB,LatB),以 0度经线为基准,东经取经度的正值(Longitude),西经取经度负值 (-Longitude), 北纬取 90-纬度值 (90-Latitude),南纬取 90+纬度值(90+Latitude),则经过上述处理过后的两点被计为 (MLonA,MLatA)和(MLonB,MLatB)。那么根据三角推导,可以得到计算两点距离的如下公式[4-8]:

从数据上观察,经度和纬度两者之间大约相差0.01°左右。通过matlab计算各个点之间的距离,最后计算平均值得到两者相差大约在1500米,两点最近相距大约在760米,还是较为准确的,最后对比数据可知:

1)通过北斗数据和GPS数据的对比,在本地区北斗的定位精度已与GPS定位精度相当。从北斗由局部到全球的建设目标[9-10]可以得出,北斗现在重点服务区是中国地区及东南亚周边地区。另外,根据北斗卫星的定位工作原理,其精度还有较大的提高空间。

2)通过室内数据与室外数据的对比,北斗卫星对于室内的位置信息的定位功能较弱,只能获取少数卫星数据,定位精度无法达到室外定位的水平,但是GPS[11-15]对室内物体的位置信息也可以较为准确的定位。通过PC机图像定位时所用到的卫星数目也可以发现,GPS定位室内物体时,卫星数量明显多于北斗卫星定位时的卫星数量。

4 结 论

文中研究了基于北斗在linux系统arm上显示位置信息的便携终端。在研究过程中,充分查阅了北斗卫星导航系统的相关资料,分析了北斗卫星定位的工作原理,并将其与GPS对比,得出北斗导航系统的优势所在。研究了linux操作系统的使用,并自行配置了linux虚拟机,安装交叉编译器与Qt SDK,实现了在虚拟机中编写Qt程序,并将程序交叉编译转至arm模块中使用。使用了i.mx28为核心的arm模块和用UM220-III N北斗模块,显示及读取数据,保证了终端系统性能稳定,数据准确。终端系统使用了我国自行研制的北斗卫星导航系统[16],保证数据的安全,产品价格低廉,更加有利于我国居民的使用,打破GPS定位产品的垄断。本终端系统实现的功能主要有:

1)终端可以实时获取所在地点的位置信息,并且将信息显示在屏幕上。

2)此终端可以识别挂载的U盘,可以将数据保存在U盘中,也可以实时读取U盘中的数据,极大的扩展了终端系统的存储性。

3)通过多位置信息的对比,此终端可以准确的获取位置信息,效果良好,性能稳定。

[1]胡睿.嵌入式GPS多功能手持终端的设计与实现[D].武汉:华中师范大学,2007.

[2]胡菲菲.基于ARM与LINUX的GPS定位终端的研究[D].北京:北方工业大学,2008.

[3]周立功.嵌入式Linux开发教程 (上册)[M].北京:北京航空航天大学出版社,2016.

[4]李乔.基于ARM的北斗/GPS接收机的研究[D].昆明:昆明理工大学,2014.

[5]施闯,赵齐乐,等.北斗卫星导航系统的精密定轨与定位研究[J].中国科学杂志,2012(6):854-861.

[6]万琪俊.基于北斗导航卫星移动定位系统研究与实现[D].广州:华南理工大学,2013.

[7]高星伟,过静珺,程鹏飞,等.基于时空系统统一的北斗与GPS融合定位[J].测绘学报,2012(5):743-748,755.

[8]肖国锐,隋立芬,刘长建,等.北斗导航定位系统单点定位中的一种定权方法[J].测绘学报,2014(9):902-907,916.

[9]耿大威.基于北斗/GPS双模卫星定位系统的车载终端设计[D].青岛:中国海洋大学,2013.

[10]郭昊.北斗-GPS双模卫星定位解算方法研究[D].北京:北京交通大学,2015.

[11]蔡昌盛,戴吾蛟,匡翠林,等.利用 UofC消电离层组合的 GPS/GLONASS精密单点定位研究[J].武汉大学学报·信息科学版, 2012,37(7):827-830.

[12]代双亮,王尔申,侯贺,等.BD2/GPS信息采集与处理系统的研究[J].电子设计工程,2013(21):4-7.

[13]Xingxing Li,Maorong Ge,Jan Dou, et al.Realtime precise point positioning regional augmentation for large GPS reference networks[J].GPS Solutions, 2014(1):61-71.

[14]Changsheng Cai,Yang Gao.Modeling and assessment of combined GPS/GLONASS precise point positioning[J].GPS Solutions,2013(2):223-236.

[15]Dennis Odijk,Peter J G.Teunissen and Baocheng Zhang.Single-Frequency Integer AmbiguityResolution Enabled GPS Precise Point Positioning[J].Journal of Surveying Engineering, 2012,138 (4):193-202.

[16]刘万龙,田国华,徐 鑫,等.一种卫星轨控发动机流量校验系统[J].火箭推进,2015(1):109.

Design and implementation of embedded Beidou Positioning portable terminal

ZHANG Hai-lin, ZHANG Qing-jie, ZHANG Yi-fei, WANG Jian-yu
(School of Engineering, Nanjing Agricultural University,Nanjing 210031,China)

Beidou satellite navigation is a system that has independently developed by China and dedicated to provide high quality positioning to customers around the world,satellite navigation system navigation and timing services.Compared with dual frequency GPS signal,the use of the Beidou tri band signal can better eliminate higher-order ionospheric delay effect and improve the positioning reliability and anti-interference ability.In addition,Beidou navigation system created a short message communication service function.In this paper,we study the one based on the arm and Linux Beidou Positioning portable terminal,which treats i.mx28 application processor as the core and treats 5.7 inches resistive touch screen as man-machine interactive equipment.The system uses large capacity lithium ion polymer battery powered,and uses UM220-III dual system high-performance GNSS module to also obtain the positioning data of GPS L1 and BD2 B1frequency points.By QT programming in the Linux virtual machine,the use of the serialport class serial communication is to obtain positioning data.By MATLAB analysis of terminal accessing to the compass and GPS location data,it can be seen that it is fair in the local district Beidou Positioning accuracy and GPS.

Beidou satellite navigation system; portable terminal; Linux; Qt programming; MATLAB

TN98

A

1674-6236(2017)12-0189-05

2016-04-29稿件编号:201604282

张海林(1994—),男,山西临汾人。研究方向:卫星定位导航技术。

猜你喜欢

编译器导航系统串口
浅谈AB PLC串口跟RFID传感器的通讯应用
说说“北斗导航系统”
基于相异编译器的安全计算机平台交叉编译环境设计
“北斗”导航系统是怎样炼成的
一种GNSS/SINS容错深组合导航系统设计
解读全球第四大导航系统
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
通用NC代码编译器的设计与实现