基于S3C2440的智能家居远程监控系统解决方案
智能家居又称为数字家庭, 一般是指以计算机接口技术和网络技术为基础, 将各种家用数字化设备有机结合为一体的智能化的网络系统。这些家用数字化设备包括电话、计算机、数字化的视听设备、数字化的家用电器及安全监控设备等, 通过有线或无线的方式将这些设备连接起来, 为家庭用户提供简单、安全、可靠、智能化的综合服务。本文以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 语言添加表单:
form method="post" action="/cgi-bin/logon.cgi">
用户名:input type="text" name="user">br>
- 嵌入式Web服务器移植与测试(03-03)
- 基于S3C2440的嵌入式IPv6防火墙设计(09-02)
- 基于OpenWrt的移动机器人系统设计(01-17)
- 基于S3C2440处理器Linux平台的物流配送系统设计(02-05)
- 基于嵌入式的杯突试验机测控系统设计与实现(02-12)
- 基于ARM的多路同步的A/D和D/A设计(06-29)