摘 要:以智能家居远程监控系统为例,设计了一种以Web技术为核心的远程监控系统解决方案,并实施建立在基于S3C2440微处理器和嵌入式Linux操作系统的软硬件平台上。在嵌入式Linux操作系统中构建了Web服务器和视频服务器。在此基础上使用CGI技术处理HTML表单,控制系统硬件,实现交互操作,完成用户认证、门窗控制、照明控制、温度监测、视频监控等功能。远程用户可以通过IE浏览器进行实时监视,并对监测系统设备实现管理。
关键词:S3C2440;Linux;智能家居;Web技术;远程监控
智能家居又称为数字家庭[1-2],一般是指以计算机接口技术和网络技术为基础,将各种家用数字化设备有机结合为一体的智能化的网络系统。这些家用数字化设备包括电话、计算机、数字化的视听设备、数字化的家用电器及安全监控设备等,通过有线或无线的方式将这些设备连接起来,为家庭用户提供简单、安全、可靠、智能化的综合服务。本文以Web技术为核心,在基于S3C2440微处理器和嵌入式Linux操作系统的软硬件平台上构建了Web服务器和视频服务器,Web服务器采用Boa,视频服务器采用Servfox,结合CGI技术处理HTML表单,完成用户认证,门窗控制等家居监控功能。
1 系统总体结构设计
图1为智能家居远程监控系统的总体结构图。室内部分主要包括家电控制、防盗报警、远程监控、防火报警等功能模块,这些功能模块通过Web服务器接入Internet网,用户可通过计算机登录因特网,远程监控室内情况,同时室内如检测到火、盗等异常情况可通过Internet向用户报警。
2 系统硬件设计
智能家居远程监控系统的硬件系统由YC2440-F开发板、网络接口、门窗控制、照明设备、温度传感器、USB摄像头等组成。YC2440-F开发板作为整个系统的控制核心,负责信息的采集和处理,并控制各个模块协调工作,如图2所示。
控制核心采用YC2440-F开发板。该开发板是扬创科技公司使用三星S3C2440处理器开发的ARM9开发板。YC2440-F开发板采用核心板+扩展板的结构。
门窗控制模块可以让用户通过互联网远程控制室内门窗的开启与关闭,如有人以非正常方式通过门窗进入室内,可向用户报警。在实验中选用一个步进电机来模拟门窗控制,电机正转表示门窗开启,电机反转表示门窗关闭,步进电机如强行被破坏则报警。步进电机通过集成芯片ULN2003驱动,门窗控制电路如图3所示。
温度监测模块可以实时监测室内温度,如果检测到室内温度超过50℃则报警。温度监测电路采用DS18B20温度传感器来实现。DS18B20使用1-Wire技术,具有线路简单,精度高、体积小、低功耗等特点。硬件电路只需将DS18B20连接到通用I/O端口GPB0端即可。图5为温度监测模块电路。视频监控系统可以通过摄像头实时监控室内情况,用户可以通过互联网随时观察室内的情况。视频监控采用用普通USB摄像头实现。
3.2 驱动程序的开发
用户进程是通过设备驱动文件控制硬件,对设备文件的操作方式就是系统调用,如open、read、write、close 等。编写设备驱动程序的主要工作就是编写子函数,并填充file_operations结构体的各个域。步进电机、LED和温度传感器DS18B20都是通过通用I/O控制的,做为字符型设备。USB摄像头属于USB设备。下面以步进电机驱动程序为例说明Linux驱动程序的开发过程,具体步骤如下:
(1)编写驱动程序源代码,将程序源文件motor.c,添加到内核的drivers/char目录下。
(2)编辑drivers/char目录下的配置文件Kconfig,添加如下内容:config MOTOR tristate"Motor Driver"
(3)在char目录下打开Makefile,添加obj-$(CONFIG_MOTOR)+=motor.o
(4)在内核目录下执行make menuconfig命令,进行内核配置:在Device Driver-Character Driver下将MOTOR选为M,模块方式,退出保存设置。
(5)执行命令 make modules,编译驱动模块。在char目录下产生motor.ko的文件,即所需的步进电机驱动模块。通过NFS方式传到开发板上。
(6)加载驱动模块,执行insmod motor.ko。
(7)建立文件节点,执行mknod/dev/MOTOR_Driver c 228 0。
3.3 实现基于Web的远程监控
智能家居远程监控系统可以通过Web服务器为用户提供简洁,美观的操作界面。网络控制部分包括登录界面、用户认证、主界面、门窗控制、照明控制、温度监测及视频监控。
用户认证是通过CGI程序实现的。首先在登录界面中使用HTML语言添加表单:
参数action指明处理该表单的CGI程序,此表单所填的内容会通过Web服务器以name=value1&pwd=value2的方式传给logon.cgi程序处理,该程序对用户名和密码进行认证。用户认证界面如图7所示,门窗控制界面如图8所示。使用表单在网页中添加2个按钮,分别控制门窗的打开和关闭。对应的CGI程序调用步进电机的驱动程序,控制电机转动,模拟门窗控制。
照明控制界面如图9所示,在网页中添加4个复选框,分别配有4个发光二极管。对应的CGI程序调用LED的驱动程序,控制发光二极管。温度控制界面如图10所示。CGI程序调用DS18B20的驱动程序,读取温度传感器的值,然后计算温度,最后返回一个网页显示DS18B20的信息和温度。视频监控界面如图11所示,在网页中添加Java插件,接收并显示视频服务器Servfox发送的视频数据。添加2个按钮控制视频服务器的打开与关闭。
以S3C2440微处理器为控制核心,完成了智能家居硬件平台的设计。实现了嵌入式Linux操作系统在S3C2440微处理器平台上的移植。编写了步进电机、发光二极管以及DS18B20温度传感器的驱动程序。完成了Web服务器Boa和视频服务器Servfox的移植。使用HTML语言编写静态网页,完成基于Web的智能家居远程监控部分的主体框架。使用CGI技术处理HTML表单,控制系统硬件,实现交互操作,完成用户认证、门窗控制、照明控制、温度监测、视频监控等功能。
参考文献
[1] 王莹.家居远程监控系统的设计与开发[D].大连:大连理工大学,2007.
[2] 曹晋辉.基于ARM的家庭安防网关平台底层构建[D].成都:电子科技大学,2007.
[3] 封景刚,吴宝江.ARM嵌入式系统开发完全入门与主流实践[M].北京:电子工业出版社,2008.
[4] 汪明虎,欧文盛.ARM嵌入式Linux应用开发入门[M].北京:中国电力出版社,2008.
[5] 戴丽.基于Video4Linux的USB摄像头图像采集实现[M].合肥:合肥工业大学,2008.