基于S3C6410的田间视频监控系统的实现

2013-09-08 10:18何东健
计算机工程与设计 2013年6期
关键词:开发板插件嵌入式

杨 阔,何东健

(西北农林科技大学 机械与电子工程学院,陕西 杨凌,712100)

0 引 言

农田信息的采集获取是现代农业体系中的重要环节,基于嵌入式的网络视频监控系统可以满足现代农业的高速实时低成本的需求,得到了业界的广泛关注与研究。杨海山、何东健提出一种基于S3C2440、OV9650摄像头和嵌入式Linux操作系统的田间视频采集系统方案[1],该方案实现的田间视频的本地采集与显示,但是由于OV9650的接口限制,对系统在田间的安置造成了不便,而且系统没有实现视频的网络传输功能,不能进行远程监控。黄恒强提出了一种基于S3C2410的网络视频监控系统[2],系统通过嵌入式平台建立的基于TCP/IP协议的视频服务器,将USB摄像头采集的图像数据压缩,通过网络传输,但是采用了客户端软件方式进行了访问,需要将客户端移植到Windows下或者采用web服务器的方式来满足更多用户的需求。樊丰义、何东健设计了一种由ZC0301摄像头和S3C2440组成的田间视频采集服务器[3],该设计实现了采集视频的局域网内传输。沈明霞提出了一种基于ARM和DSP的农田信息实时采集终端[4],主处理器选用S3C2440协处理器选用TMS320C6713,采用了GPRS的传输方式,由于GPRS网络带宽的限制,容易出现拥塞。

为了实现田间视频监控系统的网络传输、远程监控、在保证传输质量和多用户需求的前提下,本设计重点研究了田间视频采集中的网络传输、视频服务器搭建以及多用户同时访问等问题,基于ARM11处理器以及USB摄像头,设计了满足田间视频监控需求的视频监控系统。

1 系统分析

为了实时获取稳定、清晰的田间图像,农业远程监控系统需要满足实时性、稳定性、扩展性基本要求,并尽可能降低成本和功耗,满足多用户同时访问。为此,本设计采用S3C6410作为核心处理器,通过USB摄像头采集视频,由DM9000网口接入互联网,在硬件平台上移植视频服务器软件以实现视频采集、编码及传输功能。下面分别对系统硬件和软件设计进行论述。

2 系统硬件设计

微处理器是系统硬件的核心,考虑到ARM低功耗、低成本、高性能等优点,本文采用ARM11S3C6410微处理器为核心的OK6410开发板,该开发板有256MB DDR和2 GB NAND FLASH,RISC 结 构 的 微 处 理 器 采 用ARM1176JZF-S内核,可稳定运行在667MHz主频以上,CPU内部集成SDRAM控制器、32通道DMA、4通道UART、SD接口、cmos摄像头接口、USB接口等,为各种应用提供了强大的扩展性。

Ok6410有20pin插针cmos接口,但cmos接口摄像头受到接口限制,本身只能固定于开发板上,不便于安装与放置,故本设计采用USB摄像头,以根据需要方面调整位置和方向。摄像头选用ZC301PUSB2.0摄像头,为了验证硬件设计的通用性,用ANC USB2.0摄像头进行测试。

整个系统结构如图1所示。

图1 系统硬件体系

3 系统软件设计

软件设计包括嵌入式操作平台的搭建以及视频服务器软件的移植。为此,首先搭建嵌入式交叉编译环境。考虑到ubuntu10.4版本稳定、启动速度快,且为长期支持版本,故在宿主机电脑上安装ubuntu10.4。交叉编译器选择arm-linux-gcc,该编译器可以在Linux环境下编译ARM架构下的可执行的文件,当前稳定且被普遍使用的是4.3.2版本,故交叉编译器选择arm-linux-gcc-4.3.2。

3.1 嵌入式操作系统选择与移植

现阶段主流的嵌入式操作系统有Linux、WinCE、uC/OS-II等,其中Linux以其充分的开源性和良好的可移植性被广泛使用,本设计选取linux3.0.1版本的系统。

