嵌入式智能家居监控系统的设计与实现
。
本系统中各网络服务器的功能设计如下:
(1)注册服务器接受用户代理(信息家电)的注册(REGISTER)请求,在SQLite中动态建立家电的逻辑地址和其当前联系地址之间的对应关系。从而不论在何处,都可以通过唯一的逻辑地址进行通讯,实现对家电移动性的支持。返回状态码为200的成功响应,完成信息家电的注册。
(2)重定位服务器提供地址解析服务,功能类似于DNS,用于在需要时(如信息家电位置改变、实现负荷分担等)构造一个重定向响应消息,将新的目标地址返回给监控程序。
(3)代理服务器类似于HTTP的Proxy和SMTP的MTA(Message Transfer Agent),负责接收用户代理(监控软件)发来的请求,根据网络策略将请求发给相应的信息家电,并根据收到的应答对监控端做出响应。
4.2 SIP协议栈的实现
SIP协议栈oSIP是第一个自由软件项目,使用标准c编写,结构简单而小巧,速度特别快,支持线程安全,可以开发注册服务器、代理服务器和用户代理等[4]。oSIP开发库主要是在uCLinux上实现SIP协议的语法解析和状态机分析,为实现SIP服务器提供开发接口。
本文设计的SIP协议栈在oSIP开发库的基础上进行了修改和二次开发,主要包括两个方面的内容:状态机模块和语法解析器模块。前者完成对某个事务(注册过程,呼叫过程等)的状态记录,并在特定状态下触发相应的事件。后者主要完成对SIP消息结构和URL结构的剖析。下面是家庭网关接受信息家电注册的部分源代码:
(1) 初始化oSIP栈: Int osip_global_init();
(2) 包含SIP有限状态机API的库文件: #include
(3) 包含SIP语法分析API的库文件: #include
(4) 部分函数声明
void osip_setcb_rcvinvite(); /* 信息家电向SIP服务器发送请求 */
void osip_setcb_rcvregister(); /* SIP服务器完成信息家电的注册 */
void osip_setcb_rcvack(); /* SIP服务器向信息家点发送应答 */
5 基于SQLite和SIP的家庭网关的设计
作为智能家居的核心设施,家庭网关的设计显得尤为重要。它为信息家电提供一个统一的平台,通过该平台能实现信息家电之间或信息家电与远程控制端之间的互连和信息交换。
5.1 硬件平台的设计与操作系统的选取
32位ARM嵌入式微处理器具有高性能、低功耗的特性,已被广泛应用于消费电子产品、无线通信和网络通信等领域,极其适合于对成本和功耗要求较苛刻的应用场合[5]。
因此,本文选取了一款三星公司生产的基于ARM7TDMI核的16/32位RISC嵌入式微处理器S3C44B0X。并以此为中心,设计了其它功能模块:FLASH接口模块、SDRAM接口模块、网络接口模块以及其它外围辅助电路模块诸如时钟电路、复位电路等。如图2所示。
uCLinux在Linux的基础上添加了对没有MMU的微处理器的支持[6],所以它一方面继承了Linux的大部分优点:例如稳定性、各种网络协议栈的支持以及不同类型的文件系统支持等等;另一方面,它广泛地应用于嵌入式领
uCLinux在Linux的基础上添加了对没有MMU的微处理器的支持[6],所以它一方面继承了Linux的大部分优点:例如稳定性、各种网络协议栈的支持以及不同类型的文件系统支持等等;另一方面,它广泛地应用于嵌入式领域,内核精简(一般小于512k),并支持很多常用的嵌入式微控制器系列。正是出于对多任务控制、网络功能和可移植性等方面的考虑,本设计选用嵌入式操作系统uClinux,并完成在ARM微处理器上的移植。
5.2 Web服务器和嵌入式数据库的应用
Boa是一个单任务的http服务器,源代码开放、性能高,支持认证,支持CGI。目前,uCLinux中已包含了boa的源代码,因此在uCLinux中实现Boa非常简单,只需要在boa.conf 和mime.types 文件中修改网页存放的路径以及CGI程序存放的目录。
SQLite中存放每个家电的基本信息、参数值以及状态信息等,这些信息不但反映了各种参数的历史状态,而且也是管理、决策的重要信息来源,在需要的时候通过对嵌入式数据库的访问实现对信息家电的信息检索和远程监控。数据管理是远程监控系统非常重要的部分。
本系统中SIP网络服务器在SQLite中动态建立家电的逻辑地址和其当前联系地址之间的对应关系,完成信息家电的注册。用户可通过浏览器访问家庭网关中的Web Server,并把参数提交给Web Server接收,Web Server再把此参数传递给CGI程序解析,CGI调入SQLite中家庭网关各种状态参数,将结果转化为web浏览器能识别的格式,作为Http应答消息回送到客户端,从而实现对信息家电的设置和信息交互。
- 基于Linux/Qt的智能家居系统设计(07-07)
- 基于ARM-linux的智能监控系统设计(08-25)
- 基于Linux的智能家居管理方案(01-05)
- 基于Android智能家居远程监控系统设计(12-01)
- 基于ZigBee无线网络的嵌入式智能家居监控系统(03-18)
- DIY智能家居之多功能一体化触屏遥控器的设计实现(04-14)