戚伟
摘要:随着网络技术的发展,带有视频传输功能的智能家居技术逐渐应用到家庭之中,本文从软硬件两个方面来讨论一种用于家庭环境的带有WiFi功能的视频处理板的设计与实现思路。本文主要从STM32F407A核心板模块、图像处理模块、WiFi通信模块这几个方面来说明该视频处理板的设计思路。
关键词:STM32F407A 图像处理 WiFi
中图分类号:TN957.51 文献标识码:A 文章编号:1007-9416(2016)06-0184-02
1 概述
随着网络技术和计算机技术的发展,“互联网+”的概念正在逐渐深入到人们生活的方方面面,“互联网+智能家居”这个概念也会改变我们的生活观念。“互联网+智能家居”会使我们无论在世界的那个角落,只要有互联网的存在,人们就能够控制家庭中的相关电器,观察家庭中的各个角落,甚至让热水器自动打开,电饭煲将米饭煮好。
“互联网+智能家居”的核心技术就在于具备网络接口的视频处理板的设计,本文主要介绍视频处理板的软硬件设计与实现。该视频处理板硬件模块大体上分为以下几块:STM32F407A核心板模块、WiFi通信模块、图像处理模块。视频处理板硬件系统的核心为STM32F407A 控制器,视频处理板与其他控制板之间的通信是通过 RS232 串口,为该控制系统的二次开发提供了良好的接口。图像采集模块和WiFi传输模块是通过 USB 接口连接视频处理板的。
2 视频处理板硬件的设计
2.1 STM32F407A处理器单元的设计
STM32F407A最小系统在视频处理板的设计中是非常关键的,系统的运行和稳定的基础就是最小系统设计的可靠性,这是整个系统的基础。首先要做的就是根据STM32F407A用户手册完成最小系统的搭建,在元器件的选配时,一定要选择稳定可靠的元器件,比如电阻、电容、晶振等。在最小系统完成后就可以根据视频处理板的设计需求逐步添加系统的外设,实现系统的特定功能,比如移植相应的操作系统,相应外围电路扩展,相应外部设备编写驱动程序、以及编写应用程序等,然后对整个系统进行调试。
在最小系统设计好的前提下,为了能够使STM32F407A的功能得到进一步的完善,设计将带有该芯片的最小系统以及其他比较关键核心部件(比如存储器等)封装在一块尺寸小、通用性强的电路板上,我们称其为核心控制板。该核心板设计的好与坏将会影响到STM32F407A 的发挥和与 CPU 的通信效率。在最小系统和核心控制板设计的基础上,我们把相关的外部设备设计到一起,即完成了视频处理板的设计。
2.2 视频采集模块设计
视频处理板的主要用途之一是对家庭中各种情况进行摄像,能够通过PTZ实现水平360,垂直180的监控,相关视频处理算法的具体实现是由摄像机的选择和其工作方式来决定。Linux 内核驱动已经支持的摄像机的驱动有很多,比如比较常用的 ov511芯片,但这些摄像机对于视频处理板的使用上并不是很理想。视频处理板系统采用的是型号是DS-2CZ2152P(N),提供了摄像机的解决方案,除了视频处理功能外,关键是通过RS485总线能实现对其变焦。
摄像机通过主控板上的接口与视频处理板相连,采用12V供电,电源是通过主控板来提供的。该摄像机的相关驱动 Linux 内核里面还不支持,为了使该一体摄像机能够在Linux 系统中正常工作,需要获取相关的驱动内核源码之后进行修改,然后加载该驱动即可实现对于该摄像机的控制编程。
2.3 WiFi 网络传输模块设计
视频处理板的移动特性决定了视频处理板不可能采用常规的通过RJ45实现的网络双绞线有线数据传输。在这里 PC 机与视频处理板之间的通信的方案就是基于无线路由器来实现的网络传输,WiFi(Wireless Fidelity,WiFi)应该是该视频处理板采用了一种相对来讲比较可行的和可靠的无线传输模式。
视频处理板主板采用 WiFi 无线方式连接到家庭中使用的无线路由器,然后通过Internet将无线路由器获取的信息传输到远端的PC 机,这样家庭中的人员通过客户端的软件来实现对家庭环境的监控。另外通过摄像机可实现抓拍图像并识别,并同时根据客户端监控软件的需求,完成相应的动作,主要是抓拍、录像、变焦等。根据该视频处理板系统的需求,最终选择的无线网络互连设备为TPLINK-WR841N。
3 视频处理板软件设计
视频处理板的系统软件主要由以下几个部分组成:加载程序的引导、内核程序、根文件系统、应用程序。Bootloader的开发工具是由ADS来完成的,其功能主要包括以下内容:硬件初始化,引导和加载内核映像。Linux操作系统功能实现主要包含以下几个方面:实现对于进程的调度和通信、管理系统内存,管理文件系统,硬件驱动程序是建立实现其他功能的基础。该项目在设计系统中需要加载Linux内核的驱动主要有以下方面:摄像机的USB驱动,无线网卡驱动。构建和移植嵌入式Linux操作系统过程分析如下。
3.1 视频处理板移植嵌入式Linux环境的搭建
在本文中,利用一台PC机作为主机,然后在主机上安装VMWARE虚拟机,在虚拟机上安装RedHat Linux 9.0,该方案在RedHat Linux 9.0环境下使用vi文本编辑器,然后通过Linux-GCC交叉编译工具进行相关内容的编译,通过安全的CRT终端的COM端口将交叉编译程序写入开发板中。本设计用来编译引导程序、内核、文件系统和应用程序采用的是Linux-GCC-4.1.2的版本,通过终端程序将目标代码安全烧入目标机。该Linux系统采用的版本是u-boot -1.1.6 的引导程序和Linux -2.6.31作为该视频处理板的嵌入式操作系统。主机和目标机使用完成后的软件开发环境,可以在程序的基础上进一步的发展和完善该视频处理板控制系统软件。
系统启动代码(Bootloader)写入,引导加载程序是操作系统内核运行之前运行的小程序。引导加载程序的主要功能是将硬件设备进行初始化,然后建立内存空间的映射图,从而为最终调用操作系统内核准备好相应的环境。
3.2 USB设备驱动程序的编写
USB是通用COM总线的简称。最新的USB规范修订后理论上USB的传输速率最高可达480Mbps的高速连接。主要类型的USB驱动程序在Linux内核中是支持的,分别为:驱动程序的主机系统和设备驱动程序。从主机的角度来看(是普通PC的一个主机),当主机系统的USB设备驱动控制器插入USB设备之后,USB设备驱动程序的功能是控制设备如何作为一个USB设备从而实现和主机的通信。
USB驱动程序存在于不同的内核子系统和USB硬件控制器,USB核心提供了一个硬件的访问和控制USB接口的USB驱动,而无需考虑当前系统中存在的各种不同类型的USB硬件控制器。USB是一个非常复杂的设备,Linux内核为我们提供了一个核心,称为USB子系统来处理最复杂的部分。USB设备包括配置,接口和端点,USB设备绑定到接口,而不是整个USB设备。
3.3 摄像机USB的驱动程序的开发
Linux设备驱动程序所在的位置是集成在内核中,其主要功能是实际处理并且操作硬件控制器的软件。从本质上意义来讲,驱动器是存储在共享库的永久存储器中低层次的硬件处理程序,设备驱动程序是抽象处理设备;也意味着,设备驱动程序是一个内核比较高的特权级别,其具备永久的记忆,并且可以由底层共享硬件处理程序。Linux设备驱动程序与外界接口的构成是由以下三个部分构成的:(1)驱动程序接口和内核;(2)系统引导与驱动程序接口;(3)设备接口和驱动程序。
摄像机USB的驱动程序的源代码的实现是通过以下五个方面来完成的:(1)初始化设备模块;(2)上层软件接口模块;(3)数据传输模块;(4)USB内核的支持;(5)完成测试。
在临时目录中保存相应的命名图片,这样就标志着已经成功的加载了摄像机USB驱动,图片的处理就可以通过相应的命令来实现了。
3.4 TL- WR841N WiFi无线路由器驱动程序的编写
视频处理板采用的WiFi无线路由器的型号是 TL- WR841N,这个路由器的核心所使用的是Atheros AR7240。具体实现过程如下:
(1)解压缩下载的压缩包,在drivers/usb/net/创建一个文件夹AR7240,采用如下命令:#mkdir drivers/usb/net/AR7240,Module 下的文件最终要拷贝到AR7240;(2) Makefile 文件的配置进行修改,复制Makefile.6下的Makefile文件,使用正确的编译器对Makefile 进行编译,同时修改其 Linux 内核路径;(3)修改Kconfig 配置文件加入以下项:在文件夹Makefile中加入obj-$(CONFIG_AtherosAR7240)+=AtherosAR7240/;然后congfig AR7240->tristate support AR7240;(4)重新配置内核:#make menu config;(5)配置 busybox;(6)将内核映像文件编译,让后将其移植到视频处理板中,启动Linux内核,连接无线路由器,完成相应的连接,通过Ping命令完成连接效果测试。
3.5 视频相关程序的编写
3.5.1 视频数据
Video4Linux(Video For Linux)是V4L的全称, 视频图像采集设备的应用程序的接口就是V4L要实现的具体功能,具体来讲是两点,第一个是视频设备信息的获取,第二个功能是图形信息的处理。应该说V4L是在Linux中编写驱动程序和相关驱动程序的基础,其提供了最重要的接口函数。在Linux中视频设备是被当做具体的文件来看待的,其完整路径的设备文件名为:/DEV/VIDEO。视频设备的驱动被开发之后,加载到内核中后,要想实现图像和视频的采集,调用 V4L 的应用程序编程接口就可以了,要想进行进一步的设计,一般将Video4Linux分为两层,分别是上层的API 函数和下层的视频设备的驱动。
摄像机视频数据的采集,首先要将USB摄像机和系统的控制板连接,这样通过控制板给该摄像机上电,系统启动驱动程序,然后读取摄像头相关信息,下一步就可以进行视频图像的采集了,除了加载驱动之外还需要编写一个与视频图像采集相关的应用程序。
3.5.2 压缩视频程序
图像数据未经压缩需要的存储空间会很大,而视频处理板不光要进行图像数据的存储,然后还需要将数据图像进行传输,因为图像的传输量比较大,一个摄像机的单位时间需要传输3.5MB的数据量,这么大的数据量是需要利用相应的压缩算法的。JPEG是一种很成熟的视频编码格式,其本质上采用的是DTC自适应变换编码算法,是ISO/IEC的静止图像压缩标准,本设计最终采用JPEG的有损压缩模式。
3.5.3 视频传输程序
视频处理板通过摄像机获取的信息是要通过网络传输的,而系统使用的是网络视频监控,最终要实现将数据传输至互联网,本视频处理板的网络传输协议采用的是TCP/IP协议。IP地址是32位二进制组成的互联网的地址,是网络间客户端进行通信的唯一标识。
TCP协议进行三次握手协议实现了传输层上的数据通信,Socket接口实现了该协议的相关的API,Linux下支持多种套接字socket。
4 结语
本文主要讨论了一种视频处理板的具体实现过程。从软件和硬件两个角度进行分析,硬件上主要包含STM32F407A处理器单元的设计、视频采集模块设计、WiFi 网络传输模块设计的硬件构成,从软件方面包括视频处理板的Linux操作系统相关软件的搭建,USB设备驱动程序的编写,摄像机USB的驱动程序的开发,TL- WR841N WiFi无线路由器驱动程序的编写,视频相关程序的编写方面的具体实现过程。
参考文献
[1]西刹子.智能网络视频监控[M].北京:清华大学出版社,2010,2:330-331.
[2]郝卫东.基于Linux的嵌入式网络视频监控系统研究与设计.计算机系统与应用,2007(6).
[3]刘永安.基于ARM的智能家居控制系统.西南交通大学,2009.