3.1.1 内核移植与剪裁

内核剪裁的目的是为了适应嵌入式系统小体积、小存储的特点,将内核进行裁剪,即去掉无用模块,增加所需模块。裁剪方法是通过配置内核选项参数实现的。除了必须保留的选项外,为了实现视频的采集与传输,还需要保留USB摄像头相关选项以及以太网选项,删除其他不需要功能,以缩小生成的镜像文件的大小。

具体实现方法如下:进入内核文件目录,执行make menuconfig命令,出现内核配置界面,内核已经默认配置好以太网选项,因此主要配置视频采集即摄像头选项,主要配置如下:

其中,勾选了V4L选项以及UVC输入相关选项,GSPCA based webcams选项下勾选了所有型号摄像头选项,目的是为了使该设计能够支持市面上绝大部分USB摄像头,这里只列出了ZC301的选项。

然后配置USB选项:

该选项可以使操作系统支持USB的host接口以及在有新的USB设备接入时给予用户提示信息。最后保存退出,执行make命令进行编译,目录中将生成可引导的、压缩的zImage映像文件,可直接烧写到开发板。

3.1.2 Bootloader的选择

Bootloader(引导加载程序)是系统加电后运行的第一段代码,是在操作系统内核运行之前运行的一小段程序。通过Bootloader可以进行设备的初始化,并建立内存映射空间,为操作系统准备好合适的环境。流行的Bootloader有 U-boot、RedBoot、vivi等。其中 U-boot是sourceforge上的一个开源的固件程序,是当前比较流行、功能强大的开源Bootloader,对Linux操作系统的支持最为完善,故本文用U-boot作为引导加载程序。

3.1.3 根文件系统选择

OK6410Linux支持yaffs2文件系统,yaffs是专门为Nandflash存储器设计的嵌入式文件系统,适用于大容量的存储设备,并且是在 GPL (general public licence)协议下发布的,可在其网站免费获得源代码,故本文用yaffs作为根文件系统。

3.1.4 Linux的烧写

Linux系统的烧写共分为3部分,烧写Bootloader、烧写kernel和烧写根文件系。OK6410支持一键烧写,即借助SD卡、烧写工具以及系统映像文件,烧写Linux到开发板的NandFlash中。具体步骤如下:

(1)将SD卡格式化为FAT32格式,用飞凌公司提供的烧写工具制作一键烧写SD卡;

(2)复制U-boot,kernel,以及yaffs2文件到SD卡中;

(3)将SD卡插入开发板,拨动开发板的拨码开关,设置为从SD卡启动;

(4)通电启动,等待5分钟左右即可;

(5)断电,将拨码开关拨至从NandFlash启动,重新启动开发板,便完成整个烧写。

3.2 视频服务器软件

为在嵌入式设备上实现视频监控并通过网络进行监控,需要在嵌入式平台上搭建视频服务器。现阶段,视频服务器一是通过自己开发,二是通过移植已有视频服务器软件实现。考虑到自己开发视频服务器软件时存在的周期、稳定性以及成本方面的问题,本设计选择移植视频服务器软件。考虑到视频监控功能的实现,需要移植可完成视频采集、实时压缩、网络传输等功能的视频服务器软件。

3.2.1 Mjpg-streamer

Mjpg-streamer来源于开源社区,是一个轻量级的视频服务器软件。它运行时会启动一个socket套接字来侦听8080端口,若有TCP连接请求,则以TCP流将视频发送出去。可以从一个输入端复制JPG格式图像到多个输出端,也可以将从摄像头采集到的JPEG视频流,通过网络传输到浏览器上或者嵌入式设备上。Mjpg-streamer支持使用摄像头内的DSP硬件压缩功能付出少量硬件压缩时的电源开销,可减轻网络摄像机系统CPU负荷及服务器端和网络传输的数据量,减少带宽的占用。

