基于北斗导航的车辆信息管理系统设计与实现

2023-05-22 11:46苏健渊谢锋
时代汽车 2023年9期

苏健渊 谢锋

摘 要:随着现今计算机技术的快速发展,数字信息已遍布生活的各个角落,轨迹信息在人们生活的重要程度也逐渐提升,车辆轨迹管理也日渐重要。在车辆的行驶过程中,车辆将不断产生位置、速度、车辆状态等信息,如何将数据进行有效地收集汇总,提高数据的可用性,增加数据的复用性,实现车辆信息管理的数字化、网络化、人工智能化显得尤为重要。本文基于北斗导航系统,通过设计基于北斗导航的车辆信息管理的硬件平台,将车辆信息数据实时汇总到服务器,利用软件对信息数据进行再加工,实现车辆信息数据的可视化,显示车辆的轨迹状态、运行日志,提高车辆的监控效率,保障车辆的安全管理,对进一步改善车辆管理具有十分重要的参考意义。

关键词:北斗导航 车辆信息 微处理器 STM32

1 引言

在现今的大部分关于管理车辆信息的系统,都是利用GPS(全球定位系统)[1]和蜂窝网络[2]获取车辆的数据信息,基本原理是车辆上的终端设备通过接收器接收到卫星的信号,终端设备通过对卫星信号解析,得到当前车辆的卫星数据,然后利用蜂窝网络将数据传输到网络,建立和服务器的信号链路,服务器提供可视化的管理窗口,方便快捷查看车辆信息。但是这样的系统是基于GPS,存在可能会泄露信息的风险,难以保证车辆数据的安全。北斗卫星导航系统是一个新兴的系统,且为我国自行研制,相比较GPS而言拥有更好的政策优势,部署上与GPS相同,可以从GPS平滑的过度到北斗系统。并且北斗导航系统拥有自己特有的优势,不仅仅提供经纬度的信息,还能够提供时间授时以及短信服务,丰富了车辆导航的应用领域[3]。

2 整体介绍

2.1 整体结构

基于北斗导航的车辆信息管理系统主要分为3个模块:

车辆终端模块:主要设计了卫星导航数据接收的硬件模块,负责接收车辆的北斗定位信息与后台服务器进行信息交流。该终端可以安装小轿车、公交车、货车等不同类型的车辆上,主要实现车辆定位导航、信息收发等职责。

数据服务器模块:接收北斗卫星导航仪通过网络发送过来的信息,并记录在数据仓库中,随时为数据查询提供服务。

监控系统模块:通过软件,对车辆进行各种管理,其中主要包括:车辆跟踪、轨迹回放、线路规划、车辆报警、信息交流等。

系统结构图如图1所示,整个系统在信息流转的过程中,车辆在行驶过程中不断产生数据,北斗卫星系统与车辆上的北斗卫星系统接收模块进行数据交换,不断传输位置信息,车辆上的车载终端将信息汇总后,形成数据包,进而通过2G/3G/4G不同的蜂窝网络传输至远程的服务器中,实现数据的远程交互;远程数据集服务器在收到信息后,会及时解析数据字段,将剥离数据的有效信息,按照数据库的字段进行分类存储,保证数据的可用性;监控系统会从数据服务器中根据需要调取所需数据。

从图1中可以看出,在整个系统中,利用北斗卫星的定位技术,获取准确可用的地理数据,同时采集车辆的传感数据,包括温度、湿度、油压、油量等等,这些数据作为车载终端的输入RS232信号,以模拟信号和数字信号的形式出现,而车辆的路线、时间、速度和位置数据则是输出信号,也是以RS232的串口數据传输给2G/3G/4G模块。数据从蜂窝网络到服务的线路,采用HTTP、TCP和UDP的方式实现,保障了数据传输的可靠传输。

2.2 关键技术

2.2.1 信息接收与数据处理技术

车载终端设备一般由北斗接收机、数据处理软件和相应的用户设备等组成。它的主要作用是接收北斗卫星发出的信号并解析出导航电文,通过计算得出自身的位置。北斗卫星导航电文中包含了卫星的星历、历书、工作状态、时间系统、星钟运行状态、轨道摄动改正、大气折射改正和由C/A马捕获P码等导航信息的数据码。从这些信息中,我们可以获得卫星在坐标系中的位置、时钟、以及时钟在任意时刻的修正值等信息,将卫星的时钟与接收机本身的时钟进行比较就可以获得信号从卫星到达接收机的时间,进而可以计算出卫星和接收机之间的大致距离——伪距[4]。

