您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 基于嵌入式LINUX的网络远程视频监控系统(090509(发)
第1页共6页基于嵌入式Linux的网络远程视频监控系统温治强宋跃张志坚李少文(东莞理工学院电子工程学院,广东东莞,523808)摘要:以S3C2440嵌入式处理器为核心,实现了在linux上架设BOA服务器进行远程视频采集传输、设备控制和环境检测,实现了通过互联网对远程设备的智能控制和视频监控。该系统通过互联网进行视频播放和远程设备控制,具有可视化界面、自动获取IP的功能,而且通过NAT编程具有了穿透路由的功能。实验表明该系统工作稳定可靠的。文中重点介绍系统设计思想和硬软件设计过程。关键词:嵌入式,Linux,视频监控,网络中图分类号:TP274;TM935文件标识码:AEmbeddedLinux-basedNetworkofRemoteVideoSurveillanceSystemWenZhi-qiangSongyueZhangZhangZhi-jianLiShao-wen(DepartmentofElectricalEngineering,,DongguanUniversityofTechnology,GuangdongDongguan,523808)Abstract:BasedonS3C2440embeddedprocessor,Thissystemrealizedremotevideocapturetransmission,devicecontrolandenvironmenttestingthroughtransplanttheBOAinthelinuxserver,andachievedtheremotedevicecontrolandintelligentvideosurveillancethroughtheInternet.ThroughtheInternetvideoplayerandremoteequipmentcontrolinterfacewithvisualization,thissystemhasautomaticaccesstoIPfunctionality,andhasthefunctionofthepenetrationthroughtheNATprogramming.Thetestprovedthatthesystemisstableandreliable,systemdesignideasandware/softdesignprocessweremainlypresentinthepaper.Keywords:Embedded,Linux,Videosurveillance,Network1引言随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,在嵌入式设备上运行Web服务器,用户端只需要通过Web浏览器就可以对嵌入式设备进行控制和视频监控。基于这种技术的网络监控系统将会成为家庭监控的首选。本文介绍了一种以linux系统为平台,S3C2440为处理器的带视频和控制为一体的远程监控系统的设计方法。2系统结构设计本系统在软件方面是通过在S2C2440上构建嵌入式linux系统,并在linux系统上构建BOA服务器使用HTTP协议和CGI网关文件作为服务器与外界网络之间的数据处理。在硬件方面是以S3C2440为核心S3C2440的USB接口为摄像头的输入、输出通道,来实现摄像头的视频采集,使用S3C2440的IO口来控制伺服电机和外围设备,图1系统结构图第2页共6页采用DM9000网卡来实现视频系统与网络的连接。系统主要由S3C2440、存储器、网络控制器、USB摄像头、伺服电机、输入出通道等组成,同时还预留了SPI接口的AD芯片MAX1270的AD采样接口,只要接上传感器就可以实现光照强度、温度、压力或湿度等检测。系统运行时,用户通过浏览器访问本服务器的网页,网页就会调用服务器里面的CGI网关文件对数据包进行分析判别用户操作,并把控制信息通过管道传输到进程中,进程再调用IO驱动来实现对外围设备的控制。系统把摄像头采集到的视频数据进行压缩编码,通过服务器的7070端口进行传输,从而实现了远程视频监控的目的。摄像头前端还增加了红外管使系统具有夜视功能。3硬件设计核心电路设计如图2。系统设计的处理器使用三星公司的ARM9芯片S3C2440,S3C2440是采用ARM920T内核的32位处理器,主频为400MHZ,最高频率可达533MHZ,外部总线频率为:100~133MHZ,具有一个USB1.1的主机接口。内存采用了2片HY57V561620T构成64M的SDRAM和一片64M的K9F1208U0BNANDFlash。摄像头采用的是中星微zc301芯片的摄像头。AD芯片采用了美信的12位的MAX1270芯片。网络控制器选用DAVICOM公司的DM9000快速以太网控制处理器,DM9000合成了MAC,PHY,MMU,配备有标准10M/100M自适应,16K大容量的FIFO,4路多功能GPIO,掉电,全双工工作等功能,该芯片物理层支持以太网接口协议具有外围电路简单等优点。100M网络控制器DM9000的电路设计如图2所示,S3C2440与MAX1270的接口采用了SN74LVC4245电平转换芯片进行电平转换,IO的输出控制也采用了该芯片,增加了IO口的电流输出能力。摄像头的USB接口使用了S3C2440内置的USB1.1接口。4系统软件设计4.1系统的运行流程系统运行流程如图3,打开系统时启动linux系统,系统加载网卡、摄像头、IO口控制、MAX1270等驱动。当系统挂载完文件系统后会调用Src脚本开始自动运行程序自动获取IP,启动BOA服务器、摄像头视频采集程序Servfox、设备控制程序IOSer、AD采样程序ADSer。当服务器收到http请求时会发送登录页面,并调用CGI网关程序等待获取和分析用户输入的登录信息,当用户输入的登录信息完全正确时,CGI程序会输出监控界面,并调用摄像头采集程序Servfox采集视频发送到用户IP的7070端口上。如果用户的机上安装javaplayer插件,监控页面就会调用该插件来获取7070端口的视频信息实现视频播放。监控页面有多个控制选项,当用户选择好控制选项发送请求时,服务器会通过shell脚本编写的CGI网关文件获取用户的控制信息并把信息传输到IOSer创建好的线程IO_control中,IOSer在获取到控制信息后会调用IO控制驱动IOs来完成舵机和外围设备的控制。用户登录信息错误时CGI程序会重发登录页面来让用户登录。图2系统硬件设计电路图第3页共6页4.2系统软件的实现4.2.1linux系统的移植系统采用了linux2.6.22版本,移植时主要修改顶层的Makefile,在/dev/char中加入IO控制驱动IOs.c、AD采样驱动MAX1270.c、网卡驱动DM9000.c和中星微的摄像头驱动spca50x,设置flash分区,然后使用makemenconfig命令进行内核的配置,在编译驱动时选择(*)选项把驱动编译进内核。4.2.2BOA服务器的移植BOA服务器是一个单进程支持脚本和CGI功能的速度和安全要好于Apache的嵌入式Web服务器。BOA移植时先从源码,将其解压并进入源码目录的src子目录使用./configure生产Makefile文件,修改Makefile文件中的指定编译链使CC=arm-linux-gcc,再将编译条件改成CPP=arm-linux-gcc–E,保存退出,运行make进行编译,再使用arm-linux-stripboa剥去调试信息得到60K的可执行程序boa。配置boa服务器使其支持CGI:在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。boa.conf文件可以参考或修改Boa源码目录下的示例boa.conf文件。创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/,将mime.types(mime.types文件用来指明不同文件扩展名对应的MIME类型)文件拷贝到/etc目录,创建CGI脚本所在目录/var/用于存放CGI脚本。把boa程序拷贝到/sbin下,在/etc/init.d/下的rcS启动脚本中添加boa的开机运行,这样就完成了BOA服务器的移植了。4.2.3CGI的编写Web技术中生成动态Web页面的方法有CGI和服务器脚本,但考虑到嵌入式系统的资源有限,嵌入式Web一般都只提供CGI支持,因此系统采用了CGI的程序开发。CGI可以由C、Perl、shell等语言编写,系统在编写发送控制指令页面时使用了shell脚本语言(shell脚本可以使用echo命令把获得的控制指令传输到IOSer创建的线程中完成设备控制),在编写监控页面时使用了C语言调用CGIC库来编写。CGIC是一个开放源码的功能比较强大的支持CGI开发的标准C库,只需要在开发的站点和程序文档中有个公开声明即可免费使用。CGIC的使用非常方便,从CGIC的主站点下载源码,将其解压并进入源码目录,修改Makefile文件,找到CC=gcc,将其改成CC=arm-linux-gcc,找到AR=ar,将其改成AR=arm-linux-ar,找到RANLIB=ranlib,将其改成RANLIB=arm-linux-ranlib。找到gcccgictest.o-ocgictest.cgi${LIBS},将其改成$(CC)$(CFLAGS)cgictest.o-ocgictest.cgi${LIBS},找到gcccapture.o-ocapture${LIBS},将其改成$(CC)$(CFLAGS)capture.o-ocapture${LIBS},并保存退出。网页的设计可以参考源代码中的cgictest.c文件,为了快速第4页共6页的使用CGIC库编写动态网页可以直接对cgictest.c进行修改得到需要的网页,也可以先使用Dreamweaver编写好网页再使用CGIC库的fprintf(cgiOut,“代码”)函数输出网页代码来实现,CGIC库提供了cgiFormString()函数来获取用户的登陆信息,系统的验证部分CGI代码如下:intcgiMain(){charname[241];charnumber[241];char*s1=wenzhiqiang;//定义用户名char*s2=870106;//定义密码intr1,r2;cgiFormString(name,name,241);//获得登陆界面中用户输入的用户名cgiFormString(number,number,241);//获得用户输入的密码r1=strcmp(s1,name);//验证用户名r2=strcmp(s2,number);//验证密码if(r1==0&r2==0){输出监控页面}else{输出登陆页面}对应的登陆页面的部分代码如下:formmethod=postaction=/cgictest.cginamewen-test//使用http使用POST请求方式,调用cgictest.cgi获取,处理请求信息divalign=centerclass=STYLE1用户名:/divinputname=nametype=textsize=20maxlength=20///定义用户名到传输列表divalign=centerclass=STYLE1密码:/divinputname=numbertype=passwordsize=20maxlength=20///定义密码到传输列表inputtype=submitname=Submitvalue=登录///发送列表inputtype=resetname=Submit2value=清除///清除输入修改或编写好后就可以使用make得到cgictest.cgi,
本文标题:基于嵌入式LINUX的网络远程视频监控系统(090509(发)
链接地址:https://www.777doc.com/doc-7290974 .html