裘 超,孟宪超,常 帅
(西北工业大学 电子信息学院,陕西 西安 710072)
智能家居又称为智能住宅,在国外常用Smart Home表示。与智能家居含义近似的有家庭自动化(Home Automation)、电子家庭(Electronic Home、E-home)、数字家园(Digital Family)、家庭网络(Home Net/Networks for Home)、网络家居(Network Home)、智能家庭/建筑(Intelligent Home/Building)等[1]。
智能家居系统利用先进的计算机技术、网络通讯技术、综合布线技术将与家居生活有关的各种子系统有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全。智能家居可以提供全方位的信息交换功能,帮助家庭与外部保持信息交流通畅,优化人们的生活方式,增强家居生活的安全性,甚至为各种能源费用节约资金。
智能家居是利用先进的计算机技术、嵌入式系统和网络通讯技术,将家庭中的各种设备(如照明系统、环境控制、安防系统、网络家电)通过家庭网络连接到一起的,自从美国在1984真正的智能建筑出现以来,国外已经有将近30年的研究历史,而国内在这方面的研究相对较晚,从2003年才逐步应用于高端市场,而且标准不统一,如海信、海尔、清华大学等大家各自为营。由于智能家居系统具有安全、方便、高效、快捷、智能化和个性化的独特魅力,使得智能家居的开发与建设成为21世纪科技发展的必然趋势。随着全球对能源和环境的要求越来越高,而智能家居在节能方面的效果优势非常明显,因此具有非常广阔的市场前景。
本项目所使用开发板为Real6410开发板,采用三星公司的ARM11内核的处理器S3C6410。开发板上还集成了123 M的DDR内存以及1 GB NandFlash,同时预留了256 k NorFlash。底板上还提供两个四线 RS-232串口,一个USB HOST接口,一个10 M/100 M自适应以太网接口等外设[2]。
目前,各种智能家居系统的设计多以有线为主,但有线技术并不适用于智能家居的普及,安装难度大以及价格昂贵的缺点限制了其发展。因此无线通信技术应用到智能家居中必将成为将来的发展趋势和潮流。
本项目对家居设备通过Zigbee进行无线组网,把家居设备的信息和数字视频传输到因特网网络上,在因特网上设立一个“无线视频网关”WEB服务器,可供外部访问;将家居信息如温度进行实时的显示并进行后续的利用控制;同时将收集各处传输进来的数字视频进行后续的处理和识别。
本项目主要完成智能家居的环境变量和视频信号的监控。整个系统包括一块ARM11开发板,一个16位单片机,2个USB的CMOS摄像头;一台PC机(运行客户端的监控程序)根据功能的不同,整个系统可划分由视频采集模块、数据压缩、编码模块和视频监控PC等组成。采集模块包括USB摄像头;数据的压缩编码由ARM11处理器完成;视频监控PC完成视频客户端的功能;PC机完成对开发系统的程序开发、调试等。图1为系统的组成结构。
图1 系统组成结构Fig.1 System composition
整个智能家居系统的设计可分为两大部分:
1)WEB服务器端设计;
2)客户机终端监控软件的设计。
3.2.1 WEB服务器端设计
首先为ARM开发板定制一个合适的Linux内核 (内核版本:Linux 2.6.28),然后对其进行裁剪,使其具有基本内核功能,同时保留TCP/IP协议栈,串口协议以及相应的视频编解码模块,使系统利用尽量少的硬件资源来满足任务的处理工作。然后是开发一个运行于Linux下的WEB服务器程序,其实现的基本功能是通过USB摄像头的图像数据采集,完成对视频信息的获取、压缩和编码 (具体的编码标准为当前较为流行的 H264编码)。然后通过TCP/IP协议将数据打包发送到网络,同时利用Socket实现服务器监听功能,这样就可以接受来自客户机的监控请求。具体的工作内容如下:
1)USB摄像头的驱动程序移植;
2)H264视频编码程序移植;
3)视频采集和传输的应用程序的设计;
4)通过Zigbee获取传感器相关信息。
图2为WEB服务器的工作流程,图3为ARM通过网页采集的视频图像,其IP地址为:168.192.1.1:8080,此视频即可以通过网页显示,也可以通过相应基于 I386或Linux的监控软件进行查看[3]。
图2 WEB服务器工作流程图Fig.2 WEB server work flow chart
图3 ARM通过网页采集的视频信息Fig.3 Video information collected through the Web
3.2.2 客户机终端监控软件设计
客户机终端监控软件采用MFC编写,可实现来自WEB服务器端的实时视频预览、视频录制、视频截图及传感器参数的实时显示等功能。程序采用多线程技术:一个线程进行视频信息的解码和播放功能,另一个线程实现视频录制功能。
另外还采用了视频信息叠加的方法,可以对环境变量进行屏幕叠加,能在录制时完成信息的录制和再现。图4为终端监控软件。
图4 客户机终端监控软件Fig.4 Terminal monitoring software
Zigbee是IEEE 802.15.4协议的代名词。根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。IEEE-802.15.4规范是一种经济、高效、低数据速率(<250 kbps)、工作在2.4 GHz和868/928 MHz的无线技术,用于个人区域网和对等网络[4]。本项目使用Zigbee完成传感器信息的传输。传感器信息由一端Zigbee接收后发送至另一端Zigbee,然后传入RS232串口中。具体传输模型如图5所示。
图5 传感器信息通过Zigbee传输模型Fig.5 Zigbee transport model
DirectShow是微软公司在ActiveMovie和Video for Windows的基础上推出的新一代基于COM(Component Object Model)的流媒体处理的开发包。DirectShow技术对处理图像序列或用摄像机捕获的序列尤其有用。本项目使用VC开发基于DirectShow技术实现视频采集。通过#pragma comment(lib, "winmm.lib")链接静态库 winmm.lib,便可以实现windows多媒体编程。
智能家居系统客户机监控软件采用MFC编写。其中关键技术包括多线程以及Socket()。
监控软件中包括previewVideo线程 (通过函数UINT previewVideo(LPVOID videoCtl)实现)实现视频的预览功能以及 recordVideo线程 (通过函数 UINT recordVideo(LPVOID videoCtl)实现)实现视频录制功能。打开摄像头后通过AfxBeginThread (previewVideo,&m_video)函 数启动 preview Video视频预览线程,用户便可以通过监控软件预览视频图像。当用户点击录制视频按钮时,首先通过函数SuspendThread(pVideoThread->m_hThread)挂起 previewVideo视频预览线程,然后通过函数AfxBeginThread(recordVideo,&m_video)启动recordVideo视频录制线程。当用户点击停止录制按钮时,软件通过函数ResumeThread(pVideoThread->m_hThread)恢复previewVideo视频预览线程。终端监控软件通过previewVideo线程以及recordVideo线程便能很好的实现客户机的视频预览和视频录制功能。线程模型如图6所示。
图6 线程模型Fig.6 Threading model
智能家居系统使用Socket()实现客户机与服务器之间的通信。通过USB摄像头采集数据,对数据进行获取、压缩和编码后通过TCP/IP协议将数据打包发送到网络,同时在服务器端创建Socket()进行监听,来接受客户机的请求。当客户机发送connect()连接请求后,服务器通过 accept()接收客户机连接请求。然后服务器与客户机之间通过send()函数和recv()函数实现发送、接收数据。Socket()通信模型如图7所示。
图7 Socket通信模型Fig.7 Socket communication model
为了减少网络传输和系统的压力,在视频采集端,每采集一次图像就对采集的数据进行一次处理。该函数设定一个图像发生变化的阈值c_limit,然后将图像所有像素之差与阈值c_limit进行比较,如果大于阈值c_limit,则认为图像发生了变化,否则即认为没有变化,则不将该次采集的图像数据写入JPEG文件保存,这样可以极大地提高视频存储的能力,同时减少各资源的浪费。
OpenCV是Intel公司面向应用程序开发者开发的计算机视觉库,其中包含大量的函数用来处理计算机视觉领域中常见的问题,例如运动分析和跟踪、人脸识别、3D重建和目标识别等。
在openCV函数可编程过程中,CvSize和IpImage是两个比较常用的结构。CvSize结构表示矩形尺寸的结构,结构中分别定义了矩形的宽度和高度。IpImage结构主要针对视觉方面处理[5]。
软件实现中首先通过函数IpImage*cvCreateImage(cvSize(img->width,img->height), 8, 1 )为图像分配内存,然后使用函数 cvCvtColor(img,gray,CV_BGR2GRAY )将 RGB图像转为灰度图像。为了让输入图像大小相同通过cvResize(gray,small_img,CV_INTER_LINEAR)对图像进行缩放,函数cvEqualizeHist(small_img,small_img)实现灰度图像直方图均衡化。然后利用函数cvHaarDetectObjects(small_img,cascade, storage1,1.1, 2, CV_HAAR_DO_CANNY_PRUNING,cvSize(30,30))对图像进行脸部检测,最后利用函数cvGetSeqElem、cvRound、cvCircle将脸部用圆圈标示。图8为脸部检测效果图。
图8 脸部检测效果图Fig.8 Face detection
项目社会和经济效益分析。
主要用途和应用范围:1)对机要部门的监视、控制和报警,如档案室、文件室、金库、博物馆等;2)工厂、市场等的监视,如工厂生产过程、市场、营业厅、展览厅、货场等的监视;3)对交通运输的监视,如公共交通、铁路车站、铁路调度等的监视;4)用于安全报警,如防盗、防火等的报警;5)在安全身产方面的应用,如煤矿等。
经济效益:随着人们生活水平的提高,大家对智能家居的需求越来越高,而作为中国房地产的配套产业,中国的智能家居经过多年发展,已成为一个集控制、计算机、家电等多种新技术为一体的新兴产业。但是,由于市场不规范、行业标准不完善,市场发展并不是很成熟,如今还处于群雄逐鹿的“战国时代”。具有很大的市场潜力。
社会效益:随着哥本哈根会议和“十二五规划”当前,当低碳减排已成为一项国家行动,而智能家居在这方面有自己的优势。其不仅智能而且节能,具有较高的社会效益.。
[1]马菁菁.Zigbee无线通信技术在智能家居中的应用研究[D].武汉:武汉理工大学,2007.
[2]华天正科技.Real6410用户手册[S].2010.
[3]广州友善之臂计算机科技有限公司.基于Mini2440通过网络浏览和控制CMOS或USB摄像头[S].2009.
[4]金纯.Zigbee技术基础及案例分析[M].北京:国防工业出版社,2008.
[5]刘瑞帧,于仕琪.OpenCV教程基础篇[M].北京:北京航空航天大学出版社,2007.
[6]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2008.
[7]程仙送.基于Zigbee的无线外设控制器设计与实现 [D].武汉:武汉理工大学,2007.
[8]薛繁平.DSP网络视频监控及OpenCV在DSP平台的移植[D].厦门:厦门大学,2009.
[9]程哲,陈和平.基于OpenCV的运动目标检测技术[J].四川兵工学报,2009(11):1-3,6.CHENG Zhe,CHEN He-ping.Detection technologyof moving target based on openCV[J].Journal of Sichuan Ordnance,2009(11):1-3,6
[10]柴树杉 .基于OpenCV的汉字绘制研究[R].北京:计算机工程与设计,2008.