2.2.2 监控软件关键技术

监控中心软件使用B/S架构,减少部署的成本,同时支持跨平台的异地访问。使用PHP语言实现与数据中心通信,通过Ajax技术实现异步接口访问,比如进行单车跟踪、系统报警、信息发送等功能。

2.2.3 地图操作关键技术

目前系统采用百度地图,使用百度地图api进行编程,并加入自定义的地图元素,以适应本系统的特有操作,比如路径绘制、图层显示、路径绘制。

3 系统设计

3.1 嵌入式系统设计

本系统是基于低功耗的STM32的微处理器进行设计,运行在嵌入式系统中。而嵌入式系统在众多场合的应用也非常广泛[5]。嵌入式系统的软件和硬件往往是紧密结合的,因此随着应用领域和硬件设备的千差万别,嵌入式系统的软件也随着变化多样,因此很难对嵌入式系统进行一个十分明确的分类。嵌入式系统的软件可以分为如图2所示的中间层、系统软件层、应用软件层。

中间层是是嵌入式系统硬件和软件之间的桥梁,链接了软件运行和硬件基础,对外提供一系列接口,比如中断运行、定时器接口、设备初始化、地址映射等等,尤其是适配硬件基础的驱动程序。

系统软件层主要实现对资源的访问和管理,完成任务调度,支持应用软件的运行及开发。往往通过移植较为成熟的操作系统来缩短开发周期和确保稳定性。

应用软件层位于嵌入式系统的最顶层,决定了嵌入式系统的具体功能,直接与用户进行交互。应用软件设计的好坏,很大程度决定了嵌入式整个系统的可靠性,会影响到系统中资源的分配使用,为此,应用软件具有十分重要的地位。

3.2 微处理器设计

本系统结合嵌入式系统的特征,选用STM32F103ZET6的芯片作为微处理器,该芯片的功耗较低,内核采用ARM32位的CortexTM-M3CPU,CortexM3是ARM公司推出的基于ARMv7架构的新一代微处理器,该处理器的指令和数据都有自己独自的一条总线,存储器中的指令和数据可以同时被读取,因此对多个操作并行执行,能够提高应用程序的执行速度[6]。其速度比目前广泛使用的ARM7架构快了三分之一,功耗却没有提高,而是降了四分之三,体积也随之减小,更能方便集成到更小的芯片电路中,能够实现更小尺寸的产品设计。

3.3 北斗接收模块设计

本系统采用联星CC50-BG型号北斗卫星导航模块,能够实时接收北斗卫星和GPS导航卫星信号,能够实现卫星数据的接收、授时服务以及串口输出等功能,能够广泛应用于交通、导航、人员追踪等场合。

在设计本模块进行获取数据的时候,接收天线的安装位置要保证天线的视野足够大;不要直接用手拿取CC50- -BG模块,以防静电损坏芯片;尽量避免其他电磁波对天线和CC50-BG模块的干扰;如果用户需要使用模块的热启动功能,需保证模块外部供电不能断开。根据上述硬件设计要求。

硬件确定好后,还需要确立通信协议。由于采用GPRS的方式进行通信,因此通信协议应该使得每一帧尽量简洁以减少数据流量。但是,对于嵌入式系统而言,我们还需要考虑另一个因素,那就是嵌入式设备的处理能力的问题,通信协议应该使嵌入式模块在打包和拆解包的过程中不需要复杂的计算和处理过程。

协议帧分为三部分:帧头、正文,结束标志。对于不同类型的信息,协议帧的正文部分不同,甚至可能省略,但是帧头和结束标志是统一的。帧头和结束标志对于所有通信帧都是一致的,帧头包括帧序号、目的站号、源站号、操作码、操作状态。

3.4 电源模块设计

