0 引言
随着国民经济的快速发展和人们生活水平的不断提高,人们对居住房子的舒适性及安全性要求也提升到了更高的档次,同时计算机技术、网络和信息技术也在不断发展,这使得家庭智能系统的远程监控成为一种现实。本文设计的智能家居远程监控系统实现了家用电器等的智能化管理,对家庭环境的实时监视和自动报警功能。
1 智能家居系统的总体结构
智能家居远程监控系统的核心部分是一个嵌入式Web服务器,系统集有线和无线Web服务器于一体,用户可以利用办公室的PC登录家中的Web服务器,在通过用户名和密码验证后,便可以查看并控制家用电器。系统结构框图如图1所示。
2 系统硬件设计
本系统硬件电路框图如图2所示,主要由ARM9控制器S3C2440,FLASH,SDRAM,电源及复位模块,触摸屏显示模块,USB摄像头,以太网接口模块,GPRS模块,家电控制,安防控制等组成。
2.1 ARM9控制器S3C2440
ARM9控制器S3C2440是基于ARM920T内核的16/32位RISC处理器,具有功能强大、性价比高、功耗低的优点。
2.2 家电控制
本系统针对家电设备的智能化程度不同,提出了不同的解决方案。对于电灯开关等需要手工控制的传统家庭设备。系统添加了辅助控制器(继电器等),用户可通过以太网或手机短信的方式控制处理器GPIOn的状态,间接控制家庭设备;对于电视、空调等可通过红外线控制的电器设备,系统采用带有以太网接口的通用控制器统一遥控;对于自身具备网络接入功能,支持远程平台控制的智能电器设备,直接接入家庭以太网即可。
2.3 安防控制
系统使用的所有探测器(烟感传感器、煤气传感器、门磁传感器等)和报警设备,都是通过GPIO与控制器相连来完成报警输入输出的功能。然而这些输入输出信号都有很强的电流,对系统的干扰较大,因此采用TLP521光电隔离芯片和继电器对报警输入输出信号分别进行隔离,从而把外部信号对系统的影响降到最低。
2.4 GPRS模块
GPRS模块采用西门子公司的MC35i GPRS MODEM。当S3C2440控制器收到报警信号时,它通过UART控制MC35i,将预存的相应报警信息通过GPRS网络以短信的形式发送到用户的手机上,同时向小区物业中心发出报警,使用户和物业部门及时发现险情,并采取有效的处理措施减少
经济损失。
2.5 以太网接口模块
由于S3C2440本身没有集成以太网控制模块,所以需要一个与之相匹配的DM9000控制芯片来实现以太网扩展接口。在DM9000和RJ45接口之间通过网络隔离变压器HR601627来连接,连接图如图3所示,网络隔离变压器起信号传输、高电压隔离等作用,以保护系统的安全。
2.6 USB摄像头
本系统所用的USB摄像头是中星微公司的ZC2301P。摄像头ZC301P采集的视频信号经压缩后形成的视频数据流会通过内部总线传送到嵌入式Web服务器上,用户可通过登陆网络直接观看Web服务器上的视频图像,实时监控家中的情况。
3 系统软件设计
本系统控制中心是ARM9控制器,其软件设计包括系统软件(嵌入式操作系统、硬件设备驱动程序、嵌入式Web服务器)设计和应用软件(网页设计及CGI应用程序)设计。
3.1 嵌入式操作系统在S3C2440上移植过程
(1)从网站上下载Linux的内核源码linux-2.6.31.tar.bz2和交叉编译器arm920t-eabi.tgz,这个交叉编译器是4.1.2版本的,支持EABI,可以提高编译的效率。
(2)在宿主机上将内核源码解压得到linux-2.6.31,将交叉编译器解压到指定目录。
(3)修改Makefile文件及相关硬件文件。由于内核的编译是根据Makefile文件的指示进行的,Makefile文件来组织内核的各模块之间的关系,记录了各个模块之间的相互联系和依赖关系。所以,修改Linux2.6.31根目录下的Maldile文件来指定平台和交叉编译器。
(4)通过命令# make menuconfig来配置内核。配置内核时,让它支持EABI编译。
(5)在linux-2.6.31根目录下执行命令# make zImage来编译内核,将生成的内核镜像文件zImage通过相应的固化软件固化到系统相应的存储器中,完成linux-2.6.31内核在ARM微处理器上的移植。
3.2 驱动程序的设计
控制器需要多个设备驱动程序。嵌入式Linux系统中设备驱动程序有一个标准的框架,可以根据硬件结构来填写框架中的函数。主要的函数包括open(),read(),write(),ioctl(),release(),module_init()和module_exit()等。为了减小内核的大小,把编写好的驱动程序编译成模块。编写Makefile、Kconfig文件,分别执行make menuconfig命令选择驱动程序的加载方式,利用makemodules命令生成目标文件,最后利用insmod命令调用initial_module函数将编译好的模块调入内存即可。
3.3 Web服务器Boa移植
Boa是一个嵌入式Web服务器,能够生成动态的页面,支持CGI,比较适合嵌入式系统。在硬件电路板上存放一个网页,在用户端可以通过浏览器来访问硬件电路板上这个网页,然后通过网页中的内容就可以和硬件电路板上的硬件设备进行交互。具体移植过程如下:
(1)从网上下载Boa服务器源码压缩包boa-0.94.13.tar.gz,将其解压得到boa-0.94.13,在boa-0.94.13/src下编译生成boa可执行程序。
(2)把宿主机Linux操作系统下的/etc/mime.types复制到根文件系统的/etc目录中,在根文件系统的/etc中建立boa文件夹,根文件系统的/etc/boa目录下建立www、cgi-bin目录,www中存放HTML文件,cgi-bin中存放CGI脚本,把网页文件index.files和index.html复制到根文件系统的/etc/boa/www目录下,在根文件系统的/var目录下建立日志目录log/boa。
(3)对Boa作配置和修改。主要通过对defines.h,boa.conf和mime.types文件进行修改来实现。修改defines.h指定Web服务器的根目录路径(SERVER_ROOT)。boa.conf文件由一些规则组成,用于配置Boa服务器,指定相应端口,服务器名称,一些相关文件的路径等。Boa服务器要想正确运行,必须保证该文件是正确配置的,而且该文件和某些静态网页,CGI可执行程序等都放于某特定目录下。
(4)把boa-0.94.13/sre下编译出的boa可执行程序复制到根文件系统的/usr/bin目录下,把修改过的配置文件boa.conf复制到开发板的/etc/boa目录下,并将一些静态页面放在由boa.conf指定的目录下。
(5)重新编译根文件系统。把根文件系统下载到硬件电路板上。
在硬件电路板上运行嵌入式Web服务器Boa,通过浏览器就能访问系统所设计的网页。
3.4 应用软件设计
本系统的核心是一个嵌入式Web服务器,其应用软件的设计包括网页设计和CGI应用程序设计两部分。
(1)网页设计:网页设计采用设计工具Dreamweaver,FrongtPage等来实现。
(2)CGI应用程序设计:采用C语言来编写CGI应用程序,实现外部实时数据采样、与家电设备的通信与控制等。CGI技术可以实现浏览器与嵌入式Web服务器的动态数据交互。CGI程序保存在嵌入式Web服务器端。在用户端打开HTML页面,点击HTML页面上设备的控制按钮,就会通过Internet把用户请求送到嵌入式Web服务器中,服务器接收用户请求并交给CGI程序处理,实现用户的功能需求,这就做到了通过对HTML页面上相应设备的点击实现家庭网络中设备的远程控制。
4 结束语
该系统硬件采用ARM9 S3C2440 微处理器作为控制核心,软件采用linux-2.6.31内核作为系统的嵌入式操作系统,采用Boa作为嵌入式Web服务器,结合以太网通信技术和GPRS无线通信技术实现了对家庭环境的远程实时监控、安防自动报警和对家电设备远程控制的功能。本监控系统具有较大的实用价值,未来的发展空间非常大,能够使人们生活得更加舒适安全。