Mjpg-streamer采用模块化的设计方法,以功能块为单位进行描述,这些功能块被称为plug-in(插件)。软件中定义好了各插件的输入和输出,以及组件之间的衔接关系,用户可以自行根据需求,选择需要的模块,这种模块化的程序设计简化了代码的编写、调试、维护。

插件主要分为以input开头和以output开头的两大类。其体系结构如图2所示。

图2 Mjpg-streamer插件体系结构

本设计用主要应用其中input_uvc及output_http插件。

Input_uvc输入插件是一个从V4L2兼容的设备获取影音图像的插件,可以15fps传输分辨率为960×720的图像。若不计CPU的负荷,最大可以传输1600×1200分辨率的未压缩图像,用该插件可以满足农田视频质量要求。

Output_http输出插件是功能齐全的HTTP1.0的web服务器,可以根据现有的M-JPEG标准,从单一输入插件获取图像,向客户端浏览器传输jpeg流文件,并可为其设置用户名与密码,该插件可以满足预期视频监控需求,并具有一定的安全性。

3.2.2 视频服务器移植

Mjpg-stream的移植需要JPEG库的支持,所以首先需要移植JPEG库到开发板。从Independent JPEG Group的网站下载JPEG源码包jpegsrc.v8b.tar.gz,解压缩后进入目录,在源码包目录执行 ./configure--prefix=/opt/linux/s3c6410-3.0.1/video/jpeg--host=arm-linux-gcc命令来配置prefix和交叉编译器,然后使用make命令编译和make install命令安装,最后把目标目录下生成的库文件libjpeg.so.8拷贝到开发板根目录下的lib文件夹中,即完成了jpeg库的移植。

通过sourceforge网站下载 Mipg-streamer源码包。对源程序做出相应修改,为兼顾视频的清晰度与流畅度,修改源码设置分辨率为640×480。源码修改完成后对程序进行编译,首先修改源码包内makefile文件中的CC=gcc为CC=arm-linux-gcc,然后修改配置选项中的生成目标文件路径,最后执行make命令编译。编译后将目标文件路径下的.so为后缀的共享库文件复制到开发板根目录下的mjpg文件夹中,同时复制目标文件路径下的可执行文件mjpg_streamer到开发板根目录的bin文件夹中,在开发板根目录下建立www文件夹,并放入编写好的html文件,至此整个移植完毕。

3.2.3 设置视频服务器开机自启动

Mjpg-streamer通过 “-i” “-o”两个参数分别对输入、输出插件进行调用来完成视频流的传输。其中input_uvc.so输入插件通过 “-d”参数指定视频采集设备的设备号,output_http.so输出插件通过参数 “-w”绑定web服务器工作目录。因命令行较长,为简化操作,编写shell脚本来执行命令。

编写脚本文件 media_collect.sh存放在根目录下bin文件夹下,脚本文件内容如下:

4 系统测试及分析

用两种方法对该设计进行测试,一种使用Mjpgstreamer套件中自带的view程序,该程序有Windows和Linux两种版本,在两种操作系统中均可实现;第二种是使用浏览器登录系统的web服务器。图3和图4分别为在浏览器和view程序中对室外环境进行视频监控的画面,视频服务器接入Internet,IP地址为202.117.188.28,测试在Windows操作系统下完成。通过软件测试,视频传输速率可达到1M/s以上,640×480分辨率下达到25fps,满足视频监控需求。在10人同时访问时未出现卡顿现象。

5 结束语

本文设计了一种基于ARM11、USB摄像头以及Mjpgstreamer软件的嵌入式视频监控系统,分析了操作系统及视频服务器软件的编译和移植,实现了远程视频监控功能。该系统体积小、功耗低,经测试,系统稳定可行,实时性好,可以被多用户同时访问,远端计算机可以清晰的观测到田间监控视频,为工作人员的决策判断提供依据。该系统满足农业视频监控的需求。下一步可以考虑云台控制以及无线传输等功能,进一步对系统进行完善。

