曾明如,罗 浩,徐小勇,徐志敏
(南昌大学 信息工程学院,江西 南昌330031)
随着人们在安全防范意识及需求上的不断提高,开发功能强大的视频监控系统显得尤为迫切。嵌入式系统作为日益成熟的平台,在此方面的应用已经非常普遍。文献[1]提出了一种基于S3C2410处理器和Web技术的室内设备监控系统,通过Internet完成对远程设备的访问和监控操作,但需采用登录 Web浏览器的方式;文献 [2]以ARM9S3C2440作为核心处理器,移植了符合H.264标准的X264编码器和jrtplib,对捕获的视频帧进行编码后,经网卡发送到主机,该方案仅能接收图像,功能有待扩展;文献 [11]设计了一种基于ARM Cortex-M3内核微控制器和GPRS网络的远程图像报警系统,利用GSM网络传递报警信息,实现了远距离无线数据处理及控制;文献 [12]提出了一种基于GSM的远程分布式数据采集与控制系统,通过分布在监控区域的数据采集与通讯设备,对远程的目标设备实施监控。两者都可以通过SMS短信操控系统,但都因缺乏云台装置而限制了监控范围。如何更好地结合各项技术也为研究提出了新的要求。
本文综合考虑了监控现场的多种状况,设计了一种基于ARM9S3C2440的嵌入式监控系统。该系统利用了GPRS网络和GSM通信,在监控区域异常时能够给予指定手机用户短信提醒,对于彩信的发送、现场云台和报警器的灵活控制丰富了用户的监控手段,可以极大地帮助用户处理不同的现场情况。
系统在检测到监控区域有人员进入时开始采集图像同时以短信形式通知设定手机,手机用户可以短信回复相应数字决定是否需以彩信确认该人员,是否需要对安装摄像头的云台进行各个方向的控制,是否发出或取消报警信号,从而使用户不在现场就能够实时掌控监控区域。系统总体结构如图1所示。
由图1可知,其中人体感应模块在检测到有人进入监控区域时传递开关量信号给处理器,ZC301P型USB摄像头接收到处理器发出的控制信号后采集视频数据给处理器。GSM手机模块完成短信或彩信发送、云台控制命令和报警命令的接收工作。
图1 系统结构框架
基于Linux操作系统源代码开放,内核小且裁剪性好,性能稳定效率高等优点[1],采用其构建视频监控终端。本文选取三星公司推出的S3C2440微处理器作为核心处理器,负责控制整个系统的运行。S3C2440是一款内部集成了ARM公司ARM920T内核的16/32位RISC嵌入式微处理器,面向高性能、低功耗的应用[2]。
系统选用HC-SR501人体红外感应模块,它是基于红外线技术的自动控制模块,具有全自动感应功能。它的工作电压范围为直流4.5v--20v,感应范围为小于100°锥角,7m以内,能够满足一般的监控需求。当有人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。
选取SIM900模块作为通信模块,它是SIMCOM公司推出的GSM/GPRS模块,两个工作频段分别为EGSM 900MHz和DCS 1800MHz,其内嵌TCP/IP协议,具有丰富的AT指令集。SIM900模块具有电源接口、SIM卡接口、RS-232接口等。微处理器芯片通过串口与该模块相连,模块串口部分电平为2.8V左右,根据MCU串口电平进行电平匹配,以保证电压匹配。
云台是用来安装、固定摄像头的支撑设备,分为固定和电动云台[3]。选用PTS-3030W型云台,其旋转速度为水平6°/s,垂直4°/s,旋转角度为水平最大350°,垂直-50°--50°。该云台作为电动云台适合对大范围区域进行扫描监控,扩大了摄像头的监视范围。云台通讯控制方式是RS-485半双工总线[4],而嵌入式终端串口输出为TTL电平,采用 MAX485芯片来实现TTL与RS-485电平的转换。MAX485工作电路如图2所示。
报警部分采用XDD-905型智能报警灯光联动控制器,只需一个常闭或常开开光量输入,即可联动另一端的强电开关实现灯光、警笛联动。它内置单片机,通过设置程序可达到精确的定时、延时效果。
图2 MAX485工作电路
嵌入式开发板的资源相对有限,软件开发通常采用交叉编译的方式,因此第一步要搭建交叉编译环境[5]。本文采用的交叉编译器版本为arm-linux-gcc-4.3.2,Bootloader为u-boot-1.1.6,内核为linux-2.6.32.2,可在网上下载源码压缩包。
解压安装各个压缩包时要根据平台需求进行相关修改、配置。对于内核移植部分,主要是添加相应驱动,包括USB摄像头的驱动和串口驱动。要想使用内核和存取文件,还需构建根文件系统[6]。Linux操作系统把所有的文件通过分级和分层的方式组织在一起,使其层次结构形成树形。在Linux树形结构中,根分区中只有一个根目录,其它文件目录都挂接在根目录下面。将u-boot烧写到Nor Flash之中,接着烧入配置好的内核和根文件系统。应用软件由C语言编写,经交叉编译器编译后移植到ARM平台。
操作系统利用Video4Linux接口函数访问USB摄像头设备,从而捕获到实时的视频流。Video4Linux是Linux kernel里支持影像设备的一组APIs[7],它给针对视频设备的应用程序编程提供了一系列接口函数。在linux-2.6.32.2中包含了所选摄像头的驱动,相关配置选项如下:在Device Drivers菜单里面,选择Multimedia devices,再依次选择
图像采集的具体过程是:调用grab_fd=open(“/dev/v4l/Video0”,O_RDWR)函数,返回描述符grab_fd时意味着能打开设备并对设备文件进行操作。接着调用ioctl(grab_fd,VIDIOCGCAP,&grab_cap)函数来读取video_capture中关于摄像头的信息。之后调用ioctl(grab_fd,VIDIOCGPICT,&grab_pic)函数读取保存于struct video_picture中的图像信息。完成以上步骤后,系统选择mmap()内存映射方式实现对视频图像的采集[8]。
目前国内外主要采用 MJPEG、MPEG1/2、MPEG4(SP/ASP)、H.264/AVC 等 几 种 视 频 编 码 技 术。 其 中H.264是一种高度压缩的数字视频编解码器标准,拥有良好的压缩性能和网络亲和性,能够在较低带宽 (2M之内)情况下提供高质量的图像传输,相比其它的编码标准节约了很多的传输码流[9]。
H.264仅仅是规定了一个已编码的视频比特流以及如何对此比特流解码,至于怎样实现编码,可以利用avc-src-0.14版本的 H.264编码库,解压该编码库到avc-src-0.14/avc/build/linux/目录下并对它进行编译[10]。编译之后便会在其文件夹下生成一系列目标文件,这些目标文件提供的功能函数能够对YUV格式的视频进行编码。视频压缩编码流程如图3所示。
图3 视频压缩编码流程
在打开编码库后,分配一部分内存用于存放一帧数据,接着对视频缓冲区进行读取,获得图像数据。所用命令为ret=ioctl(camerfd,VIDIOCSYNC,&cam _cap),当ret>0时则图像获取完成。malloc函数为编码器分配存储编码后的帧数据空间,编码则用到了encode函数,该函数的参数包括为视频数据映射的内存地址,同时它会返回编码后的一帧数据的大小,之后视频数据就压缩到了所分配的内存空间里面。需要注意的是,摄像头采集的视频图像格式为JPEG,H.264编码前需要先将其转换为YUV格式,这样才能将数据发送出去。编码程序流程如图4所示。
图4 编码程序流程
SIM900模块使用AT指令实现GPRS传输数据、发送短信和彩信等通信功能[11]。将SIM900模块和嵌入式系统平台相结合,实现ARM与GSM兼容,这便构成了信息传输模块。
启动Linux系统后,串口相关参数设置为:通讯波特率115200bps,8位数据位,无奇偶校验,1位停止位,无数据流控。短信发送有两种格式:TEXT格式和PDU格式[12]。TEXT格式只能发送ASCII字符,PDU格式可以发送中英文字符,本文采用PDU格式。首先通过向SIM900模块发送AT+CMGF=0将其设置为PDU格式,接着发送AT+CMGS=23(15+短信字数*2)+回车键,返回“>”后写入短信息的PDU码,最后发送0x1a给模块将执行发送短信命令。短信中心号码为+8613800791500,用户手机号为+861375568XXXX。设置两条短信,内容分别是:“有人进入”、“恢复正常”。
彩信需要在GPRS网络的支持下,以无线应用协议WAP为载体,通过手机上的一个URL网址获取图片信息,故需建立GPRS网络连接。通信过程中先设置模块的连接协议和端口号,所用AT指令为AT+CLPORT= “TCP”,“2022”。在 TCP 连 接 时,输 入 AT+CIPSTART=“TCP”,“218.65.113.45” (本机外网IP地址), “8080”,连接成功则返回:CONNECT OK。为实现发送彩信功能还需进行如下配置:AT+CMMSEDIT=1设置以彩信形式发送;AT+CMMSDOWN= “PIC”,12963,20000设置彩信下载地址;AT+CMMSRECP= “1375568XXXX”设置接收彩信手机号码。摄像头采集帧速为25fps,处理像素640×480。处理器接收到人体红外感应模块发出的开关量信号后,设置每隔2s在内存中选取一帧图像作为彩信数据,数据经封装后可直接发送至GPRS网络,并以WAP Push的形式发到手机上。
模块接收控制命令时,利用指令AT+CNMI=2,1设置短信提示功能;AT+CMGF=0设置PDU格式读出短信;AT+CMGR=7读取存在SIM卡第7个位置上的信息。SIM900模块先将命令保存,数据帧经拆封后传输至处理器,通过判定该命令的PDU码,处理器接着发出相应控制信号。传输部分流程如图5所示。
图5 传输部分流程
S3C2440处理器由串口接收到手机用户发送过来的云台控制命令后,通过RS485端口传送信号给云台。所选云台内置解码器,按照PELCO-D云台控制协议将其解码,实现对云台的控制。PELCO-D协议数据格式为:1位起始位,8位数据,1位停止位,无效验位,波特率为2400B/S[13]。通过使用PELCO-D协议的云台方位控制命令能够实现其向上、向下、向左、向右和停止转动。设定每个转动命令发出后1s时刻自动发出一个停止命令,这样用户每次在发出某个云台转动命令后,云台能达到向上或向下转动4°,向左或向右转动6°的效果。以云台从用户设定位置动作为开始,依次记下云台的每个转动命令,对于每个方向都给云台施加相同次数的反方向转动命令,这样就增加了一个云台复位功能。
系统调试时,首先将能够上网的SIM卡插进SIM900模块卡槽中,模块通过串口线与开发板相连。将系统上电,之后模拟监控现场。当有人进入监控区域时,设定手机接收到短信显示:“有人进入”。在设计阶段利用了多个判别语句,用户回复数字1到9后系统便执行9种不同的命令,见表1。如短信回复:”1”,则系统每隔2s发送一条彩信到手机,其中一条彩信截图如图6所示。短信回复:”3”,系统停止发送彩信。
表1 数字键功能
图6 云台动作前图像
本系统中彩信部分 (1,3)、报警部分 (7,9)和云台部分 (2,4,5,6,8)的三组功能可以任意组合使用。例如短信回复内容:”127”,则现场报警的同时云台会向上转动4°,用户也可以每隔2s接收到一条彩信。云台向上动作后,手机所接收的一条彩信截图如图7所示。图像较为清晰,具备实时性效果,有利于用户对进入人员的判断识别。
图7 云台动作后图像
当人离开监控区域后,处理器再次接收人体红外感应模块发送的开关量。手机再次接收短信,短信内容:“恢复正常”。实验结果表明,各个功能可以成功执行,该系统能够实现对所要求范围内的监控且极少监控盲区,信息传输顺利,具备安防报警效果。
本文结合ARM、GPRS网络以及GSM通信技术设计了一种安防报警系统,分析了摄像头驱动和符合H.264标准的编码器移植,通过SMS短信发送不同数字就能控制现场云台转动、发送彩信以及声光报警。该系统安全稳定、功能强大、使用简单且快捷,使得监控方式更加人性化、多样化,在无人视频监控方面具备很好的应用价值。改进的方向可以是采用人脸识别技术来减少接收到报警短信的次数以及利用同一部手机控制多处监控区域等,使得系统功能更加完善、合理。
[1]FANG Fang,MA Xudong.Design and realization of monitor system based on embedded Web technology [J].Computer Engineering,2009,35 (23):237-239 (in Chinese).[房芳,马旭东.基于嵌入式Web技术的监控系统设计与实现 [J].计算机工程,2009,35 (23):237-239.]
[2]PENG Tiegang,LIU Guofan,CAO Shaokun,et al.Design of embedded video surveillance system based on ARM [J].Computer Engineering and Design,2010,31 (6):1191-1192 (in Chinese).[彭铁钢,刘国繁,曹少坤,等.基于ARM的嵌入式视频监控系统设计 [J].计算机工程与设计,2010,31(6):1191-1192.]
[3]Ngo H T,Ives R W,Rakvic R N,et al.Real-time video surveillance on an embedded,programmable platform [J].Microprocessors and Microsystems,2013,37 (6):562-571.
[4]Brzoza-Woch R,Ruta A,ZielińSki K.Remotely reconfigurable hardware-software platform with web service interface for automated video surveillance [J].Journal of Systems Architecture,2013,59 (7):376-388.
[5]LIU Liang,LAI Wanchang,LI Ming.Design and implementation of image transmission system based on ARM9 & GPRS[J].Computer Engineering and Design,2010,31 (7):1477-1480(in Chinese). [刘良,赖万昌,黎明.基于ARM9的GPRS图像传输系统的设计与实现 [J].计算机工程与设计,2010,31 (7):1477-1480.]
[6]PENG Hao,GONG Jie,QIN Jianmin.Build embedded Linux root file system based on S3C2440 [J].Electronic Design Engi-neering,2010,18 (6):20-22 (in Chinese). [彭浩,龚杰,秦建敏.基于S3C2440的嵌入式Linux根文件系统构建 [J].电子设计工程,2010,18 (6):20-22.]
[7]ZHAO Manyi,ZHAO Li,MO Jinwang,et al.Video capture and encoding technology in video surveillance terminal [J].Computer Engineering and Science,2011,33 (1):122-126(in Chinese).[赵满意,赵利,莫金旺,等.视频采集与编码技术在视频监控终端中的应用 [J].计算机工程与科学,2011,33 (1):122-126.]
[8]TANG Xiaofeng,ZHENG Shanxian.Design and Implementation of remote monitoring system based onμClinux [J].Computer Engineering and Science,2009,31 (10):140-142 (in Chinese).[汤霄峰,郑善贤.基于μClinux的远程监控系统的设计 与实 现 [J].计算机 工程与科学,2009,31 (10):140-142.]
[9]Soyak E,Tsaftaris S A,Katsaggelos A K.Low-complexity tracking-aware H.264video compression for transportation surveillance [J].IEEE Transactions on Circuits and Systems for Video Technology,2011,21 (10):1378-1389.
[10]LIN Xiaohuan,YANG Fangbiao.Video capture,compression and transmission based on ARM9 [J].Communications Technology,2012,45 (7):110-112 (in Chinese). [林晓焕,杨方彪.基于ARM9的视频采集、压缩及传输 [J].通信技术,2012,45 (7):110-112.]
[11]ZHENG Daobao,WANG Huaijie.Design of remote image and alarm system based on ARM/GPRS [J].Computer Measurement & Control,2013,21 (1):149-151 (in Chinese).[郑道宝,王怀杰.基于ARM/GPRS的远程图像报警系统的设计 [J].计算机测量与控制,2013,21 (1):149-151.]
[12]HOU Dawei,HE Jianzhong.Distributed remote data acquisition and control system based on GSM [J].Computer Engineering and Science,2009,30 (9):2102-2104 (in Chinese).[侯大伟,何建忠.基于GSM的远程分布式数据采集与控制系统 [J].计算机工程与设计,2009,30 (9):2102-2104.]
[13]ZHANG Qiulin,XIA Jingbo,QIU Jing,et al.Design and realization of PTZ control module in the video monitor system[J].Application of Electronic Technique,2011,37 (9):43-45(in Chinese). [张秋林,夏靖波,邱婧,等.视频监控系统中云台控制模块的设计与实现 [J].电子技术应用,2011,37 (9):43-45.]