首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于ARM Linux的3G无线车载视频监控系统

基于ARM Linux的3G无线车载视频监控系统

摘要:为了加强客运服务中心对长途车辆在客运过程的监管,提出了基于ARM Linux的3G无线车栽视频监控系统。该系统基于ARM Linux嵌入式系统与ARM处理器,通过USB摄像头采集车内视频数据,由GPS定位模块获取车辆的位置数据,然后将采集的数据经过H.264压缩成适合网络传输的形式。最终通过3G无线发射模块经过具有宽带传输能力的3G移动通信网络传输给监控服务中心,监控服务中心可以看到车内清晰流畅的视频画面以及车辆所在位置。
关键词:GPS;3G;视频监控;H.264;RTP

0 引言
    随着汽车客运事业发展,营运人员在营运过程中的安全以及管理也越来越被重视。由于存在乘客与营运人员经常因逃票、服务态度等问题而产生纠纷、客运过程中交通事故双方的责任鉴定比较模糊、车内盗窃事件缺乏有力的证据以及车辆失窃和司机酒驾等问题,本文提出基于ARM Linux的3G无线车载视频监控系统,可有效减少上述事件的发生,给予车乘人员以及车辆安全保障。此系统在Linux操作系统下,利用嵌入式开发板S3C2440搭建硬件环境,通过USB摄像头以及GPS模块采集车内实时的视频和位置信息,视频数据通过H.264的高效压缩编码,既可以得到高压缩比又拥有高质量流畅的图像,可以大大减少需要传输的数据量,并且将3G无线网络作为传输媒介,既可以解决传统有线网络对运动中的监控不能实现的问题,提供更加灵活的组网方式,满足不能架设线路的监控点的监控需求,还可以提供比GPRS和CDMA更宽的数据传输带宽,满足移动视频监控的要求。最终监控终端通过Web浏览器可以实时监控车辆内部的视频画面以及车辆所在的位置速度等信息。

1 系统的总体设计
   
3G无线视频监控系统主要由车载移动监控终端、网络传输、远程客户端3部分组成。系统的总体结构如图1所示。整个视频监控系统采用B/S结构。车载移动监控终端主要包括S3C2440平台上运行的GPS数据采集以及视频采集、视频的编码、嵌入式Web服务器、流媒体服务器。网络传输以TCP/IP协议为基础构建,实现RTP、RTCP、HTTP、TCP、UDP等传输协议。远程客户端实现车辆位置以及视频数据的接收、视频流的解码播放、网络状况反馈等功能。系统工作原理为:通过USB摄像头获取实时车辆内情况和司机驾驶状况,通过GPS定位模块获取GPS数据(经纬度、高度、时间、速度),并传送给ARM处理器,处理器对接收数据进行H.264编码并将编好码的NAL单元传送给流媒体服务器,流媒体服务器对压缩好的数据进行RTP封装并通过内部总线送到内置的boa服务器,并根据RTCP反馈回来的控制信息对H.264编码器和视频采集速率进行控制。Boa小型嵌入式服务器结合CGI技术来实现监控端和客户端的交互。远程客户端通过无线网络与boa服务器连接,采用ActiveX技术实现视频数据的接收、RTP报文的解封装、发送RTCP反馈信息、H.264视频解码、Web浏览器的显示。



2 系统的硬件组成及选型设计
2.1 车载移动终端
   
车载移动终端的组成如图2所示,主要由4部分组成:ARM处理器、GPS模块、3G无线数据发送模块、图像采集模块。主控处理器芯片选用三星公司推出的16/32位RISC微处理器S3C2440A,S3C2440A采用ARM920t内核,0.13μm的CMOS标准宏单元和存储器单元,最高运行频率达到400MHz,它的低功耗、简单、考究和全静态是专门为需要考虑花费和功耗的应用设计的,特别适用本系统。S3C2440A提供了丰富的片内资源,支持Linux。集成在芯片上的功能有:16 KB的指令和数据Cache、LCD控制器、AC97音频接口、摄像头接口、DMA控制器、PWM定时器、MMC接口等。它能完成整个系统的调度工作,在系统上电时配置所有需工作芯片的功能寄存器,完成视频流的编码,并通过3G无线网络向监控终端发送视频码流。


    GPS模块使用u_blox公司的LEA-5H。LEA-5H具有50个通道的u-blox引擎,一百多万个有效相关器,热启动和辅助启动首次定位时间小于1 s,-160 dBm的SuperSense捕获和跟踪灵敏度,运行限制速度515 ms。系统通过该模块实时接收定位信息,保证中心控制模块可以实时处理定位数据。
    图像采集模块的硬件资源选用了带USB接口的中星微摄像头。该款摄像头造价低廉,成像效果好,体现出了较好的性价比。与此同时。主板还预留了多个外围接口,以便扩展功能。
    无线通信模块采用SIMCOM公司的SIM5218模块。无线SIM5218是一款WCDMA/HSDPA/GSM/GPRS/EDGE模块解决方案,支持下行速率达7.2 Mb/s和上行速率为5.76 Mb/s的数据传输服务,这对视频和图像等数据量相对较大的信号传输而言是非常理想的选择。同时,它还具有丰富的接口包括UART,USB 2.0,GPIO,I2C,GPIO,GPS,摄像头传感器和内嵌SIM卡等。在费用方面,3G因为是借助分包交换的技术,所以,网络使用的费用是以消费者的数据传输量来定。2.2 监控中心