GPRS芯片的VBAT电源管脚电压范围3.4~4.5V,芯片文档推荐的电压是4.0V,而供电电压满足芯片的最大工作电流,否则在发射或者模块初始化阶段可能造成电压急剧下降而导致复位甚至死机。所以GPRS芯片的供电电源一定要能够提供2A以上的电流。设计时应该在电源管脚上放置两个电容,一个1~10uF的瓷片电容,然后再并行连接一个100uF的钽电容, PCB布线的时候让这两个电容靠近电源管脚,减少纹波影响。

由于GPRS芯片工作时电流变化如此之大,如果和STM32和北斗卫星模块共用一个电源则可能造成过大的电压起伏,而北斗卫星模块的文档中也提到定位的精度和电源的波动也会有一定的影响,再加上GPRS芯片典型电压值为4.0V,而STM32的最大供电电压仅为3.6V。因此,将GPRS芯片与其他模块分割开来单独供电。

3.5 软件设计

3.5.1 状态转换图

本文根据系统需要,实现车辆信息数据的数字化管理,根据要完成的功能完成图3的软件状态转换图。

图3中包括了多种不同情形的状态,主要针对系统在运行过程中的状态切换,根据收到指令和数据的不同,进入到不同的切换状态,保证程序数据的稳定可靠。根据状态图可以方便编写运行程序,首先当系统开机后,系统会初始化外围硬件,包括串口的波特率初始化、GPIO的输出输入方向配置、运行频率等;一旦系统收到北斗卫星的信号数据,将数据解析整合到缓冲区后,通过TCP的方式传输给下端模块;如果是接收到指令,则根据指令的不同类型执行不同的子任务,然后诊断传输是否出现问题,如果一切正常的话,继续往下执行。

3.5.2 中断处理

STM32的NVIC支持通过抢占优先级和子优先级来区分中断。高抢占优先级的中断可以打断低抢占优先级的中断,构成嵌套中断。而相同抢占优先级的中断不会彼此打断,当同时有多个相同抢占优先级的中断时,优先响应子优先级高的中断。因此可以利用高抢占优先级可以打断低抢占优先级中断的这一特性来保证软件的实时性。让对实时性要求高的任务打断对实时性要求低的任务。

在本文中,根据北斗数据传输的过程涉及到的业务情况,在程序中设计了本系统的中断处理机制,具体过程如图所示:

(1)确定各业务的实时等级,安排在不同的优先级,分配不同的中断级别;

(2)使能外设的相应中断,配置寄存器的中断使能位,同时开启GPIO端口的时钟;

(3)初始化NVIC_InitTypeDef结构体,调用NVIC_IRQChannelPreemptionPriority()函数设置抢占优先级和响应优先级,配置中断优先级分组,调用NVIC_IRQChannelCmd()函数使能中断请求,调用NVIC_IRQChannel()函数设置不同的中断源;

(4)在stm32f0xx_it.c中编写中断服务函数,根据给出的中断向量表,定制对应业务的中断服务函数。

4 结语

本文设计的基于北斗导航的车辆信息管理系统,在微控制器STM32构成的嵌入式系统下,通过与北斗卫星模块进行通信,获取实时的卫星数据,掌握车辆的轨迹数据,并将数据通过GPRS的蜂窝网络,远程传输到后台的数据服务器,服务器对数据进行解析处理,最终实现对车辆信息的数字化管理,提高车辆信息管理的安全性与便捷性。

参考文献:

[1]朱立妙,沈旭东,何乐华.基于北斗/GPS双模定位的远程车辆防盗监控系统设计[J].机電一体化,2022,28(06):35-41.

[2]钮思玥. 基于GPS与GPRS的车辆防盗系统的设计与实现[D].内蒙古大学,2018.

[3]梁楠,吴传强.北斗智慧交通道路运输车辆动态监管服务平台 打通智慧交通脉络[J].中国自动识别技术,2022(02):45-50.

[4]马凯,鲍颢之,哈欣怡,王艺瑾,封晓同.基于STM32的城市消防车监测及智能调度系统[J].微处理机,2022,43(06):48-52.

[5]邓军,王泽,张玺,习特铭,周佳葆.基于STM32的北斗定时定位实验系统设计[J].实验室科学,2022,25(06):82-85.

[6]苏日古格,于新海,国芳,王睿聪.基于STM32单片机的北斗/GPS双模定位系统设计及测试[J].信息与电脑(理论版),2021,33(01):123-125.