APP下载

基于物联网技术的视频监控系统设计

2015-10-22王永强

唐山学院学报 2015年6期
关键词:开发板PC机内核

王永强

(唐山学院 计算机科学与技术系,河北 唐山063000)

随着计算机技术的快速发展,以及人们安全意识的提高,视频监控系统已被广泛应用到各个领域[1]。传统的视频监控系统主要分为两类:一类是基于闭路电视的,监控区域有限;另一类是基于PC机的数字化监控,体积大,组网较为死板,移动性差。基于物联网技术的视频监控系统,则可以很好地解决传统视频监控系统的弊端,它突破了有线网络的局限性[2-3],给信息交流提供了更大的便利,具有组网方便、便于安装、可靠性高、运行稳定等特点,而且随着物联网技术的不断提升,视频监控系统正向着数字化、网络化、智能化的方向发展。因此,基于物联网技术,本研究设计了一种视频监控系统。

1 系统组成

系统以嵌入式物联网平台为基础,对图像进行实时采集,并通过无线网络进行实时传输。系统的组成包括:硬件设备、USB视频数据的采集、WIFI无线数据的传输、Qt平台数据显示及存储。

1.1 系统硬件

硬件设备主要包括PC机和开发板,PC机上运行ubuntu12.04;开发板型号为real6410,使用arm11处理器[4],运行linux2.6.28版本内核,并搭载了apm6658SDIO WIFI模块以及zc301的USB摄像头模块。对于real6410来说,开发板上集成了USB接口和SDIO接口,能够满足相应要求。

1.2 USB视频数据采集

USB视频数据采集部分主要是实现对USB摄像头的能力检查,初始化,并且进行一些相应的格式和流设置[5-6]。由于USB摄像头采集到的数据放在内核缓冲区,而程序需在用户空间运行,这就需要使用一种通讯方式来进行用户空间与内核空间之间的联络。一般通讯方式有三种:第一种是直接读写内核缓冲区,第二种是内存映射,第三种是使用用户空间指针。本系统采用的是第二种,即mmap内存映射方式。首先,向内核申请5块帧缓冲区,并将内核实际给予的缓冲区通过mmap映射到用户空间,这样程序便可以在用户空间访问内核空间了。其次,开启视频采集,这时设备便会将采集到的帧数据放到内核缓冲区中,在内核空间开辟的缓冲区事实上是一个循环缓冲队列,用户空间的程序在取回一帧数据后需把该缓冲区重新放回内核缓冲队列中,以便内核继续使用它来存放接下来采集到的帧数据。

1.3 WIFI无线数据传输

WIFI无线数据传输部分主要是实现接收客户的连接请求、处理用户的传输请求,以及判断用户是否退出。由于tcp传输会进行一系列的差错检验,一旦报文出错,例如乱序、乱码等,便会请求进行重发,这样当网络状态不理想时,会造成视频不能流畅显示,因为大部分的时间都被tcp的重发机制占用了。鉴于udp传输没有tcp传输那样的差错控制机制,所以本WIFI无线数据传输使用的是udp传输,这样当传输的报文出错时,可以在程序中直接简单地丢弃这帧数据。另外,由于网络负载问题,每帧数据都是先进行分包传输,然后在PC机上再进行组包重新形成一帧数据。

1.4 Qt平台数据显示及存储

Qt平台部分主要是实现与用户的交互,如输入服务器的IP及端口、显示当前连接的状态、实时视频显示、是否暂停视频的实时显示、是否进行视频的录制等。Qt端需要对接收到的帧数据进行显示,显示是通过Qtimer来控制的,将Qtimer的信号与相应的槽函数绑定,定时器时间一到便会执行槽函数,该槽函数的功能便是向开发板索取一帧数据并且显示。Qtimer不断索取视频帧数据,并且连续显示每一帧,这样便形成了流畅的视频,而且如果此时用户选择了录制,则会在显示实时数据的同时,调用mencoder,将接收到的数据转换为视频存储起来,以实现后期查看。

2 系统工作流程

