摘要:为了便于汽车的远程控制与管理,进行了车载信息系统终端的研究与设计。车载终端作为汽车内外信息沟通的重要平台,设计了车载终端的软件和硬件,以及CAN总线节点的软件和硬件,配合监控中心和Android手机客户端,可以实现对车辆进行监控、管理、调度和远程故障诊断等功能。最后对系统进行集成与测试,测试结果表明,车载终端工作正常,可以与CAN总线节点以及上位机之间进行通信实现相应功能。验证了车载终端软件和硬件设计方案的正确性。
随着我国汽车保有量越来越多,汽车在带给人们便利的同时也引发了一些问题,比如能源问题、环境问题和安全问题是汽车发展面临的三大问题。本论文设计了一种车载终端,该车载终端置于车内,采集和处理各种信息,配合监控中心可以实现车辆的定位、车辆控制、远程故障诊断和管理调度等功能。2008年东北大学的张超设计了基于CAN总线的车载GPS导航系统,可以实现车辆的定位。2012年浙江大学的杨瑞设计了工程车辆的车载终端,可以实现工程车辆的远程控制和数据存储等功能。当前车载终端研究主要存在的问题是车载系统功能单一,难以扩展,并且多采用GSM等比较落后的通信方式。而本文设计的车载终端功能较丰富,扩展方便,并且采用GPRS/3G通信方式,速度快捷且方便,为车载终端的设计提供了有力的参考。
1 车载终端的硬件设计
1.1车联网总体架构设计
本文主要研究的是车载终端的软件和硬件设计,车载终端采用高速嵌入式处理器+GPRS/3G模块组合的方案[2]。主控芯片为STM32F103VCT6,其架构是ARM Cortex-M3,封装类别是LQFT100,该芯片的处理能力和处理速度能够满足车载终端的使用要求,选择SIM900作为车载终端的无线网络传输模块。
在车载终端的硬件设计中,主要设计芯片供电电路、复位电路、时钟电路、程序下载电路、TFT液晶显示电路、外部设备连接电路等等。
1.2 车载终端电源管理系统设计
汽车蓄电池输出电压一般为12V,由于许多芯片的工作电压不一致,所以需要设计多个电源管理子系统以满足不同芯片的使用。首先将12V电压转变为5V电压满足CAN总线节点的工作需要,然后将5V电压分别转换为4V和3.3V,4V电压供SIM900模块工作,3.3V电压供STM32F103VCT6芯片工作。
12V到5V电压转换芯片采用的是稳压三极管LM2596-5V,5V到3.3V的电压转换芯片采取的是封装为SOT-223的AMS1117_3.3。SIM900一般工作在3.4V到4.5V电压,5V到4V的电压转换芯片选用MIC29302,增加去耦电容和旁路电容来滤除干扰[4]。
1.3 GPRS无线传输模块和GPS系统的硬件设计
本系统无线传输模块采用的是SIM900,实现车载终端和上位机监控中心之间的通信, SIM900的外围原理图如图1所示。SIM900主要通过RX、TX和GND引脚与STM32芯片进行通信。SIM900模块要有SIM卡才可以使用,SIM900芯片与SIM卡之间用一个22Ω的电阻来匹配阻抗。
要实现车辆的定位和监控,需要使用GPS全球定位系统,本系统选用的GPS模块为VK162,工作电压为3.0V-5.0V,RF_IN引脚连接天线,其匹配阻抗为50Ω,上电后TXA、RXA引脚会自动输出GPRMC格式的数据。VK162还可以使用备用电源供电,确保在没有外接电源时内部时钟能够正常工作。
1.4CAN总线节点硬件设计
CAN总线节点采用微处理器+CAN控制器+CAN收发器的设计方案,这种方案虽然外部电路设计较为复杂,但是可以根据应用情况灵活地选择控制芯片,成本比较低。本次设计采用的微处理器是高性能、低功耗STC89C52,其内部资源完全可以满足系统的需要,CAN控制器和收发器分别是SJA1000和TJA1050T,为了提高节点的抗干扰性,在SJA1000和TJA1050T之间增加了2个光电耦合器6N137进行电气隔离。STC89C52与SJA1000主要通过数据I/O口相连[6]。SJA1000的片选引脚CS与STC89C52的P2.7相连。图2为CAN总线控制器和收发器的原理图。
2车载终端的软件设计
论文设计的车载终端主要包括3个功能模块,分别是:(1)进行GPS数据的接收与解析;(2)车载终端与GPRS SIM900模块进行通信,实现上位机和车载终端之间的交互;(3)车载终端与汽车上的CAN总线节点进行数据交换,实现CAN总线协议与串口协议之间通信网关的功能。下面将详细介绍这几个功能模块的具体实现。
2.1GPS和GPRS软件设计
2.1.1GPS信息的提取
STM32有多个串口资源,使用串口1与SIM900通信,串口2与CAN总线进行数据交互。GPS输出数据遵循NMEA0183协议,其格式是数据中的经度、纬度和时间等信息都是用“,”隔开,通过判断“,”的个数就可以提取经度和纬度信息。同时还要判断GPS输出的数据是否有效,数据以“$GPRMC”开头并且第18位为“A”才代表数据有效,通过语句Compare_String(GPS_RxBuf, "$GPRMC", 0, 0, 6) == 1)&&(GPS_RxBuf[18]=='A'))来判断,在验证GPS输出信息有效之后才进行下一步的提取经纬度信息操作,否则直接过滤。
2.1.2 GPRS无线通信软件设计
SIM900可以工作在透明传输模式,也就是说不需要对数据进行复杂的封装,SIM900可以将接收到的数据直接通过网络发送出去。对SIM900的控制是通过AT指令来实现的,比较常用的透明传输AT指令有"AT+CIPMODE=1\r\n"、AT+CGATT=1\r\n"、"AT+CIPCCFG=5,2,1024,1\r\n"等等。
为了保证数据的安全性和解析的方便,通信双方之间定义了一个应用层协议,协议内容包括帧头、VIN号、帧类型、数据内容、校验和、帧尾等。帧头使用“$$”字符表示数据的开始,帧尾使用“&&”表示数据的结束。
2.2 车载终端CAN通信设计
2.2.1 CAN总线节点软件设计
CAN总线节点的软件设计,主要包括初始化函数、查询发送函数和中断接收函数三部分,SJA1000初始化是在复位模式下进行的,主要设置时钟分频寄存器(CDR)、输出控制寄存器(OCR)等参数,然后查询状态寄存器的值,若发送缓冲区被释放,则可以进行数据的发送。接收过程是使CPU中断,若接收中断,CPU读取出接收缓冲区的数据,根据这三个函数可以实现CAN总线接点的数据收发功能[8]。
2.2.2 CAN协议与串口协议网关设计
CAN总线协议与STM32的串口协议格式并不一致,若要实现CAN总线与串口之间数据的双向传输,需进行串口协议与CAN总线协议的转换。CAN总线与串口之间需要进行电平标准和通信协议的转换。本次设计使用PeliCAN模式的标准帧格式,总线传输波特率为125kb/s,当单片机串口检测到缓冲区有数据时,则将该数据封装成CAN总线的帧格式,由CAN总线进行数据的发送。反之亦然,当CAN总线上的数据需要通过串口发送时,将CAN总线缓冲区内的数据转换为串口数据格式然后发送出去,这样即可完成实现CAN总线与串口之间的通信,其转换流程图如下图所示。
3 系统的测试与结论
为了配合车载终端的测试,论文开发了上位机监控中心和Android手机客户端,在系统的硬件、软件以及上位机设计均已经完成之后,对系统进行测试,车载终端与CAN总线联合调试如图5所示。根据测试结果,车载终端工作正常,可以与CAN总线以及上位机之间进行通信实现相应功能。验证了车载终端软件、硬件设计方案的可行性,可以为相关车联网研究提供有力的参考。