黄 勇,王亚刚
(上海理工大学 光电信息与计算机工程学院,上海 200093)
基于STM32的车载GPS/GPRS定位系统设计
黄 勇,王亚刚
(上海理工大学 光电信息与计算机工程学院,上海 200093)
针对汽车的安全管理提出了一种基于stm32控制器的定位系统,实现了对于车辆位置的远程监控。该系统通过由车载终端和远程移动终端组成。在车载端系统设备通过GPS模块接受卫星信号,主控制器提取车辆的经纬度、时间、速度等信息,经过GPRS网络发送到手机客户端,手机客户端加载运用GoogleMapsAPI将这些信息加载到Google地图中并显示。设备中系统运用uCOS-II操作系统以提高系统的鲁棒性,实验结果表明,系统实时可靠性高,通信稳定有效,能满足用户对于车辆位置安全监视需求。
车载定位;汽车安全;GoogleMapsAPI;uCOS-II
随着汽车使用的日益增长,对于汽车的监管应用越来越频繁,车载GPS能有效对汽车的位置进行定位,将定位信息发送给车主,即使在车辆被盗的情况下,GPS系统中的通信模块也能把车辆位置信息发送给车主,方便车主找回车辆,本定位系统可应用的汽车的相关业务,如车贷、汽车抵押、易丢失车辆追踪、融资租赁等,为公司或个人提供汽车位置信息服务,可防止财产损失[1-3]。本系统是用ST公司stm32f103vet6为主控制器进行的设计,通过GPS模块捕获导航电文,然后将捕获的电文处理后发送给MCU,再经过MCU将GPS定位信息通过GPRS网络发送到手机andriod客户端,客户端利用Google Maps API加载到Google map,然后客户端打开应用程序可查看时间、速度、经纬度等位置信息,用户可对车辆进行实时的监控。
本系统主要由两部分组成车载终端和显示终端,在车载终端通过GPS模块接受卫星传输的星历数据,将接受到的星历数据通过串口传输到MCU中解码得到汽车所在的经纬度、时间、速度等信息,再由GPRS模块将含有汽车地理位置和时间发送到显示终端,其中显示终端是由Google Maps API编写的地图查询手机软件实现。系统框图如图1所示。
图1 系统框图
2.1 主控制器
本系统中选择的是意法半导体的stm32f103vet6为主控芯片,该芯片含高性能的ARM Cortex-M3 32位RISC内核,工作频率为72 MHz,内部有512 K字节闪存,4个通用16位定时器,80个通用I/O端,5个通用同步/异步串行收发器,采用较低的电压供电2.0~3.6 V,可工作的温度为-40~85℃工业级温度范围,本系统对于功耗要求比较敏感,stm32为低功耗芯片含有电源管理单元,能有效减少系统功耗[4]。
2.2 GPS模块
本系统中所使用的GPS芯片是美国Ublox公司的NEO-6M为GPS定位信号接收芯片,GPS模块与MCU串口通信波特率38 400,8位数据位1位停止位无奇偶校验位。GPS模块的天线频率为1 575.42 MHz的高频信号,在PCB设计时要注意与数字部分隔离,在GPS芯片底部禁止布线,另外PCB板的天线部分还要与天线电缆阻抗相匹配为50 Ω,图2为GPS部分电路图,图中MAX2659芯片为低噪声放大器(Low Noise Amplifier,LNA)芯片,LNA电路可增强射频信号抑制干扰信号来提高天线的灵敏度,模块有两个天线一个为内置陶瓷天线,另外一个通过IPX口外接有源天线以增强GPS信号接收能力[5-6]。
图2 GPS模块部分电路图
2.3 GPRS模块
系统中所用到的GPRS模块芯片为上海移远公司GC65,该模块支持四频段GSM/GPRS无线模块,分别为GSM850 MHz 、GSM900 MHz、DCS180 MHz和PCS1900 MHz,频段可通过AT指令设置,模块供电范围为3.3~4.6 V, 在GSM/GPRS模块的设计中,电源的设计至关重要,GSM发射时每隔4.615 ms有一个577 us的突发脉冲,这使得电源必须提高足够的高的峰值电流,来保证模块电压在3.3~4.6 V,且电流必须>2 A能启动模块。本设计中用LDO(Low Dropout Reulator,低压差线性稳压器)作为供电电源,LDO芯片为MIC29302WU,其为模块提供4.16 V的电压,负载电流峰值3 A能为模块提供稳定的电源。GPRS模块电路图如图3所示[7-8]。
图3 GPRS模块电路图
3.1 GPS信号解析
GPS模块工作的流程图4所示,GPS模块在接收到卫星数据后,主控制器要对GPS信息进行提取,提取过程主要经过3步:(1)stm32与GPS模块串口进行连接通信,stm32通过串口读取GPS模块中的数据;(2)提取其中帧头为GPRMC的数据;(3)从上面的数据中再提取所需的定位信息,主要为时间、经纬度、时间、航向等信息。其中第3步是根据GPS数据帧按照逗号对信息段分割的特点,通过数据中‘,’的位置对GPRMC的数据段提取出特定的定位信息。该部分的程序如图所示,其中有两个关键的函数,P1=(u8*)strstr((const char *)buf,GPRMC),P1得到的是GPS缓冲地址为包含以GPRMC字符开始的首地址,另一个函数定义u8 NEMA_Comma_Pos(u8 *buf,u8 cx)意义为从buf里面得到第cx个逗号所在的位置,返回值为0XFF时代表不存在第cx个逗号,返回值0-0XFE代表逗号所在的位置偏移,该部分的定义为
u8 NMEA_Comma_Pos(u8 *buf,u8 cx)
{
u8 *p=buf;
while(cx)
{
if(*buf==‘*’||*buf<’’||*buf>‘z’)return
0XFF;∥ 遇到非法字符返回0XFF
if(*buf==‘,’)cx--;
buf++;
}
return buf-p;
}
图4 GPRS数据解析流程图
3.2 GPRS网络连接
在GC65中内嵌了TCP/IP协议栈,通过发送AT指令就可建立TCP/IP连接来进行数据的收发。当STM32处理器控制PWRKEY脚为低电平时,通过检测NETNIGHT脚为高电平指示开机成功,GC65开机后释放PWRKEY脚的电平,开机过程结束,GPRS数据的发送由设置AT指令实现,设置过程如下:(1)向GC65发送“AT+IPR=115 200”,设置模块波特率115 200;(2)使用命令“AT+CGCLASS=B”,模块设置为B类GPRS移动台,在同一时间只能运行一种业务;(3)发送“AT+CGACT=1,1”激活GPRS网络功能;(4)发送“AT+CGREG=1”启用网络注册非请求结果码,用“AT+CGREG?”查询网络是否成功,当模块返回“+CGREG:1,1”表示已注册本地网络。通过以上的设置后GPRS网络连接完毕,然后可以用GPRS网络发送接收信息[4]。
3.3 uCOS -II操作系统移植
uCOS-II是由Jeans J.Labrosses编写的基于优先级抢占式实时多任务的操作系统,包含全部功能的核心代码仅8.3 kB,uCOS -II用户在裁剪后实际的代码最少可至2.7 kB,uCOS-II的源文件结构如图5所示共分为3个部分:实时操作系统内核、与处理器相关的代码部分,与应用程序相关的代码部分[9]。
图5 uCOS-II源文件结构
在uCOS-II操作系统中,每个任务都有一个任务控制块,且每个任务都独自分配堆栈区域,各个任务之间互不干扰,为了使系统良好的运行,将系统划分几个并行存在的任务,根据任务的重要程度由高到低:主任务、GPS数据接收任务、GPS数据解析任务、GPRS数据传输任务、SMS短信发送任务。系统运行的流程如图6所示,车载GPS装置启动,先初始化STM32处理器及其外设,然后将GPS和GPRS模块进行初始化,再将uCOS-II初始化,进行完初始化工作后设置中端服务子程序,并打开中断在任务调度之前要建立任务间的队列或邮箱,然后创建任务分配任务的优先级,此时所有任务设置为就绪状态,进行任务调度后程序从高优先级的任务开始执行,系统开始工作[10]。
图6 移植uCOS-II后系统工作流程图
3.4 Android环境搭建
Android 是一款由Google公司开发的应用于移动平台操作系统,对比其他的操作系统Android系统的主要优势在于其为开发人员提供了统一的应用程序方法,只要设备使用的是Android系统,开发出的应用程序便可在不同的设备上。开发Android应用之前要搭建Android开发环境,先安装使用Java SE开发工具包JDK,安装并配置Android SDK(Software Development Kit)开发工具包,另外还需一个Android应用程序集成开发环境IDE,本设计中使用的是Eclipse,在Eclipse中安装ADT插件以支持Android应用程序得创建和调试[11]。
3.5 Andriod端APP设计
将包含Google API的Target作为项目加载到项目中,编写主布局文件main.xml,调用getOverlays()方法获取Overlay链表,并将MyLocationOverlay对象添加到链表中,并插入两个Button用于地图放大与缩小,在文件AndriodManifest.xml中声明INTERNET和ACCESS_FINE_LOCATION权限,通过使用MapActivity和MapView控件把地图嵌入到应用程序中,其中使用到的方法getOverlays()、enableMyLocation、getController()、onCheckedChanged(),定义方法GetNewLocation()显示当前的地图信息,通过Google MapView和Geopoint实现地图经纬度应用,将从接受到的GPRS模块中含有设备位置信息转换到地图上并显示,现将坐标转换为GeoPoint对象,再利用MapController的animateTo()方法将地图的中心点移到GeoPoint坐标上,经过上面的流程便能通过手机对GPS设备进行方便快捷的监视[12-14]。
将本系统应用到汽车上,对汽车进行定位GPS设备的信号延时及成功率的测试和定位精确度测试,实验的结果如表1和表2所示。在表1中为300次的测试通信结果,成功率为97%且延时时间在4 s以内的为92%,实验结果表明设备通信延时低而且成功率高,能满足一般的实时数据查询要求[15]。在表2中的数据是汽车在30 min内每10 min的位置信息,在卫星信号良好时测量误差<30 m,对于汽车位置的确定比较准确,系统具有较好的定位精度。
根据对于汽车位置监管的要求,提出了基于stm32的嵌入式GPS定位系统,并将系统移植到uCOS-II实时操作系统,使系统安全稳定,而且定位精准有效,用户还可使用客户端APP查询使用设备的汽车位置。另外该系统还可对系统静态单点定位滤波,提高系统的精度,此部分作为进一步的的研究对系统优化。
表1 设备信号延时及成功率测试数据
表2 设备定位精确度测试数据
[1] 徐广君,王海.嵌入式GPS车载系统定位数据压缩算法的实现[J].信息技术,2006(4):43-46.
[2] 龙志.嵌入式GPS导航系统的设计与研究[D].广州:华南理工大学,2012.
[3] 于铁军.基于ARM的GPS定位系统设计与实现[D].太原:中北大学,2014.
[4] 常霞,马建伟.基于STM32的列车空气动力学数据采集系统[J].仪表技术与传感器,2011(4):45-48.
[5] 张雪峰,罗洪霞.基于ARM920T的嵌入式GPS接口设计与实现[J].计算机工程与科学,2008,30(3):126-129.
[6] 斯亮.嵌入式GPS/GIS导航系统的研究与设计[D].哈尔滨:哈尔滨工业大学,2009.
[7] 朱立彬.基于GPRS智能家居远程网络监控系统的研究[D].太原:中北大学,2013.
[8] 胡啸.基于GPRS网络的油罐车运营监管系统设计[D].厦门:厦门大学,2008.
[9] 田明,徐平,黄国辉,等.基于STM32和μC/OS-Ⅱ的USB数据采集系统[J].机电工程,2012(4):482-485.
[10] 任哲,房红征,曹靖.嵌入式实时操作系统μCOS-Ⅱ原理及应用[M].3版.北京:北京航空航天大学出版社,2014.
[11] 张仕成.基于Google Android平台的应用程序开发与研究[J].电脑知识与技术,2009(10):7959-7962.
[12] 唐桂文,谭衍涛.基于AJAX和Google Maps API的WebGIS开发研究[J].测绘与空间地理信息,2013,36(8):8-11.
[13] 周鹏,陈红顺,尹菲.GoogleMapsAPI技术在移动终端上的GIS应用[J]. 测绘通报,2012(3):95-96,108.
[14] 马跃,何小卫,欧阳铁磊.基于Google Maps API的车辆监控管理系统设计与实现[J].计算机与现代化,2010(2):191-196.
[15] 陈维维.嵌入式无线定位追踪系统的技术研究[D].南京:南京理工大学,2013.
DesignofVehicleGPS/GPRSPositioningSystemBasedonSTM32
HUANG Yong,WANG Yagang
(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 20093, China)
A Positioning system based on STM32 controller is proposed for the safety management of vehicles,and realizes remote monitoring of vehicle position.The system is composed of a vehicle terminal and a remote mobile terminal.By GPS module satellite signals are received in the vehicle terminal system equipment.main controller extract the vehicle’s latitude and longitude,time,speed and other information which is sended to mobile phone client by GPRS network then.The information is loaded to display in google maps through applying Google Maps API in mobile client.The system uses the uCOS-II operating system to improve the robustness of the system.The experimental results show that the system has high real-time reliability,stable and effective communication,and can meet the user’s requirements for safety monitoring of vehicle position.
vehicle positioning; automobile safety; Google Maps API; uCOS-II
2016- 05- 03
黄勇(1992-),男,硕士研究生。研究方向:嵌入式系统等。王亚刚(1967),男,博士,教授,硕士生导师。研究方向:复杂多变量辨识等。
10.16180/j.cnki.issn1007-7820.2017.04.008
P228.4;TP
A
1007-7820(2017)04-032-04