系统中,主要涉及到两个平台:一是以real6410为基础的嵌入式平台,二是以PC机为基础的x86平台。开发板作为服务器负责帧数据的采集和传输,PC机作为客户端获取视频数据并显示和存储。

2.1 服务器工作流程

服务器(开发板)上电后,先启动服务器程序,程序启动后,服务器会启用udp服务,帮助提取服务器的网络信息。根据客户端发来的命令作相应处理。如果传输报文错误,则采用丢帧的方式进行处理。系统中的无线传输主要传输帧数据以及一些PC机与开发板交互的命令,概括来说,主要有以下几种交互方式:

(1)客户端发送“####”表示请求连接,服务器收到“####”后会等待接收用户命令。

(2)客户发送“GOON”表示请求服务器发送一帧数据,服务器收到该指令后会采集一帧数据,并且将该帧数据拆成多个包循环发送给客户端,直到发完为止。

(3)客户端发送“STOP”表示客户端即将退出,收到该命令,服务器不再为该客户服务。

服务器工作流程如图1所示。

2.2 客户端工作流程

在PC机上使用Qt搭建客户端。启动客户端程序后,输入服务器端口以及IP,点击连接,此时状态标签会显示当前连接的状态。如果连上,用户可以点击“start(开始)”按钮进行视频实时显示。如果用户点击“AVI(录制)”,视频则以AVI格式存储在家目录的相应目录下。客户端工作流程如图2所示。

客户端部分关键代码如下:

3 软件环境的搭建

嵌入式软件的开发工作一般都在PC机上完成,交叉编译后通过串口或者网口烧写到板子上,这就涉及到交叉编译工具链、串口调试工具以及nfs或tftp服务器的搭建。交叉工具链用于编译uboot、内核和应用程序等,以便生成适合于目标板系统的代码;串口调试工具是为了在PC端登录开发板,以便运行并调试程序;nfs或tftp服务器一般用于PC机与目标板之间的文件拷贝。在开发板上,需要烧写uboot、linux2.6.28版本的内核、cramfs文件系统、ubitfs文件系统以及相关的库和可执行文件,以下是软件环境的搭建步骤。

3.1 交叉编译工具链

要编译出arm平台的可执行代码,需要在PC机上安装交叉编译工具链。本设计中的系统处理器是armv6架构的,经过查阅相关的资料,发现早期的交叉编译器,例如,armlinux-gcc-3.4.1不支持armv6构架,因此需要使用更新的通用的交叉编译器,这里选用arm公司新推出的EABI编译器,即arm-none-linux-gnueabi-4.3.2。该编译器使用了新的glibc库2.8,并在编译器中预先安装好了各种需要用到的库文件,如编译qtopia时需要用到的jpeg,zlib,libts,libuuid等。首先,通过windows与linux下的共享文件夹把armnone-linux-gnueabi-4.3.2.tar.gz压缩包拷贝到linux下,解压;其次,在家目录下的.bashrc文件中编辑PATH路径,PATH =/home/zhang/arm-none-linux-gnueabi-4.3.2//=bin::$PATH;最后,在家目录下执行source.bashrc命令更新PATH,可以使用 which arm-linux-gcc命令来查看是否配置正确。

3.2 配置内核并重新编译

linux2.6.28发布的内核中没有USB摄像头驱动,并且WIFI模块的驱动部分不支持AP,需要重新编译内核源码将驱动加载进去,并重新烧写到开发板上。编译内核时,一些库和程序需要安装。进行安装时执行以下几条命令:

进行WIFI模块的内核相关配置。先添加固件,从网上下载helper_sd.bin和sd8686.bin两个固件复制到内核源代码目录下的firmware目录下,将helper_sd.bin改名为sd8686_helper.bin。然后进行网络支持的配置和网卡驱动支持的配置。

配置USB摄像头驱动。虽然使用的摄像头是非UVC的,但为了实现摄像头能即插即用,因此在配置USB驱动时,应使内核尽量支持多种摄像头。本设计中使用的是zc301的摄像头驱动支持和UVC摄像头驱动支持。

3.3 烧写uboot,kernel和文件系统

烧写在windows下执行,使用DNW进行烧写。需要安装DNW的USB驱动,可以从网上下载,也可以使用开发板自带的。

