对基于ZigBee 技术对嵌入式Web 的
智能家居远程
监控系统进行研究和设计。对家居设备通过Zigbee 进行无线组网,把家居设备的信息和数字视频传输到因特网网络上,在因特网上设立一个"无线视频网关"WEB 服务器,可供外部访问;实现将家居信息如温度进行实时的显示并进行后续的利用和控制;同时将收集各处传输进来的数字视频信息进行后续的处理和识别。如入侵检测,人脸检测和识别等。
智能家居又称为智能住宅, 在国外常用Smart Home 表示。与智能家居含义近似的有家庭自动化(Home Automation)、电子家庭(ElectrONic Home、E-home)、数字家园(Digital Family)、家庭网络(Home Net/Networks for Home)、网络家居(NetworkHome)、智能家庭/建筑(Intelligent Home/Building)等。
智能家居系统利用先进的计算机技术、网络通讯技术、综合布线技术将与家居生活有关的各种子系统有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全。智能家居可以提供全方位的信息交换功能,帮助家庭与外部保持信息交流通畅,优化人们的生活方式,增强家居生活的安全性,甚至为各种能源费用节约资金。
1 项目概述
1.1 智能家居发展概况
智能家居是利用先进的计算机技术、嵌入式系统和网络通讯技术,将家庭中的各种设备(如照明系统、环境控制、
安防系统、网络家电)通过家庭网络连接到一起的,自从美国在1984 真正的智能建筑出现以来, 国外已经有将近30 年的研究历史,而国内在这方面的研究相对较晚,从2003 年才逐步应用于高端市场,而且标准不统一,如海信、海尔、清华大学等大家各自为营。由于智能家居系统具有安全、方便、高效、快捷、智能化和个性化的独特魅力,使得智能家居的开发与建设成为21 世纪科技发展的必然趋势。随着全球对能源和环境的要求越来越高,而智能家居在节能方面的效果优势非常明显,因此具有非常广阔的市场前景。
1.2 开发板主要参数
本项目所使用开发板为Real6410 开发板,采用三星公司的ARM11 内核的处理器S3C6410.开发板上还集成了123 M的DDR 内存以及1 GB NandFlash, 同时预留了256 kNorFlash.底板上还提供两个四线RS-232 串口, 一个USBHOST 接口,一个10 M/100 M 自适应以太网接口等外设。
2 主要研究内容
目前,各种智能家居系统的设计多以有线为主,但有线技术并不适用于智能家居的普及,安装难度大以及价格昂贵的缺点限制了其发展。因此无线通信技术应用到智能家居中必将成为将来的发展趋势和潮流。
本项目对家居设备通过Zigbee 进行无线组网, 把家居设备的信息和数字视频传输到因特网网络上,在因特网上设立一个"无线视频网关"WEB 服务器,可供外部访问;将家居信息如温度进行实时的显示并进行后续的利用控制;同时将收集各处传输进来的数字视频进行后续的处理和识别。
3 项目总体设计方案
3.1 系统总体方案设计原则
本项目主要完成智能家居的环境变量和视频信号的监控。整个系统包括一块ARM11 开发板,一个16 位单片机,2个USB 的CMOS 摄像头;一台PC 机(运行客户端的监控程序)根据功能的不同,整个系统可划分由视频采集模块、数据压缩、编码模块和
视频监控PC 等组成。采集模块包括USB摄像头; 数据的压缩编码由ARM11 处理器完成; 视频监控PC 完成视频客户端的功能;PC 机完成对开发系统的程序开发、调试等。图1 为系统的组成结构。
图1 系统组成结构
3.2 系统各部分结构功能及设计
整个智能家居系统的设计可分为两大部分:
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 的监控软件进行查看。
图2 WEB 服务器工作流程图
图3 ARM 通过网页采集的视频信息
 
