基于ARM的智能家居系统设计方案1.系统综述智能家居(SmartHome)是以住宅为平台,利用综合布线技术、网络通信技术、安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务管理系统,以提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。衡量一个智能家居系统的成功与否,并非仅仅取决于智能化系统的多少、系统的先进性或集成度,而是取决于系统的设计和配置是否经济合理并且系统能否成功运行,系统的使用、管理和维护是否方便,系统或产品的技术是否成熟适用,换句话说,就是如何以最少的投入、最简便的实现途径来换取最大的功效,实现便捷高质量的生活。智能家居通常包括以下子系统:访问/控制系统通过电脑、手持终端等设备了解家中状况,对设备进行控制。门禁系统门禁系统主要包括以下功能,室外监控功能:当门口有异响自动提示,能在家中或远程看到外面情况;拍照存档功能:当家中没人且有人按动门铃,便自动拍照存储,方面房屋主人查询;可视对讲功能:有客来访,可自由通话,并能看到外面情况,并能控制门锁的打开关闭;远程开锁功能:可以通过Internet网,在任何地方开启家里的门锁。视频监控系统视频监控的基本功能主要有:远程监控:可以进行实时本地和远程网络监控;远程控制:可以实现远程对设备的各种控制,可以对图像质量,分辨率,图像缩放进行操作,可以对云台的移动方向进行控制;视频存储:能够将视频数据本地存储,能够在任何时候对这些数据进行回放;移动侦测:布防后能够发现移动的物体并报警。门窗控制系统可以在室内任何位置以及远程对门窗以及窗帘进行打开关闭操作。具备自动防风防雨功能,当检测到下雨刮风时,自动关闭窗户。同时能与环境检测系统联动,当发现室内空气环境不好或者发现可燃气体时能自动开窗通风。入侵检测功能能够及时发现暴力入侵情况,并向安防系统发送报警信号。家电控制系统通过ZigBee/红外转发器,以红外遥控和电源控制相结合的方式对传统家电(如:电视机、空调、冰箱、电饭煲、淋浴器、微波炉等)进行控制以及状态查询。同时对家中总电源以及各个电源接口进行打开关闭的操作,实现对部分家电的控制,同时可杜绝家电待机耗电情况。环境检测系统环境监测系统主要对家庭内部环境数据进行监测。包括:温度监测、可燃气体监测、火灾监测、空气质量检测等等。并能与安防系统联动,出现异常情况时能够及时报警。智能家居系统示意图2.平台选择2.1控制系统平台选择智能家居的控制系统是智能家居的核心组成部分,相当于整个智能家居系统的神经中枢,因此系统平台的选择对于项目成功与否至关重要。嵌入式处理器有众多的架构和种类,不同的处理器从性能到成本以及总线接口、外围电路各有不同。目前,采用ARM体系的微处理器已经遍布在消费电子、工业控制、通信、网络等领域。据统计,基于ARM体系结构的嵌入式微处理器占据了RISC类型处理器75%以上的市场份额。在全球范围内,使用ARM授权生产微处理器芯片的厂商多达数十家,就连众所周知的芯片巨头英特尔公司在通信领域也开发了基于ARM体系结构的微处理器。基于本项目高性能,低功耗,低成本的要求,本项目采用基于ARM的嵌入式系统。由于本系统主要目的是用于实验验证,因此采用时下流行的树莓派(RaspberryPi)作为控制系统开发平台。树莓派是专为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,自问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。树莓派外表虽然“娇小”,内“心”却很强大,视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。树莓派功能示意图2.2客户端平台选择智能家居客户端主要指用户操作界面及其软件系统,包括完整的智能家居控制界面,具备无线编码学习功能和个性化情景模式,用户可以通过配置,来实现自定义的智能家居体验。据调研机构StrategyAnalytics最新的报告显示,Android以83.6%的市场占有率稳居移动操作系统市场之首。为了最大限度的运用市场上现有的资源,本系统首先开发基于Android的智能家居远程客户端。3.硬件设计方案3.1控制系统硬件设计方案由于该系统主要用于实验验证,硬件设计上以简单为主,主要包括一下几个模块:主控系统:树莓派开发板(RaspberryPiModelB+)监视系统:USB摄像头(罗技Pro5000)家电模拟系统:控制器(单片机AT89C51)、模拟家电(LED灯)、模拟传感器(按键)通信系统:Wi-Fi模块(联想2代B型迷你无线网卡)控制系统硬件示意图3.2客户端硬件设计方案客户端需支持市面上主流Android手机。4.软件设计方案4.1控制系统软件设计方案控制系统软件设计包括两个方面:一是嵌入式操作系统,另一个是嵌入式服务器软件。在选择嵌入式操作系统的时候,首先要考虑到对硬件系统的支持,由于ARM处理器的应用非常广泛,目前的主流嵌入式操作系统对ARM体系结构的处理器都提供良好的支持。其次要考虑嵌入式操作系统的可移植性,可移植性良好的操作系统,可以在不同平台、不同硬件系统上运行,从而可以减少或避免以后代码的移植工作,降低开发工作的难度。最后考虑到需要快速、低成本、高质量的完成用户的需求,对嵌入式操作系统的可利用资源和成本的考虑也十分重要。对于嵌入式服务器软件的选择,首先考虑本系统主要面向家庭,因此访问量很小,不需要复杂的功能,但当出现紧急情况时要求尽快相应,对实时性有一定要求。因此需要选择一款功能简单、体积小、占用资源少、速度快的服务器;其次由于服务器需要长时间稳定运行,因此对可靠性有较高的要求;最后由于控制系统运行着系统中各个模块的控制程序,这些程序需要浏览器通过CGI接口进行调用返回,因此服务器必须支持CGI调用。基于以上原因,本例选择嵌入式Linux系统+Boa嵌入式服务器作为控制系统软件设计方案。Linux系统是1991年由芬兰人LinusTorvalds发明的,从诞生到现在的短短十几年的时间,Linux获得了飞速的发展尤其是在嵌入式操作系统领域。嵌入式Linux是指对标准Linux进行小型化裁剪处理,可固化在存储器或单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。Boa是一个小型WebServer,系统兼容性好,可在多数Unix系统中运行,特别适合在嵌入式的场合中使用。它是一个单任务的HTTP服务器,如果有两个用户同时访问它,那么其中的一个用户必须等待片刻,它产生独立的进程来处理CGI程序,因此占用较少的系统资源。Boa的优点在于其快速性和可靠性而且完全免费。控制系统软件架构示意图4.2客户端软件设计方案本文采用的客户端软件基于时下流行的Android移动操作系统,即基于Android的智能家居远程客户端。基于Android的智能家居远程客户端是通过Android智能家居软件控制的以通信网络为纽带的智能家居远程控制系统,用来实现对用户家庭智能家居系统及其设备的远程控制,其基本思想是实现智能控制、分类操作、分级管理、配置灵活。Android智能家居远程客户端按功能可划分为五部分:登陆控制单元、信息存储单元、智能控制单元、智能情景模式及人机界面。客户端软件架构示意图5.实施步骤5.1嵌入式开发环境搭建(简要介绍)嵌入式开发环境搭建主要包括:宿主机(PC)系统的安装配置(Ubuntu14.04)NFS服务配置(使目标机和宿主机共享文件)交叉编译器安装(在宿主机上进行程序的开发和编译工作,在目标机中执行)5.2控制端软件设计5.2.1嵌入式Linux内核配置与编译Linux内核配置的内容有数百项之多,想要完全了解非常困难也没有必要。本文只介绍一下内核配置编译的一般步骤。内核下载首先需要下载Linux源代码压缩包。一般从Linux官方网站下载,然后将压缩包解压到指定目录下;编译配置修改修改源码树根目录下的Makefile文件中ARCH:=armCROSSCOMPILE:=arm-linux-两个变量,以适用于嵌入式系统。使用makemenuconfig对内核进行裁剪,配置内核产生.config文件。根据系统功能需求选择相关的功能模块,保存即可。这里需要说明的是内核配置选项多达数百项,需要根据不同的硬件平台进行修改配置,其余的采用默认设置即可。编译内核生成镜像完成了对内核的配置以后,内核仍然是源码的形式,还不能下载到硬件平台上运行。内核编译的目的就是生成最终可以在硬件平台上运行的可执行代码。内核的编译过程是由Makefile文件控制的,Makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译。内核编译步骤非常固定,需要用到以下几个命令:makeclean用来把以前编译内核时产生的文件删除掉,避免上次编译的文件对本次编译产生影响。5.2.2根文件系统制作嵌入式Linux支持多种文件系统。虽然在嵌入式系统中,由于资源受限的原因,它的文件系统和非嵌入式Linux的文件系统有较大的区别,但是他们的总体架构是一样的,都是采用目录树的结构。本文中采用的是cramfs文件系统。这种系统是一种简单的只读文件系统,因此非常适合嵌入式系统。本文适用busybox进行根文件系统的制作,步骤如下:Busybox配置编译下载busybox源码,执行makemenuconfig进行相关配置(如:GeneralConfiguration中,一定要选择“Supportfordevfs”选项)。生成.config文件后执行makeTARGET_ARCH=arm,编译busybox,编译结束后,执行makeinstall,生成一个_install文件夹,内有一个linuxrc文件和bin、sbin、usr三个文件夹,删除linuxrc,将三个文件夹打包。Rootfs制作创建一个文件夹,比如rootfs,转到rootfs,执行命令mkdirbindevetchomelibmntprocsbinsystmpvarusr,建立相应的文件夹,再建立etc下的init.d文件夹。然后准备启动所需的文件:linuxrc、rcS、inittab、fstab四个文件。将刚才在busybox的_install下的三个文件夹的打包文件复制到rootfs目录,解压后删除打包文件。调试开发将自己开发的相关程序拷贝到rootfs相应目录下,适用命令mkcramfsrootfsrootfs.cramfs。运行成功后,将产生的rootfs.cramfs文件烧写到目标板上就可以了。5.2.3Boa嵌入式服务器移植下载并编译Boa源码从源码,将其解压并进入源码目录的src子目录,在源码目录下执行./configure生成Makefile文件;然后执行Make命令对源码进行编译。配置移植将boa.conf拷贝到etc/boa目录下,修改boa.conf文件中的以下部分,其他配置保持不变;DocumentRoot/var/后面的目录为自己存放网页的目录。ScriptAlias/var/后面的目录为cgi程序的存放目录。运行测试在解压的之前解压的boa-0.94.13/src目录下有个boa的可执行程序。执行后boa就开始运行了,正常执行后可以通过ps–A看到boa进程。将一个静态网页拷贝到/下,通过IE就可以访问了。将解压后boa目录下的examples\cgi-test.cgi拷贝到/下,可进行cgi测试。在Boa服务器的移植过程中,有以下两点需要注意:1、修改一个叫define.h的文件,里面可以配置boa.conf文件的保存位置,一般保持默认在etc/boa文件夹下。2、保持Usernobody不变。以前就是因为将nobody改成了root造成不能配置不成功,而且没有任何错误提示。5.3客户端软件设计客户端软件为典型的AndroidApp。其主要包括以下几个功能:系统登录模块:输入主机地址和密码,点击连接服务器即可登录到智能家居控