嵌入式智能家居控制系统设计发展策略
伴随着人们工作节奏的加快和工作环境的不确定性,人们越来越注重居住环境的安全,希望能在第一时间知道家中的安全情况,因此,设计一种智能家居远程控制系统具有良好的实际意义[1]。
目前,大多数嵌入式系统都以处理器为核心,与一些检测、监控设备配合实现一定的功能,但是由于视频图像传输的影响以及监控界面的问题,客户端的远程监控效果并不理想[2]。
如果嵌入式智能家居系统能够连接到Internet和GPRS模块,则用户可以通过远程登录界面来了解家居环境信息[3]。
因此,本文提出了一款具有网络功能的智能家居控制系统的实现方案,使用火狐浏览器作为上位机,采用JPEG高效压缩算法对视频图像进行压缩[2],用户不仅可以通过浏览器监测家居环境信息,还可以访问Web服务器中的视频,同时,GPRS通信模块还能将异常信息以短信方式通知用户,提高了智能家居控制的灵活性[4]。
1 系统架构
系统采用S3C2440处理器作为主控芯片,该芯片是基于ARM920T 内核的RISC微处理,S3C2440处理器内部集成了很多控制器接口,便于与外部器件连接。
整个系统通过传感器检测家居环境,USB摄像头采集视频数据。
当系统接入Internet,用户就可以登陆家居管理主页,查看各种传感器的数据信息,操作室内照明灯,还可以浏览家居画面。
当室内有危险时还能触发本地蜂鸣器报警,并能通过GPRS通信系统向用户发送紧急短信。
整个系统的结构如图1所示。
图1 系统结构框图
1.1 硬件设计
(1)嵌入式微处理器
本设计使用TX2440A开发板进行设计。
采用S3C2440处理器作为主控芯片,主频可以达到400 MHz,具有MMU管理单元、控制器、支持外部存储器,板载64 MB SDRAM,256 MB NAND Flash,LCD显示部分为3.5英寸TFT真彩色液晶屏,网络芯片为DM9000,1个10M 以太网RJ-45接口,4个USB Host,1个USB Slave B型接口。
TX2440A 开发板上还扩展了丰富的接口,如蓝牙接口、CAN接口、ZigBee接口等,方便进行软件调试以及系统测试。
(2)视频采集模块
采用了ZC301摄像头,利用Linux提供的Video4 Linux API函数对USB摄像头采集视频数据[4],然后将视频数据通过内部总线发送到视频流服务器MJPG-streamer上[2],视频流服务器将视频图像数据进行压缩后,采用TCP/IP协议进行远程传输,再通过CGI函数集实现客户端与服务器的之间的交互,远端客户机通过浏览器就可以查看现场监控画面[1]。
(3)传感器模块
本系统采用DS18B20温度传感器采集室内温度;采用HIH-4000湿度传感器采集室内的湿度;采用DSM501A粉尘传感器来检测室内粉尘浓度;采用PIP探头LH1778为核心的检测电路来检测是否有人员入侵,并利用蜂鸣器进行本地报警和GSM短信报警。
这些传感器模块通过S3C2440 的I/O口接到控制中心,并把采集到的信息发送到
Web服务器上。
(4)GPRS通信模块
GPRS通信模块选用西门子电气公司生产的MC35i,该模块可以提供语音传输、彩信业务和数据传输业务等接口,内置了彩信MMS 协议和TCP/IP协议[3]。
该模块与处理器S3C2440采用串型端口进行数据通信,MC35i上的TXD0端口主要用于接收处理器发送的数据;GPRS模块上的RXD0端口用于向处理器发送数据。
通信模块将GPRS 网络和Internet网络链接起来,通过与监控中心建立通信链路来进行双向的数据通信。
1.2 软件设计
软件设计主要完成应用程序的设计和监测界面的实现。
应用程序通过调用驱动程序从而实现对硬件的控制,主要完成室内环境监测模块、照明控制模块和视频监控模块等软件设计,该应用程序使用CGI 语言实现,将CGI嵌入式网页中,用户通过调用CGI程序,以表单的方式将返回信息呈现给用户,从而实现网络监控。
(1)环境检测模块的软件设计
该模块设计主要是检测室内的温度、湿度、和粉尘浓度,整个流程是先由传感器获取室内的状态信息,然后通过网络将信息传输到服务器平台上。
用户通过操作平台就可以查看室内环境信息,当达到危险值时,蜂鸣器进行报警,同时微处理器通过串口向GSM短信模块发送命令,通知用户家中有危险[3]。
以温度传感器为例的温度采集流程图如图2所示。
(2)照明模块的软件设计
该模块主要设计室内照明,系统采用开发板上的LED1~LED3 灯分别来模拟室内照明灯。
在/www/Leddate目录下建立一个文本文件:led.txt,保存LED 灯的状态信息,将每次对LED 灯的操作进行数据实时更新。
(3)视频监控模块的软件设计
视频监控实现分为三个部分:视频图像采集、视频数据传输、视频图像显示。
通过Linux系统内部的V4L对视频图像采集,将采集到的原始图像数据通过JPEG压缩输出给客户端进行实时播放,网络传输中应用层采用TRTP /RTCP协议配合来保证传输的质量,传输层与网络层采用TCP/IP协议。
同时移植BoaWeb 服务器,通过CGI监听客户端的请求,从而实现与客户端的网络交互[1]。
视频监控的软件设计框图如图4所示。
图2 温度采集流程图
图3 视频监控的软件设计框图
1.3 监测界面的实现
根据CGI程序的工作原理,监控页面主要分两部分组成:静态表单页面设计和动态Web页面设计,使用HTML来设计静态页面,使用CGI技术制作动态页面[4]。
当用户通过浏览器访问Web服务器时[5],访问的第一个文件是index.html,将弹出一个对话框要求用户输入登录信息,进行身份验证,由login.cgi 对用户的登陆信息进行验证,通过认证之后,用户才能进入系统的主页面main.html,在
main.html 主页面里为用户提供三种功能:家居环境检测;室内电灯控制;网络视频监控。
其中家居环境检测、报警信号、照明灯由main.cgi 程序进行控制,每个模块利用CGI传输数据和操作指令,完成照明灯的操作和数据保存;网络视频由视频流服务器Mjpg-streamer通过网络传输到浏览器。
当鼠标点击视频查看按钮时,该页面会链接到stream.html上,显示视频监控画面,在此界面上,点击左侧的菜单可以进行远程画面拍照,点击控制菜单将进入视频参数调整界面。
链接部分的HTML 语句如下:
其中202.117.66.20为Boa 服务器及硬件电路板的IP地址,href 的内容为链接的地址,img里的src为该链接的显示图标。
表1 系统主要页面功能说明表
序号程序名功能描述。