嵌入式智能家居监控系统的设计与实现
1 引言
随着家庭网络研究的兴起,如何设计一种集家电管理、协议转换和家庭网络监控为一体的家庭网关,实现家用电器的网络化、智能化和远程控制,已成为当前研究的热点。
本文以CGI原理为基础,以嵌入式数据库为后台,用软件编程的方法实现用户、Web服务器以及网关应用程序之间的动态交互,提出了-一种新的基于SIP协议和嵌入式数据库实现家居远程监测和控制的解决方案。
2 总体方案
本系统包括信息家电、智能家庭网关和远程监控端三个主要模块。信息家电被作为SIP的智能终端接入家庭网关,以SIP消息形式向后者发送网络标识申请帧和设备描述文件,完成注册;家庭网关基于SIP网络服务器和Web服务器,一方面实现对信息家电的认证和管理,另一方面为远程监控端提供服务;用户可通过PC浏览器和基于SIP用户代理的监控软件两种方式实现对信息家电的远程监控。其整体结构如图1所示。
在家庭网关硬件平台的设计过程中,本文采用模块化的方法,以中央处理单元为中心,
设计其他相关功能模块。软件设计方面,基于ARM7TDMI核的微处理器移植了嵌入式操作系统uCLinux,为实现SIP协议栈提供底层软件支持。基于SIP协议栈完成SIP网络服务器,实现了信息家电的注册、认证和管理。并通过移植Boa Web服务器和SQLite数据库到uCLinux系统中,以CGI原理为基础实现动态Web技术。
图1 嵌入式智能家居监控系统整体结构图 图 2 家庭网关硬件平台结构设计
3 嵌入式数据库在监控系统中的应用
在嵌入式远程监控系统中,需对大量的实时数据进行采集和处理,多样化的数据存储和管理需要一个后台数据库来支撑。由于嵌入式系统软硬件资源都有限,传统的企业数据库如Oracle、Sybase等明显臃肿,很难发挥作用,因此,本文选用了小型的开源嵌入式数据库SQLite,并针对家庭网关ARM-uCLinux平台对其进行移植、裁减和应用。
3.1 SQLite在ARM-uCLinux上的实现
SQLite是用C语言编写的开源嵌入式数据库引擎,占用资源非常低,在嵌入式设备中,只需要几百K的内存就够了[1]。它能够支持Windows/Linux等主流操作系统,其处理速度甚至令开源世界著名的数据库管理系统Mysql、PostgreSQL望尘莫及[2]。SQLite 对SQL92 标准的支持包括索引、限制、触发和查看,支持原子的、一致的、独立和持久的(ACID)事务。
SQLite在ARM-uCLinux上的主要移植步骤如下:
(1) 下载并解压软件包至uCLinux-dist/user目录下;
tar zxvf sqlite-2.8.16.tar.gz –C uCLinux-dist/user/
(2) 参照uClinux-dist/Documentation/Adding-User-Apps-HOWTO文档;
添加SQLite作为uCLinux的一个用户应用程序
(3) 针对ARM-uCLinux修改SQLite;
修改sqlite/src/os.c、sqlite/src/shell.c等文件
并以sqlite/Makefile.linux-gcc文件为蓝本,写一个合适的Makefile
(4) 依次运行make dep;make lib_only;make user_only;make romfs;make image
即在uClinux-dist/images下编译生成了包含有sqlite的romfs文件系统。
(5) 下载romfs到ARM-uCLinux的可读写目录,运行sqlite即可。
3.2 SQLite的C程序设计
嵌入式数据库SQLite与操作系统和具体应用集成在一起,无须独立运行的数据库引擎,它由程序直接调用相应的API函数去实现对数据的存取操作。其中有三个核心API函数。sqlite_open()和sqlite_close()分别打开和关闭嵌入式数据库文件即建立和释放SQLite引擎,而sqlite_exec()可以执行SQL语句并获得结果,通过自行编写回调函数可进一步对执行结果进行处理。
本系统通过现场总线由实时数据采集、处理模块按照用户设定的控制参数(如A/D采样频率等),对信息家电信号进行采集和数字滤波,然后调要API函数将数据存入SQLite数据库。SQLite对设备信息进行管理,并且支持查询、修改等功能。
4 SIP协议在家庭网关中的应用分析
SIP(Session Initiation Protocol)是由IETF(Internet 工程任务组)于1999年提出的基于IP网络实现实时通信应用的一种信令协议[3]。它结构简单、易于扩展,提供良好的QoS支持。虽然主要为IP网络设计,但它也可以在ATM、帧中继等承载网中工作,是下一代网络VoIP的重要解决方案。
4.1 家庭网关中SIP各组件的功能设计
SIP协议包含两类组件:用户代理(User Agent)和网络服务器(Network Server)。用户代理完成呼叫的发起和接收;网络服务器主要为用户代理提供注册、认证和路由等服务,它又分为代理服务器、重定位服务器和注册服务器
- 基于Linux/Qt的智能家居系统设计(07-07)
- 基于ARM-linux的智能监控系统设计(08-25)
- 基于Linux的智能家居管理方案(01-05)
- 基于Android智能家居远程监控系统设计(12-01)
- 基于ZigBee无线网络的嵌入式智能家居监控系统(03-18)
- DIY智能家居之多功能一体化触屏遥控器的设计实现(04-14)