以智能家居远程监控系统为例,设计了一种以Web 技术为核心的远程监控系统解决方案, 并实施建立在基于S3C2440 微处理器和嵌入式Linux 操作系统的软硬件平台上。在嵌入式Linux操作系统中构建了Web 服务器和视频服务器。在此基础上使用CGI 技术处理HTML 表单,控制系统硬件,实现交互操作,完成用户认证、门窗控制、照明控制、温度监测、视频监控等功能。远程用户可以通过IE浏览器进行实时监视,并对监测系统设备实现管理。
智能家居又称为数字家庭, 一般是指以计算机接口技术和网络技术为基础, 将各种家用数字化设备有机结合为一体的智能化的网络系统。这些家用数字化设备包括电话、计算机、数字化的视听设备、数字化的家用电器及安全监控设备等, 通过有线或无线的方式将这些设备连接起来, 为家庭用户提供简单、安全、可靠、智能化的综合服务。本文以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 所示。
照明控制模块可以让用户通过互联网远程控制室内照明系统的打开与关闭。在实验中使用4 个发光二极管来模拟照明系统, 图4 为照明控制模块硬件电路图。
温度监测模块可以实时监测室内温度, 如果检测到室内温度超过50℃则报警。温度监测电路采用DS18B20温度传感器来实现。DS18B20 使用1-Wire 技术, 具有线路简单, 精度高、体积小、低功耗等特点。硬件电路只需将DS18B20 连接到通用I/O 端口GPB0 端即可。图5 为温度监测模块电路。视频监控系统可以通过摄像头实时监控室内情况, 用户可以通过互联网随时观察室内的情况。视频监控采用用普通USB 摄像头实现。
3 系统的软件设计
3.1 智能家居远程监控系统的软件组成
智能家居远程监控系统的软件系统由设备驱动程序、嵌入式Linux 操作系统和应用程序构成,如图6所示。其中嵌入式Linux 操作系统采用2.6 版本的内核。
Web 服务器使用Boa , 视频服务器使用Servfox5 , 这是两款Linux 下的开源软件, 将源码进行适当修改就可以移植到嵌入式系统中。
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 c228 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 )
只看楼主 我来说两句 抢板凳