[1]YANG Haishan,HE Dongjian.Study and develop on the video capture system based on ARM and Linux [J].Microcomputer Information,2009,25 (11):122-124 (in Chinese).[杨海山,何东健.基于ARM和Linux的视频采集系统研究与开发 [J].微计算机信息,2009,25 (11):122-124.]

[2]HUANG Hengqiang.Design of embedded remote video monitoring system based on ARM and Linux [D].Nanjing:Nanjing University of Science and Technology,2008 (in Chinese).[黄恒强.基于ARM和Linux的嵌入式远程视频监控系统设计[D].南京:南京理工大学,2008.]

[3]FAN Fengyi,HE Dongjian.Agricultural remote monitoring system based on embedded Linux [J].Computer Engineering,2011,37 (1):249-250 (in Chinese).[樊丰义,何东健.基于嵌入式Linux的农业远程监测系统 [J].计算机工程,2011,37 (1):249-250.]

[4]SHEN Mingxia,CONG Jinghua,ZHANG Xiangfu,et al.Design and implementation of terminal for agricultural data realtime acquisition based on ARM and DSP [J].Transactions of the Chinese Society for Agricultural Machinery,2010,41 (6):147-152 (in Chinese).[沈明霞,丛静华,张祥甫,等.基于ARM和DSP的农田信息实时采集终端设计 [J].农业机械学报,2010,41 (6):147-152.]

[5]WANG Fenghua,ZHANG Shujuan.Research progress of the farming information collections key technologies on precision agriculture[J].Transactions of the Chinese Society for Agricultural Machinery,2008,39 (5):112-121 (in Chinese).[王凤花,张淑娟.精细农业田间信息采集关键技术的研究进展[J].农业机械学报,2008,39 (5):112-121.]

[6]TANG Yongbin,YANG Huidong.Design for embedded Web network monitoring system based on ARM11 [J].Video Engineering,2011,35 (9):122-124 (in Chinese).[唐永斌,杨恢东.基于ARM11的嵌入式Web网络监控系统设计 [J].电视技术,2011,35 (9):122-124.]

[7]YANG Wei,LI Minzan,WANG Xiu.Status quo and progress of data transmission and communication technology in field information acquisition [J].Transactions of the Chinese Society for Agricultural Engineering,2008,24 (5):297-301 (in Chinese).[杨玮,李民赞,王秀.农田信息传输方式现状及研究进展 [J].农业工程学报,2008,24 (5):297-301.]

[8]LI An,XU Xuemei,GUO Qiaoyun,et al.Video streaming real-time transmission system based on ARM11[J].Computer System Application,2010,19 (11):15-18 (in Chinese).[李岸,许雪梅,郭巧云,等.基于ARM11的视频实时传输系统[J].计算机系统应用,2010,19 (11):15-18.]

[9]GAO Liqiang.Applacation of ARM9and Linux in remote video monitoring system [D].Shanghai:Fudan University,2007 (in Chinese).[高丽强.ARM9和Linux在远程视频监控中的应用[D].上海:复旦大学,2007.]

[10]LIU Lin,XU Xiao.Real-time video surveillance system based on S3C6410[J].Video Engineering,2010,34 (S2):98-100(in Chinese).[刘麟,徐晓.基于S3C6410的实时视频监控系统 [J].电视技术,2010,34 (S2):98-100.]

[11]YANG Nian,LI Feng.Design and implementation of surveillance system for video based on B/S [J].Computer Engineering and Design,2008,29 (21):5576-5579 (in Chinese).[杨念,李峰.基于B/S的嵌入式视频监控系统的设计与实现[J].计算机工程与设计,2008,29 (21):5576-5579.]

猜你喜欢
开发板插件嵌入式
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
基于STM32H7的FDCAN通信系统设计与实现∗
自编插件完善App Inventor与乐高机器人通信
TS系列红外传感器在嵌入式控制系统中的应用
搭建基于Qt的嵌入式开发平台
基于jQUerY的自定义插件开发
浅析单片机开发板的设计与制作
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
基于Revit MEP的插件制作探讨
倍福 CX8091嵌入式控制器