车辆监控中心由显示屏幕、监控服务器、主控工作台、路由器和存储器等硬件组成。按功能区分,其基本功能模块有数据接收模块、解码模块、显示模块和存储模块等。由于监控中心硬件可采用通用器件,故不需要进行专门的选型设计。

3 系统软件实现
   
系统选择Linux操作系统。Linux具有源代码开放、成本低廉、内核可裁减性强等特点,且集成有TCP/IP协议,对网络的支持是相对于其他操作系统的优势。基于ARM Linux的视频监控终端的软件设计主要完成三方面的工作:第一在硬件上搭建一个软件平台,搭建嵌入式Linux软件开发平台需要完成UBOOT移植、嵌入式Linux操作系统内核移植以及嵌入式Linux操作系统的设备驱动程序的开发等工作;第二在软件平台的基础上,借助交叉编译工具,开发视频监控终端上运行的采集、压缩、流媒体服务器程序;第三监控中心运行的接收、解压缩、显示程序。
3.1 S3C2440A的Linux平台的搭建
   
构建嵌入式Linux开发平台需要先构建交叉编译环境。一套完整的交叉编译环境包括主机和目标机。在开发中主机是一台装有Centos 5.5操作系统的PC机,目标机是基于S3C2440A的视频监控终端。选用的嵌入式Linux内核源代码包版本号为2.6.28,交叉编译器是GCC 4.3.2。编译内核之前首先要配置内核,裁减掉冗余的功能模块。具体步骤如下:
    (1)通过命令make menuconfig,对内核进行配置,选择YAFFS文件系统,支持NFS启动,启用USB设备支持模块,包括USB设备文件支持模块、USB主控制器驱动模块等。此外,USB摄像头属于视频设备,还需要启用Video4Linux模块;
    (2)用make dep命令生成内核程序间依赖关系;
    (3)make zlmage命令生成内核映像文件;
    (4)make modules和make modules_install命令生成系统可加载模块。这样就生成了zlmage内核映像文件,把它下载到目标平台的FLASH中。
    本设计采用USB外置摄像头,在内核配置时要求以模块形式动态加载。首先要完成驱动程序驱动中需要提供基本的I/O操作接口函数open、read、write、close的实现,对中断的处理实现,内存映射功能以及对I/O通道的控制接口函数ioctl等,并把他们定义在struct file_operations中。接着把USB驱动程序编译成可以动态加载的模块。
3.2 车载移动终端软件设计
3.2.1 GPS模块程序设计
   
GPS接收机GPS15L输出数据格式符合NMEA-0183标准。NMEA-0183协议是由美国国家海洋电子协会制定的一种串行通信的数据协议,所有输入输出信息均为一行ASCII字符。它的一条消息称为语句(Sentence),每条语句都以“$”开始,以回车换行符(<CR><LF>)结束,中间是用逗号分隔的若干个域。一条NMEA-0183语句包含以下5个部分:起始符,固定字符“$”,表示语句开始;标识符域,表示一条语句的全部数据域的特定格式,长度可变;数据域,包含各种类型的数据,各数据之间用逗号分隔,数据域可以为空,但用来分隔数据的逗号不可省略;校验和,以“{”开始,由2个字符的十六进制数组成;结束符,固定字符<CR><LF>,表示语句结束。NMEA-0183语句中最常见的几种格式有GPGG A(Global Positioning System Fix Data)、GPRMC、GPGSV、GPVTG等,它们包含的信息不尽相同。本设计中采用的是GPGGA输出语句,它包含了主要的GPS定位数据。获取GPS数据流程图如图3所示。


    由图3可以看出,GPS模块启动后首先对串口的初始化也就是对GPS模块的初始化,包括设置波特率、数据位、校验位等;然后后开始接收GPS数据,即从串口读数据,并将读到的数据保存到BUF中,接着进入数据的解析和提取阶段,判断BUF[5]是否等于“c”以判断是否为MYMGPR MC,若是,则开始提取经纬度、时间等信息并存入结构体GPS_DATA中。
3.2.2 视频采集模块设计与实现
   
视频采集模块是通过嵌入式Linux操作系统调度V4L(Video4Linux)及影像设备驱动程序来完成视频采集。V4L是Linux影像系统与嵌入式影像的基础,是Linux kernel里支持影像设备的一组API。在Linux操作系统中,外部设备被作为设备文件来管理,从而使得对外部设备的操作就转变成对设备文件的操作。其采集流程如图4所示。


返回列表