韩泽宇,吴霄峰,朱嘉睿,吴占宽,熊树生23▲
(1.浙江大学,浙江 杭州 310012;2.龙泉产业创新研究院,浙江 丽水 323000;3.浙江大学嘉兴研究院,浙江 嘉兴 314000)
通过采集车辆的运行数据,可以进行数据分析,了解车辆的使用情况和性能状况,进一步优化车辆的使用和维护计划,延长车辆寿命和降低维护成本。然而传统车辆信息采集存在存储容量受限、数据处理难度大、数据交互困难的缺点。
随着车联网技术的飞速发展,车辆采集终端作为车联网应用的重要组成部分,备受广泛关注。车辆采集终端能够实时监测和分析车辆状态和驾驶行为,提高车辆的安全性和驾驶效率。因此,本文设计了一个基于MQTT的智能车辆采集终端,具有高可靠性、实时性好的优点。
车联网系统的结构如图1所示。智能采集终端固定在汽车内部,负责采集车辆的各种信息,包括加速度、转向角度、车身姿态角、车辆位置等,并通过MQTT协议将这些信息发送到MQTT(Message Queuing Telemetry Transport)服务器。MQTT服务器负责接收来自车辆信息采集终端发送的数据,并将这些数据转发给上层应用程序或云端服务器。MQTT服务器采用订阅/发布模型,提供高效、可靠的消息传递服务,使车联网系统可以轻松处理大量数据流量。通过MQTT服务器的消息桥接模块,可以将数据桥接到应用服务器。应用服务器负责存储、处理和分析这些数据,并提供一些高级应用程序和服务,如车辆远程控制、驾驶行为检测、车辆保养管理等。
图1 车联网系统结构
车辆采集终端的硬件系统如图2所示。该系统包含两个MCU控制器,其中主MCU采用了STM32L151VET6低功耗微控制器。主MCU的外设资源非常丰富,拥有32KB的SRAM存储器,3个USART和2个UART等多种外设资源。因此,它能够满足终端采集GPS数据解析、4G模块通信、数据存储等多种任务的需求[1]。辅MCU是由华大公司生产的HC32L130E8PA,它虽然相对于意法半导体同系列产品而言资源相对较少,但是它的成本和功耗方面却具有一定的优势。辅MCU的任务是采集九轴传感器的加速度、角速度和磁力计信息,并进行数据处理。最后,辅MCU通过USART与主MCU进行通信。该硬件系统还具有 RS232 通信模块以及4G通讯模块,可用于本地上位机通讯和无线通讯。整个硬件系统经过全面设计,能够满足各种不同的应用场景和需求。
图2 车辆采集终端硬件系统
图3 九轴传感器模块设计
为满足采集终端工作电压要求,采用了乘用车上常见的12 V供电电压作为电源。由于各元器件所需的工作电压不同,主要有5 V、4 V和3.3 V三种,为了实现电源转换,采用了MPA4423和SP6250电源芯片,用来分别给MCU、GPS、4G等模块供电。这些电源芯片可以将12 V的输入电压转换成所需的输出电压,使得各模块得到适当的供电。这样的设计可以确保终端正常工作,同时也保护了各元器件免受过高或过低的电压损害。
九轴传感器采用MPU9250芯片,它集成了加速度计、陀螺仪和磁力计等多种传感器,加速度计和陀螺仪的测量范围分别为±2~±16g以及±250~±2000°/s,可以满足车辆信息采集的需求。通过采集原始数据进行A/D转换得到真实的九轴数据,然后副MCU通过SPI协议读取传感器输出的数据进行处理,再发送到主MCU。
为了满足采集终端的通信需求,选择了移远公司的EC20 4G模块。该模块支持多个频段,可以适应不同国家和地区的网络环境。EC20模块支持LTE Cat.4技术,最高可以实现下载速度150 Mbps,上传速度50 Mbps,具备较高的数据传输速度。此外,该模块支持TCP/IP、MQTT、Http/Https等多种通讯协议的要求,可以满足采集终端的通信需求。EC20模块的电路如图4如所示。
图4 EC20模块电路原理图
该模块采用两种电源进行供电,分别为VCC电源和VBAT电源。VCC电源用于EC20模块主控制器和外围电路的正常工作,其工作电压为3.3 V。VBAT电源则用于EC20模块的通信功能,其工作电压范围为3.4 V到4.4 V。串口电路与MCU1的PC10和PC11相连,用于EC20模块的数据通信。
本系统利用SKG09D模块实现车辆定位信息的高精度采集,定位精度可达2.5 m,并支持3.3 V至5 V的供电电压[2]。模块热启动时间小于1 s,可实现车辆快速定位。此外,电源采用3.3 V进行供电,同时串口通信部分与MCU的PC12和PD2进行连接。采集模块原理图如图5所示。
图5 GPS定位模块原理图
图6 去噪前后角速度对比图
校准传感器后,可以消除由制造工艺和环境因素引起的恒定漂移误差和标度因素误差。然而,在采集车辆状态数据时,加速度计和陀螺仪会受到周围环境高频随机噪声和由于温度造成的随机性误差,从而影响数据的准确性和可靠性。因此,在车辆采集终端的设计与实现中,对陀螺仪采集到的角速度数据进行滑动平均滤波处理,可以消除噪声和随机误差对车辆姿态估计的影响,提高加速度计和陀螺仪采集的精度和稳定性。
移动平均滤波器(Moving Average Filter)是一种常用的数字滤波器,它的工作原理是取一定时间段内数据的平均值来有效地抑制随机噪声,消除信号中的尖峰和其他的干扰,从而使信号更加平滑。此外,它还具有实时处理的优势及容易实现、所需内存小等优点,适用于本文所述的车辆信号采集场景。
移动平均滤波器的数学表达式如式(1)所示。
(1)
其中,xn是输入信号的第n个采样值,yn是第n个输出信号值,N是滑动窗口的大小,本文取值为10。对陀螺仪的滤波效果如图 6所示。
加速度计可以测量出物体所受的加速度,进而计算出物体的滚动角和俯仰角,航向角则通过磁力计进行计算,但是他们会受到振动和噪声等影响,导致输出值存在一定的偏差。陀螺仪对角速度进行测量,可以计算出姿态角的变化率,但是它在测量时会受到各种干扰,导致输出值有一定的漂移,存在积分误差[3]。因此加速度计、磁力计和陀螺仪单独计算出的姿态角无法满足精度要求,需要把加速度计、陀螺仪和磁力计的测量结果进行融合,提高计算姿态角度的精度。
卡尔曼滤波是一种常用于估计系统状态的方法,它基于一组线性动态方程和一组线性测量方程,可以从带有噪声的测量数据中推断出系统状态的最优估计。因此可以先计算陀螺仪的角速度作为姿态模型,然后利用加速度计和磁力计计算的姿态角作为观测值进行卡尔曼滤波融合。
先建立角度测量模型方程,由陀螺仪计算的角度的估计值(αgyro)t由上一次角度估计值(αgyro)t-1和角速度变化量ωt-1与角速度漂移量ωbiαs(假定陀螺仪漂移量不变)得到:
(αgyro)t=(αgyro)t-1+(ωt-1-ωbias)dt
(2)
卡尔曼滤波模型的状态空间方程如下:
Xk=AXk-1+BUk-1+Wk-1
(3)
其中,Xk代表在第k个时刻的状态向量,A代表状态转移矩阵,B是输入转移矩阵,Wk为状态噪声。结合式(2)和式(3)可得到设备状态变量为:
(4)
系统测量方程为:
Zk=HXk+R
(5)
(6)
根据上述方程,进行卡尔曼滤波计算:
Xk|k-1=AKk-1|k-1+BUk
(7)
Pk|k-1=APk-1|k-1AT+Q
(8)
Kk=Pk|k-1HT/(HPk|k-1HT+R)
(9)
Xk|k=Xk|k-1+Kk(Zk-HKk|k-1)
(10)
Pk|k=(I-KkH)Pk|k-1
(11)
式(7)和式(8)属于预测阶段,用于状态预测和状态协方差预测;式(9)-式(11)分别用于计算卡尔曼增益矩阵、状态更新和状态协方差更新,属于更新阶段,将当前时刻的最优姿态角用于下一个时刻的预测,最终得到精确的车辆姿态角。
μC/OS-II是一个针对嵌入式系统开发的基于优先级的嵌入式操作系统,具有移植简单、可裁剪的优点[4]。它可以管理多个任务并通过任务间的通信实现数据传输和同步。
车辆采集终端的软件设计在操作系统基础上进行开发,流程图如图7所示。
图7 软件系统结构图
对于主MCU系统,先进行初始化和系统自检,然后通过OSTaskCreate()创采集数据获取任务、4G通讯任务、GPS获取任务、存储任务。然后操作系统根据设计的程序通过OSTaskSuspend()和OSTaskResume()等函数进行任务调度。副MCU主要负责车辆信息的采集与姿态的解算,因此在BSP的环境下运行。
车辆信息采集通过辅MCU与MPU9250实现,流程如图8所示。上电后先进行自检,然后MCU通过读取MPU9250的加速度、角速度、磁力计值后进行数据的预处理,包括角速度滤波、加速度滤波,再根据卡尔曼滤波计算出姿态角,以及把加速度中的重力分量进行剔除,最后通过串口通讯的方式发送至主MCU。
图8 车辆信息采集流程图
采集的数据需要及时传输到后台进行分析和处理。同时,由于车辆移动性强,在经过基站信号弱的路段时发送消息的可靠性降低,因此远程通信模块采用具有低带宽消耗、消息可靠性高、实时性好的优点MQTT协议实现。
在通讯模块的设计中,按照MQTT通信协议进行数据传输。当建立连接后,采集终端向MQTT服务器订阅需要被服务端下发指令的主题。当主MCU接收到副MCU的采集数据后,则把数据转为可转义的固定格式后上传至"/NEMT/Cars/device1/data主题中,通过不同的device设备号进行采集终端的区分。除了数据上传,也可通过订阅的方式接收后端管理平台发送的下行指令。4G通讯流程图如图9所示。
图9 4G通讯软件流程图
定位信息获取流程图如图10所示。程序开始后通过AT指令和PMTK指令获取GPS数据包,主控芯片通过串口通信获取RMC数据包并通过“GPRMC”和信息段是否为“A”进行数据有效性判断。如果数据有效就解析时间、经纬度、速度等信息并保存到全局变量进行更新。
图10 定位信息获取流程图
终端设备的实物图如图11所示,分为外壳、蓄电池和智能采集终端。外壳用于固定在车上特定的采集位置,并且具有防护功能;蓄电池位于采集版的底部,电压为12V,用于给智能采集终端供电。终端开机后,通过app软件设定采集频率,采集的数据将通过4G模块发送至服务器,其中采集的部分数据如图12所示。
图11 设备实物图
图12 数据监测表
车辆行驶过程中,驾驶员踩踏刹车踏板,车辆的制动系统将施加制动力,使得车辆朝着X轴负方向减速。其中,X轴的加速度在减速阶段呈现先减小后增大的变化趋势,具体表现为急减速时X轴加速度出现明显的波谷,相比之下,Y轴和Z轴(去除重力)的加速度由于有微小扰动只发生轻微变化。证明智能采集终端能快速响应检测对象的变化,具有响应快、记录准确的优点。
根据车联网实际需求,在硬件上开发了基于STM32的车辆采集联网终端。系统集成了加速度计、陀螺仪、磁力计以及GPS和4G模块,并收集车辆状态和位置的实时数据,数据经过处理后通过MQTT协议无线传输到云服务器。软件方面采用μC/OS-II嵌入式操作系统,按模块进行设计,实现数据采集、姿态解算、定位信息获取、数据远程通信等功能,实时性好。
实验结果表明,该系统可以准确可靠地收集车辆状态和位置数据,可用于车辆姿态检测、驾驶行为分析、车队管理等各种应用。此外,该系统的设计具有成本低廉和易于安装的特点,适用于各种车辆。