摘 要:针对校车经常发生交通事故的现状,提出了校车监控终端系统的设计方案。该系统以处理器S3C6410为硬件核心,以WinCE6.0操作系统为软件平台,通过USB摄像头实现视频采集并对校车进行无线网络实时监控;该系统也利用MMA7361L加速度传感器和STC12C5410AD单片机采集加速度信号,监控服务器端可通过设定加速度报警阈值来控制加速度的输出,实现了校车的加速度测量与监控。
关键词:MMA7361L;视频采集;三轴加速度;串口通信
随着社会经济的快速发展和人们生活水平的不断提高,车辆在人们生活中的地位越来越重要,我国车辆的保有量也持续增加。与此同时,交通事故也在频繁发生,尤其是近年来的多次重大校车事故,对道路交通和人身安全造成极大的影响[1],而且到目前为止还没有一套完整的校车安全监管实施方案。因此,针对各种机动车辆特别是校车,建立良好的安全监控平台十分必要。
本文将视频采集技术与加速度采集技术相结合,通过无线网络将校车的视频数据和加速度数据传输到服务器端。该系统可对校车进行实时视频监控和加速度监控,及时掌握校车的行驶状况,防止超载,必要时进行简单控制从而减少校车事故的发生。
1 系统总体设计
该系统以基于ARM11的S3C6410处理器为硬件核心。S3C6410处理器主频667 MHz以上,内置完备的外部资源,包括SDRAM控制器、NAND Flash控制器、LCD控制器、支持4通道的UART、通用I/O口、I2C总线接口、高速USB OTG、SD Host和USB Host等[2]。
系统选用开发相对容易、实时性和稳定性良好、具有丰富的API等特点的WinCE6.0操作系统为软件开发平台。
校车监控终端系统硬件结构图如图1所示。系统主要由主控制器模块、视频采集模块、加速度采集及报警电路模块和无线传输模块四部分组成。
视频采集部分采用中星微的USB摄像头ZC0301,它由CMOS图像传感器和摄像头控制器组成。加速度采集部分采用Freescale公司的三轴加速度传感器MMA7361L和宏晶科技的STC12C5410AD单片机。MMA7361L可采集到三轴加速度的模拟电压信号,然后通过STC12C5410AD内置的A/D转换将模拟信号转换为数字信号。S3C6410处理器可接收摄像头的视频信号并采集加速度数据,利用内部的编码器对视频进行基于H.264的压缩编码。
2 视频采集模块硬件设计
2.1 摄像头硬件电路结构
CMOS图像传感器和摄像头控制器两部分间的数据和命令通过总线进行传输。摄像头内部有A/D转换芯片和DSP芯片,USB摄像头ZC0301的硬件结构如图2所示。
3 加速度采集与报警模块硬件设计
MMA7361L[3]是一种低成本微型电容式三轴向高灵敏度加速度传感器芯片。可选择1.5 g和6 g两种量程。MMA7361L内部采用开关电容滤波器,有时钟噪声产生,需在XOUT、YOUT、和ZOUT 3个输出端分别接3.3 nF的电容来减少时钟噪声。
加速度数据处理单元选用具有8路高速10位A/D转换的STC12C5410AD芯片,具有高速、高可靠、宽电压、低功耗和超强抗干扰等特点,芯片上的资源可以满足功能需求,增强系统的抗干扰能力,降低系统的开发难度,提高系统的稳定性能。加速度采集与报警系统电路图如图4所示。
图4(a)为STC12C5410AD单片机报警电路原理图,电源选用5 V稳压电源供电,由于设计中用到了串行通信,对系统时钟有较高的要求,所以用外接晶振电路提供时钟,晶振为11.059 6 MHz,采用声光报警,当加速度值超过设定的上限报警值时自动报警[4]。
图4(b)为MMA7361L的电路原理图。MMA7361L输出的三轴模拟加速度信号可通过STC12C5410AD的3路ADC通道进行A/D转换[4];采用3.3 V电压给MMA7361L供电,因此加入一个5 V转3.3 V的RT9161电路,稳压芯片RT9161具有更低的压降,更快的负载相应速度,适合高噪声电源环境,降低噪声的干扰,提高A/D转换的精确度。STC12C5410AD的P1.4端口控制MMA7361L是否休眠,当在Sleep引脚上输入一个低电平信号时,传感器处于休眠模式,这时传感器停止数据采集,而Sleep置高电平时传感器开始恢复工作。在设计加速度采集硬件电路时,为了最大化地使用MMA7361L加速度芯片,将0g-Detect、g-Select和Self Test三个引脚均由单片机IO口来控制,可以在不同的环境下,灵活改变加速度的测量范围。
图4(c)为串口电路原理图,采集到的三轴加速度数据可通过RS232串口发送到S3C6410,然后通过无线网络传输到监控端。
4 系统软件设计
4.1 视频采集软件设计
本文采用WinCE6.0操作系统下的流接口函数来实现USB驱动程序[5]。在流接口驱动函数中,CIS_Init( )函数用来对USB摄像头驱动进行初始化, CIS_Open( )函数打开USB摄像头的驱动程序,应用程序通过CreateFile( )函数调用该函数。CIS_IOControl( )接口函数用于向设备发送命令,应用程序采用DeviceIOContol( )函数传递不同的参数给CIS_IOControl( )函数。
接着调用CAM_Init( )函数来初始化USB摄像头,CAM_IOControl( )函数对摄像头进行控制,这些IO控制指令通过USB通道发送来控制USB摄像头[6]。
视频采集采用多线程和内存映射的方式,创建GetYUVThread线程采集视频帧,创建H264EncodeThread线程把视频帧映射到H.264编码器的buffer中,加快了视频读取的速度,节省了CPU的处理时间和带宽资源。视频采集流程图如图5所示。
视频监控流程图如图6所示[7]。
4.2 加速度采集软件设计
由于车辆在制动时,其加速度变化范围大约在±1 g,因此选择MMA7361L的量程范围为±1.5 g,此时加速度传感器灵敏度为800 mV/g。单片机P1.6引脚置为低电平,当MMA7361Sleep=1时,MMA7361L加速度传感器开始工作,可以定时采集车辆的三轴加速度的模拟电压信号[8],STC12C5410AD对采集到的模拟信号进行A/D转换,数据处理后(加速度单位:m/s2)发送到主控制器,然后主控制器创建TCP Socket线程,通过无线网络把数据包传输到监控服务器端[9]。加速度采集流程图如图7所示。
参考文献
[1] 张金玲.基于智能交通的车载平台的设计与实现[D].北京:北京邮电大学,2011.
[2] Samsung.S3C6410 User′s Manual[S].2009.
[3] Freescale Semiconductor.MMA7361L Datasheet[S].2008.
[4] 何小虎,李现明.基于STC12C5410AD单片机的倾角监控系统设计[J].工业控制计算机,2010,23(10):97-98.
[5] 汪冰.Windows CE嵌入式高级编程及其实例详解[M].北京:中国水利水电出版社,2008.
[6] Liang Huijun,Wang Sheng.Network video capture based on ARM S3C2410 and streaming media technology[J]. Computer,2007,23(5):163-167.
[7] Ye Hua,Ding Gang.Digital vehicle monitoring system based on 3G for public security[C].Computer and Information Application(ICCIA),2010:146-148.
[8] Jin Anmin,Yin Bin,MORREN G,et al.Performance evaluation of a tri-axial accelerometry-based respiration monitoring for ambient assisted living[C].31st Annual International Conference of the IEEE EMBS,2009:5677-5680.