赵书朵,谌海云,高凤水,武卫丽
(西南石油大学,四川 成都 610500)
由于视频技术和网络技术的飞速发展,网络多媒体应用已经逐渐推广。基于网络技术的各种视频通信的应用,网络远程监控也应运而生,它以其直观、方便、信息内容丰富而被广泛应用于电信、电力、银行、交通等场合,并得到越来越广泛的应用,因此对基于网络的远程监控的研究具有重要意义[1]。
系统的设计思路是结合网络通信技术和视频处理技术,开发一套基于ARM的多路网络视频监控系统。系统由前端数码摄像头、视频服务器以及远程监控端三部分构成。主要实现嵌入式视频服务器直接接入Internet,通过网络与远程PC机进行通信;在嵌入式视频服务器终端上要完成视频图像采集、JPEG压缩编码,并通过以太网把图像传输到Internet上,在远程PC监控端对图像进行逆处理,实现解压显示,并进行摄像头云台的远程控制。
系统实现了3路视频图像的监控,由作为服务器的ARM系统、监控计算机、网络传输等部分组成。ARM系统由微处理器、USB摄像头、云台控制模块以及相应的硬件接口组成,监控计算机对多路视频图像进行采集、解压、显示,传输部分在局域网内实现[2-4]。视频监控系统结构如图1所示。
图1 视频监控系统结构图
监控系统不仅要实现视频图像的采集和压缩,同时还需要实现这些数据的网络传输,系统以ARM微处理器PXA270作为系统的控制中心,采用可编程逻辑器件CPLD协助CPU管理系统总线信号,PXA270处理器监控各个功能模块的启动和运行,如视频采集、图像压缩、数据传输部分,控制数据流向,通过USB摄像头采集视频图像,采用一个二自由度云台控制摄像头的转动,并通过与网络接口芯片LAN91C111的连接实现与PC机的以太网通信。系统硬件框图如图2所示。
PXA270是Intel公司开发的基于XScale架构的处理器,内核采用ARMv5TE,外围控制器众多。内置了Intel的无线MMX技术,能够显著提升多媒体性能,此外PXA270也包含了Intel的SpeedStep技术,能够根据需要动态调节CPU的性能,真正实现了低功耗、高性能。同其他XScale处理器一样,支持多种嵌入式操作系统,如 Linux,Windows,WinCE,Nucleus,Palm OS,VxWorks等。
系统的摄像头云台采用两个舵机进行控制,一个控制水平方向旋转,一个控制垂直方向旋转。两个舵机旋转的角度均为-90°~90°,水平和垂直旋转的步进角度通过程序进行设置。
舵机的控制信号是一个脉宽调制(PWM)信号,系统采用外接单片机,令单片机输出PWM脉冲控制舵机。单片机采用了Freescale公司推出的S12系列中的一款增强型16位单片机MC9S12DG128B作为云台控制的核心模块,此款单片机片内资源及I/O接口丰富,接口模块包括 SPI、SCI、IIC、A/D、PWM 等。它具有8路8位独立的PWM通道,通过相应寄存器的设置可变成4个16位的PWM通道,每个通道都有专用的计数器,PWM输出极性和对齐方式可通过软件编程进行选择[5]。
系统采用SMSC公司的单芯片网络控制器LAN91C111接入网络,它可以工作在两种速度下,10M以太网或者100M以太网,支持与CPU之间进行 8bits、16bits、32bits的数据交换。LAN91C111 工作流程比较简单,驱动程序将要发送的数据包按指定格式写入芯片并启动发送命令,LAN91C111会自动把数据包转换成物理帧格式在物理信道上传输;反之芯片收到物理信号后自动将其还原成数据,并按指定格式存放在芯片RAM中以便主机程序取用。简言之就是LAN91C111完成数据包与电信号之间的相互转换。对LAN91C111的编程主要包括初始化、发送数据包、接收数据包3部分。
图2 系统硬件框图
以太网接口在系统中不仅用来实现网际互联,还有一个重要的用途就是通过以太网下载操作系统镜像,也通过以太网来传输CE设备和开发机(PC机)之间的通信信息。
ARM端软件主要由系统硬件层、嵌入式操作系统和应用程序组成。整个软件体系结构如图3所示。
图3 嵌入式系统软件体系
嵌入式实时操作系统Windows CE 5.0作为系统的软件平台,设备驱动程序采用流接口驱动模型编写,流接口驱动程序由设备管理器统一加载、管理和卸载;应用程序使用Windows CE操作系统的文件API函数和流接口进行通信,从而达到应用程序访问驱动程序及操作硬件的目的;流接口驱动程序具有固定的入口点函数,Windows CE的文件系统通过这些入口点函数与流接口驱动进行通信[6]。
系统主要开发了USB罗技摄像头的驱动程序、云台控制模块需要的GPIO驱动程序。驱动程序编译好之后形成DLL文件,然后直接编译入操作系统镜像中。
应用软件设计是远程视频监控系统的另一个软件核心,包括视频图像采集、JPEG图像压缩和编码、本地保存和显示、TCP服务器/客户端的网络通信、云台控制、多线程技术等核心功能模块。
系统采用USB罗技快看摄像头,利用前面开发的摄像头驱动,在应用程序中可以通过CreateFile,ReadFile,WriteFile,DeviceIoControl等文件 API函数来实现现场图像的采集。然后采用JPEG压缩算法[7],对采集到的RGB24真彩色格式的图像进行压缩,之后调用IImage组件,进行JPEG数据的解码,把JPEG格式的图片转换成Bitmap图像,然后进行本地显示。
系统的摄像头云台由两个舵机组成,由飞思卡尔单片机进行控制,单片机系统要实现对舵机输出转角的控制,需完成两个任务:(1)产生基本的PWM周期信号,即周期为20 ms的脉冲信号;(2)脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比,控制舵机的转动。
系统中网络传输部分的软件实现运用了BSD Socket编程技术,采用的是基于TCP协议的流式套接字[8]。
TCP服务器端编程的一般流程为:首先TCP服务器端调用Socket函数建立流式套接字,然后调用Bind函数绑定本地地址,接着调用Listen函数进行监听客户端连接,一旦监听到客户端连接请求后,服务器套接字将调用Accept函数接受客户端连接请求,并建立连接,同时服务器端会增加一个单独的套接字与客户端进行通信。
对于PC客户端来说,首先调用Socket函数建立流式套接字,然后调用Connect函数,请求与服务器端TCP建立连接,成功建立连接后,即可同服务器端进行通信。
在PC机上运行此网络视频监控系统的监控终端,系统运行稳定良好,画面清晰,图像较为流畅,如图4所示。在监控端可实时观看远程视频图像并可保存图像、进行摄像头的远程控制等。视频数据采集的速度较快,最快能达到每秒钟采集15帧图像,这完全能够满足监控系统的需要。
图4 视频监控端软件界面
该文设计的基于ARM和Windows CE的嵌入式远程网络视频监控系统,采用模块化设计思想,系统的各个子模块相对独立。系统的特点是采集图像清晰度高、稳定性好,可同时采集3路图像,可动态调整帧速率和帧大小,适合各种不同的带宽,支持远程和本地云台控制,图像存储、监看、远程控制可同步进行,监控距离随网络延伸而不断加长,具有良好的发展应用前景。
[1]期 彤.TI DSP助力中国重点应用市场创新[J].电子设计应用,2007(9):128-132.
[2]李珍辉,段 斌.基于ARM的嵌入式监控系统设计与实现[J].微计算机信息,2008(10-2):142-144.
[3]万松峰,黄惟公.基于WinCE&ARM的嵌入式工业监控系统的开发[J].西华大学学报:自然科学版,2005,24(6):26-28,36.
[4]杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.
[5] 王 威.HCS12微控制器原理及应用[M].北京:北京航空航天大学出版社,2007(10):168-182.
[6]何宗键.Windows CE嵌入式系统[M].北京:北京航空航天大学出版社,2006.
[7]张益贞,刘 滔.Visual C++实现MPEG/JPEG编解码技术[M].北京:人民邮电出版社,2003(3):10-69.
[8] 汪 兵,李存斌.EVC高级编程及其应用开发(Embedded Visual C++嵌入式编程)[M].北京:中国水利水电出版社,2005.