3.2.2 客户机终端监控软件设计
客户机终端监控软件采用MFC 编写, 可实现来自WEB服务器端的实时视频预览、视频录制、视频截图及传感器参数的实时显示等功能。程序采用多线程技术:一个线程进行视频信息的解码和播放功能,另一个线程实现视频录制功能。
另外还采用了视频信息叠加的方法,可以对环境变量进行屏幕叠加,能在录制时完成信息的录制和再现。图4 为终端监控软件。
图4 客户机终端监控软件
4 项目关键技术
4.1 传感器信息通过Zigbee 传输
Zigbee 是IEEE 802.15.4 协议的代名词。根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。IEEE-802.15.4 规范是一种经济、高效、低数据速率(<250 kbps)、工作在2.4 GHz 和868/928 MHz 的无线技术, 用于个人区域网和对等网络。本项目使用Zigbee 完成传感器信息的传输。传感器信息由一端Zigbee 接收后发送至另一端Zigbee,然后传入RS232 串口中。具体传输模型如图5 所示。
图5 传感器信息通过Zigbee 传输模型
4.2 DirectShow 视频采集
DirectShow 是微软公司在ActiveMovie 和Video forWindows 的基础上推出的新一代基于COM (ComponentObject Model)的流媒体处理的开发包。DirectShow 技术对处理图像序列或用摄像机捕获的序列尤其有用。本项目使用VC 开发基于DirectShow 技术实现视频采集。通过#pragmacomment(lib, "winmm.lib")链接静态库winmm.lib,便可以实现windows 多媒体编程。
4.3 多线程技术及Socket
智能家居系统客户机监控软件采用MFC 编写。其中关键技术包括多线程以及Socket()。
监控软件中包括previewVideo 线程( 通过函数UINTpreviewVideo(LPVOID videoCtl)实现)实现视频的预览功能以及recordVideo 线程( 通过函数UINT recordVideo (LPVOIDvideoCtl) 实现) 实现视频录制功能。打开摄像头后通过AfxBeginThread (previewVideo,&m_video) 函数启动previewVideo 视频预览线程, 用户便可以通过监控软件预览视频图像。当用户点击录制视频按钮时, 首先通过函数SuspendThread(pVideoThread->m_hThread)挂起previewVideo视频预览线程, 然后通过函数AfxBeginThread(recordVideo,&m_video)启动recordVideo 视频录制线程。当用户点击停止录制按钮时, 软件通过函数ResumeThread (pVideoThread->m_hThread)恢复previewVideo 视频预览线程。终端监控软件通过previewVideo 线程以及recordVideo 线程便能很好的实现客户机的视频预览和视频录制功能。线程模型如图6所示。
图6 线程模型
 
智能家居系统使用Socket()实现客户机与服务器之间的通信。通过USB 摄像头采集数据,对数据进行获取、压缩和编码后通过TCP/IP 协议将数据打包发送到网络,同时在服务器端创建Socket()进行监听,来接受客户机的请求。当客户机发送connect()连接请求后,服务器通过accept()接收客户机连接请求。然后服务器与客户机之间通过send()函数和recv()函数实现发送、接收数据。Socket()通信模型如图7 所示。
图7 Socket 通信模型
4.4 入侵检测功能实现
为了减少网络传输和系统的压力,在视频采集端,每采集一次图像就对采集的数据进行一次处理。该函数设定一个图像发生变化的阈值c_limit,然后将图像所有像素之差与阈值c_limit 进行比较,如果大于阈值c_limit,则认为图像发生了变化,否则即认为没有变化,则不将该次采集的图像数据写入JPEG 文件保存,这样可以极大地提高视频存储的能力,同时减少各资源的浪费。
4.5 利用openCV 库实现人脸检测
OpenCV 是Intel 公司面向应用程序开发者开发的计算机视觉库,其中包含大量的函数用来处理计算机视觉领域中常见的问题,例如运动分析和跟踪、人脸识别、3D 重建和目标识别等。
在openCV 函数可编程过程中,CvSize 和IpImage 是两个比较常用的结构。CvSize 结构表示矩形尺寸的结构,结构中分别定义了矩形的宽度和高度。IpImage 结构主要针对视觉方面处理。
软件实现中首先通过函数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 脸部检测效果图
5 结束语
项目社会和经济效益分析。
主要用途和应用范围:1)对机要部门的监视、控制和报警,如档案室、文件室、金库、博物馆等;2)工厂、市场等的监视,如工厂生产过程、市场、营业厅、展览厅、货场等的监视;3)对交通运输的监视,如公共交通、铁路车站、铁路调度等的监视;4)用于安全报警,如防盗、防火等的报警;5)在安全身产方面的应用,如煤矿等。
经济效益:随着人们生活水平的提高,大家对智能家居的需求越来越高,而作为中国房地产的配套产业,中国的智能家居经过多年发展,已成为一个集控制、计算机、家电等多种新技术为一体的新兴产业。但是,由于市场不规范、行业标准不完善,市场发展并不是很成熟,如今还处于群雄逐鹿的"战国时代".具有很大的市场潜力。
社会效益:随着哥本哈根会议和"十二五规划" 当前,当低碳减排已成为一项国家行动,而智能家居在这方面有自己的优势。其不仅智能而且节能,具有较高的社会效益