引言
相比传统视频监控系统,嵌入式视频监控系统具有体积小、实时性强、性价比高、可靠性高、组网方便、可远程监控等优点,因而更适用于工业控制、银行、政府部门的安防系统中。本文提供的这套系统,采用的s3C2440具有更高的性价比,并且基于B/S架构来构建网络进行数据传输,用户可直接通过浏览器访问,相比C/S架构,本系统更符合客户对网络化的要求。
1 嵌入式视频监控系统方案
采用模块化设计方法,将系统分为3个功能模块,分别是:前端视频采集及警报模块、嵌入式Web服务器模块、后端用户监视模块。前端视频采集及警报模块负责视频的采集、存储、处理及传输,并实时监控现场环境温度,提供火险预警。嵌入式Web服务器模块则负责处理监控端发来的请求并为用户提供实时监控数据;后端用户监视模块实现对远程的实时监控,并与web服务器交互。整个系统结构框图如图1所示。
2 系统前端部分的实现
2.1 前端软件平台的搭建
首先,在PC上建立交叉开发环境。然后进行Boot—loader的移植,本系统使用U-Boot一1.16,它支持10种处理器,214种开发板Ⅲ。然而对于本系统所选用的S3C2440开发板,它并没有直接支持,但由于其支持s3c24lo开发板,因而只需对代码修进行少量的修改,即可实现对本系统的支持。主要工作包括修改SDRAM的配置;分频比(FCLK、HCLK、PcLK);系统时钟获取函数(get’PCLK()、get_HCLK()、get一PLLCLK()等);实现对NAND Flash、yaffs文件系统烧写的支持等。完成Boot—loader的移植后,即可进行Linux内核的移植,其主要任务是添加本系统相关硬件的驱动程序,如USB、网卡等,并对其进行相应的修改,使其支持S3C2440平台,然后静态编译入内核。针对本系统摄像头驱动采用动态加载的方式,在进行内核配置的时候需要选中“L0adable modulesupport”选项。最后利用Busybox来构建根文件系统。
现场报警功能部分的实现,采用温度传感器Dsl8820实时采集现场温度,温度预警值设为50℃,当温度超过该预警值,立即驱动前端机上的蜂鸣器,提醒现场人员环境出现异常,可能有火情。
2.2 前端视频采集的实现
Vide04“nux(简称V4L)是Ljnux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供了一系列接口函数印]。本系统使用UsB口摄像头采集视频数据,首先要开发相应的驱动程序,即针对usB摄像头设备/dev/videoo,进行视频图像采集方面的程序设计。要完成针对基于V4L的USB视频数据采集,首先要获取视频设备的设备信息,初始化采集窗口、色度模式、帧状态,然后才能进行视频图像的采集。视频采集流程如图2所示。
在获取到设备信息并设置完摄像头参数后,即可进行数据采集,本系统使用mmap()把设备文件映射到内存中,从而绕过内核缓冲区,加速I/O访问速度。具体操作如下:
首先,使用ioctl(vide伊>fd,VIDIocGMBuF,&(vide扩>videombuf)函数获得摄像头存储缓冲区的帧信息(其中、,id∞为struct vdIn*),之后修改、,ideo—map中的设置。然后将摄像头对应的设备文件映射到内存区,使用video->pFramebuffer一((unsigned char*)mmap(0,、,ide0->、,ideombu£si距,PROT—READ I PROT—WRITE,MAP-SHARED,、rideo->fd,o)。该映射内容区可读可写,并且不同进程间可共享。接着就可进行视频的截取了,使用函数ioctl(video->fd,VIDIOCMCAPTURE,&(video->mmap)),若成功,便开始截取一帧视频数据,最后调用VDlOcsYNC等待一帧截取结束。[page]
2.3 视频流网络传输的实现
本系统视频的网络传输是基于面向连接的TCP协议来实现。TcP/IP协议数据传输可分为3个阶段:建立连接,传输数据,断开连接[6]。首先服务器通过socket()函数创建套接字,使用bind()函数将创建好的套接字与端口绑定,然后调用listen()函数使服务器处于监听状态,等待客户端应用程序的连接请求。客户端应用程序通过打开一个socket即套接字,来使用TCP服务。当服务器接收到用户的连接请求后,服务器调用accept()函数建立双方连接,响应客户的请求,并创建新线程,该线程负责把数据发送给用户。
3 嵌入式Web服务器的设计
目前,B/S模式的网络结构因其具有先进的开发技术、优越的可管理性和可维护性,以及模式简单方便等优点而成为最流行的应用方式"]。本系统采用的正是该结构,因而用户通过嵌入式Web服务器,使用IE浏览器即可远程访问嵌入式设备,实现对现场的远程监。
Boa是Linux支持web服务器之一,它是一个单任务的http服务器,具有代码结构简单、支持动态CGI、“p服务,并且源代码开放等优点,因而特别适合在嵌入式系统中用做web服务器n]。从网上下载其源代码Boa—o.94.13.tar.gz,其在本系统上的移植主要包括2个部分:src下的文件修改和config文件修改。
boa—o.94.13/src文件的修改:首先设置boa—o.94/Makefile文件中的编译器变量:CC=/arm一1inux-gcc,CPP一/arnl_linux—gcc_E;并修改编译方式:LDFLAGS=一g—static。然后在文件compat.h中找到宏定义#defineTIMEz0NELOFFSET(foo)foo##一>tm—gmtoff并修改为#define TIMEZONE一0FFSET(foo)f00->tm—gmtoff。接着便可在boa—o.94/src/下执行make进行编译,从而得到的可执行程序为boa,使用串口将其下载到目标机上,完成移植。
boa—O。94/boa.conf文件的修改,由于boa必须以root身份启动,所以将User nobody修改为User mot,Groupnogroup修改为Group r00t,即赋予管理员权限;修改服务器名字,即将ServerName www.your.org.here修改为serverName sm2440;修改DocumentRoot/var/www为
DocumentRoot/home/web,即设置HTML文档的主目录为/home/web;最后指明nime.types文件位置为Mime—Types/etc/milne.types;其他采用默认设置即可。最后将boa-0.94/boa.conf拷贝到/etc/boa/目录下,配置好Web服务器,就可以进行远程访问了。
4 实现客户端视频数据接收应用程序
本系统的web客户端采用Java Applet为用户提供一个管理人口和显示界面,Java Applet程序嵌入于HTML文档并能在标准的浏览器中显示运行,这种方式不用专门的开发软件与网络接口,是基于web网络应用程序的理想选择。本系统需要在显示页面中嵌入播放器程序实时播放前端获取的监控视频。其中视频数据接收是客户端软件设计的关键,其实现如下:
首先建立网络通信,即创建套接字,输入输出流。然后分配接收缓冲区,即:byte[]buffer—new byte[5 12*1024];
之后读取图像的头信息,并确认图像数据的正确性,即:int n=in.r∞d(bu“er,O,HDRLEN);
其中HDRLEN为信息头长度,设置为50 B大小,通过对头信息中包含的约定字符进行判断,以确定是进一步接收图像数据,还是重新接收头信息。如果能正确读取图像头信息,就证明此次接收的视频数据流是正确的,接着就可以把头信息后的图像数据写入缓冲区,供播放显示:
n=HDRLEN;
r—in.read(buffer,n,buffer.1ength-n);由于视频流缓冲区内接收的幅静态图像数据包含了图像头信息,因此需要将图像数据拷贝到另一缓冲区内,以获得单独的图像数据:
byte[]buffeLimage=new byte[n];.
for(int i一0;i
接着从缓冲区buffer-image中读人数据:
BufferedImage imagedata=
Imagel0.read(new ByteArrayInputStream(buffer—image)),
ImageIcon image—icon=new Image Icon(imageedate m-label.set Icon(image—icon),
系统通过循环,实现不断读取,显示图像数据,用户便可从主页面上获取前端采集到的实时视频监控数据,画面流畅,无明显延时和画面停滞现象,达到监控目的。
5 结束语
目前,嵌入式产品方兴未艾口”。本文提出的这套嵌入式视频监控系统设计方案,采用性价比很高的ARM处理器与开源操作系统Linux相结合,具有高稳定性、低成本、低功耗等诸多优点,并且基于B/S模式,直接接入以太网,大量节省电缆开销,即插即用,实现跨平台监控,为用户提供了极大便利。本系统很好地体现了智能化、集成化、网络化、跨平台等优点,可广泛用于智能家居、智能交通、工厂等制造单位及需实时监控场所。
上一篇:基于S3C2410微处理器的触摸屏设计
下一篇:基于S3C44B0的布拉格光纤光栅传感信号处理系统的设计与实现
推荐阅读最新更新时间:2024-03-16 13:18
- 热门资源推荐
- 热门放大器推荐
设计资源 培训 开发板 精华推荐
- 柔灵科技陈涵:将小型、柔性的脑机接口睡眠设备,做到千家万户
- 微灵医疗李骁健:脑机接口技术正在开启意识与AI融合的新纪元
- USB Type-C® 和 USB Power Delivery:专为扩展功率范围和电池供电型系统而设计
- 景昱医疗耿东:脑机接口DBS治疗技术已实现国产替代
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- 英飞凌推出简化电机控制开发的ModusToolbox™电机套件
- 意法半导体IO-Link执行器电路板为工业监控和设备厂商带来一站式参考设计
- 索尼全力布局5G:Xperia 10 Ⅱ Plus被砍了
- Google Messages测试应用中消息定时发送选项
- 采用A14X芯片的Apple Silicon Mac基准测试成绩解密
- iPhone锁定屏幕键盘输入密码时或漏输,苹果在iOS 14.2修复了
- Redmi Note 9国行标准版详细参数:搭天玑800U处理器
- 诺基亚6300 4G/8000 4G详细信息解密:搭载KaiOS
- Razer推出适用于新款Xbox的两款游戏耳机:Kaira与Kaira Pro
- 比赛怎可没欢呼声 MLB利用iPad模拟现场观众声音
- 苹果AirPods Studio或将亮相?
- 今晚iPhone 12 mini/Pro Max开始预订