3.4 移植 wpa_supplicant

首先移植wpa_supplicant工具包。下载此工具包依赖的openssl库和 wpa_supplicant,并解压。进入 wpa_supplicant目录,将patch目录下的补丁文件openssl-0.9.8e-tls-extensions.patch拷贝到openssl目录:

cp openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/

其次进入openssl目录下执行一下命令来打补丁:

patch-p1<openssl-0.9.8e-tls-extensions.patch

最后执行 make,make install,这样就生成了openssl库,并且存放在/usr/local/ssl目录下。

接下来交叉编译wpa_supplicant。进入wpa_supplicant目录下,将该目录下的defconfig文件拷贝为.config文件,因为defconfig文件只是一个模板文件,里面所有的行都是注释,只供参考,只有将其拷贝为.config文件才能使用。对该文件进行修改,添加如下行:

3.5 nfs服务器搭建

由于使用的是在PC机上开发的编译程序,此程序需烧写到开发板上才能执行,所以需建立nfs服务器,在目标板上挂载进而来传输文件。在PC机上下载nfs服务器,修改配置文件,将PC机上的目录设为nfs共享目录,并且开放给所有能连接PC机的用户,开发板每次启动时执行:

mount-t nfs 192.168.1.103:/home/wang/nfs/nfs-o nolock

这样便将PC机的nfs目录挂载到了开发板的nfs目录上,其优点是放到PC机的nfs目录下的文件,可以从开发板的nfs目录下取出,十分方便。因为每次开机都要输入这个命令,所以把它写到脚本里命名为nfs.sh,每次开机后./nfs.sh挂载即可。

4 图形用户界面的实现

通过qtcreator进行可视化的Qt界面开发,可以减少工作量,提高开发的效率。界面的构成主要有:中央的视频显示窗口、四个按键(分别是“connect(连接)”“close(关闭)”“start(开始)”“stop(暂停)”)、一个状态标签(用于显示当前的连接状态以及一些出错信息等)、两个输入框(分别是IP和端口,在程序中已经用正则表达式规范了IP的书写方式,这样可以避免IP输入不合法)、一个AVI选择按钮(当选中时会进行视频的录制与保存)。基于Qt的界面设计显示结果如图3所示。

5 运行效果

启动服务器,点击客户端连接按钮,然后点击“start”按钮,进行视频捕获,实现视频数据的实时传输。客户端运行效果如图4所示。

6 结论

设计的基于物联网技术的视频监控系统,通过搭载zc301的USB摄像头和apm6658SDIO WIFI模块,以及在PC机上使用Qt进行图形界面开发,可以接收和显示采集到的每一帧图像,实现可视化监控的功能。而且根据用户需要还可以将视频以AVI格式进行保存。运行效果显示,本视频监控系统可对现场进行实时有效地监控,而且设计成本较低,易于组网,可扩展性强,运行稳定,具有较高的实用价值。

[1]娄德成,韦银.基于B/S架构的嵌入式远程视频监控系统的设计[J].微型电脑应用,2014,30(9):51-53.

[2]陈奕舟,吕勇,许远向,等.基于ARM9构架的热释电车载视频监控系统设计[J].北京信息科技大学学报,2014,29(1):82-84.

[3]刘涛,吕勇,毛海波.基于 Wi-Fi技术的无线视频监控系统设计[J].现代计算机,2015(1):49-52.

[4]江俊杰,王志明.基于X264的嵌入式视频监控系统设计[J].计算机工程与设计,2013,34(12):4109-4203.

[5]王溢琴,秦振吉,芦彩林.基于嵌入式的智能家居之视频监控系统设计[J].计算机测量与控制,2014,22(11):3623-3626.

[6]罗金玲,刘罗仁.基于ARM+Linux的物联网远程监控终端设计[J].计算机系统应用,2013,22(1):189-191.

猜你喜欢

开发板PC机内核
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
基于STM32H7的FDCAN通信系统设计与实现∗
微软发布新Edge浏览器预览版下载换装Chrome内核
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
浅析单片机开发板的设计与制作
基于单片机与PC机的电气量采集系统设计
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证