1、自动化与仪表2013(4)计算机应用智能家居系统嵌入式家庭服务器设计与实现文章编号:1001-9944(2013)04-0037-04付蔚,刘谋黎,蔡林沁(重庆邮电大学 自动化学院,重庆400065)摘要:该文设计了一种基于嵌入式系统的家庭服务器,采用ARM11平台作为硬件控制器,软件平台采用Linux操作系统、SQLite数据库和BOA服务器。 文中先概括性的介绍了本实验室开发的智能家居系统和家庭服务器的硬件平台,再详细地介绍了家庭服务器设计方案。在ARM-Linux平台上移植了SQLite数据库、BOA服务器、CGIC库,在此基础上实现家庭服务器网络通信、SQLite数据库操作、Web监控
2、功能。 实现了与移动监控终端的信息交互和基于ARM-Linux的Web监控,并在本实验室开发的智能家居系统成功应用。关键词:SQLite数据库;BOA;ARM;Linux中图分类号:TP29文献标志码:ADesign and Implementation of Embedded Home Server in Smart HomeFU Wei,LIU Mou-li,CAI Lin-qin(School of Automation,Chongqing University of Posts and Telecommunications,Chongqing 400065,China)Abstract
3、:This paper designed a home server based on embedded Linux system,ARM11 platform was used as hard-ware platform,and the software platform was Linux,SQLite database and BOA server. First tells about the smarthome system developed and the hardware platform of home server in the paper. And then in-dept
4、h description of thedesign of home server. The SQLite database,BOA server and CGIC library were transplanted on ARM-Linux,On thisbasis realized the network communication of home server,the operation of SQLite database and the Web monitoring.The home server realized information interaction with the m
5、obile monitoring terminal and Web monitoring based onARM-Linux,Ultimately,the home server successful application in the smart home system developed in our laboratory.Key words:SQLite database;BOA;ARM;Linux收稿日期:2012-09-14;修订日期:2013-01-14作者简介:付蔚(1981),女,硕士,讲师,研究方向为工业无线通信、物联网技术与智能家居;刘谋黎(1986),女,硕士研究生,研
6、究方向为智能家居小区服务器、智能家居嵌入式服务器;蔡林沁(1973),男,博士,副教授,硕士生导师,研究方向为虚拟现实、网络控制、多智能体理论及应用等。目前大部分的智能家居服务器采用的都是以个人电脑即PC作为服务器, 智能家居设备与PC相连的体系结构, 这样开发的服务器降低了系统开发的难度。 但必须有一台PC一直运行作为独立的服务器,增加了成本,而且这种结构有着一个最大的缺陷就是功耗大1。 以嵌入式设备来代替PC很好地解决了功耗的问题, 整个智能家居服务器作为一个专用的嵌入式设备,其功耗要比PC小的多, 成本又小于个人电脑而且它不需要额外的散热装置。 本文所使用的嵌入式数据库SQLite的体积
7、小,编译后一般只有几十KB,非常适合在嵌入式设备上2。37Automation Instrumentation2013(4)计算机应用1智能家居系统结构本实验室开发的智能家居系统,从家庭用户的需求出发,采用有线以太网和低功耗无线传感器网络的混合组网方式。 对于低功耗的传感器,其数据量相当小,一般11字节计算,因此采用了802.15.4E无线协议组网即可;对于需要大量高速传输的设备和需要联网的设备,采用以太网网线连接。 智能家居系统拓扑图如图1所示。本实验室研发的智能家居系统分类:环境监测子系统、家电控制子系统、节能控制子系统、智能医疗子系统、远程控制子系统。主控制器与底层设备(传感器设备、智能
8、医疗设备、能耗管控器、家电控制器)的通信方式为802.15.4E,主控制器与家庭服务器通过网线连接。 家庭服务器通过以太网和GPRS网络与远程控制子系统联系。 在智能家居拓扑结构中,家庭服务器主要起到连接家庭内部网络与家庭外部网络的作用。 家庭服务器即可实现远程控制子系统的Web方式的远程监控,又可以响应远程控制子系统的客户端方式的远程监控。2嵌入式家庭服务器分层架构本文是基于S3C6410+ARM-Linux+SQLite+Boa设计的嵌入式家庭服务器, 按照实现功能进行划分,家庭服务器分层架构如图2所示。本文以ARM11系列处理器为硬件平台,以ARM-Linux嵌入式操作系统为基础软件平台
9、,在此基础上搭建家庭服务器环境和编写应用程序。 嵌入式数据库SQLite存放有主控制传来的数据信息,用户信息,家电控制命令信息,还临时存储远程监控子系统设备的IP地址等。 用户通过Web方式访问家庭服务器, 嵌入式Web服务器对此进行响应,并调用CGI应用程序执行其动作,最后输出HTML形式的结果文件,经Web服务器送回浏览器显示给用户。 后台应用程序主要负责处理主控制器传来的数据信息,以及连接远程监控子系统。3嵌入式家庭服务器的硬件平台嵌入式家庭服务器的硬件是由核心处理器、存储器、I/O设备及某些具有专用功能的芯片组成。 嵌入式家庭服务器硬件电路框图如图3所示。本设计以S3C6410为中心,
10、 设计了其它功能模块:FLASH接口模块、SDRAM接口模块、网络接口模块以及其它辅助电路模块诸如时钟电路、 复位电路等。ARM具有领先的RISC体系结构,提供各种性能和版本可供选择,各类产品间相互兼容,方便系统升级。 在重点考虑微控制器的运行速度和片内外围电路后,选择了三星公司的S3C6410芯片。S3C6410是基于SAMSUNG的16/32位RSIC微处理器S3C6410X的一款开发平台3。选择同步动态随机存储器(SDRAM)作为程序的运行空间、数据存储区及堆栈区。图1智能家居系统拓扑图Fig.1Smarthome system Network Topology传感器智能医疗能耗管控器家
11、电控制器家庭服务器主控制器手机ipad笔记本图2嵌入式家庭服务器分成架构Fig.2Embedded home server architecture家庭服务器软件嵌入式wed服务器嵌入式数据库SQLiteCGI应用程序后台应用程序应用层操作系统层硬件层Linux核心文件系统网络协议栈设备驱动ARM开发平台图3嵌入式家庭服务器硬件电路框图Fig.3Embedded home server hardware circuit diagramS3C6410ARM11核心处理器SDRAMRS232电路以太网接口GPRS模块蓝牙模块串口调试电路电源电路FLASH38自动化与仪表2013(4)计算机应用4嵌
12、入式家庭服务器的软件设计和实现4.1嵌入式家庭服务器的软件平台的构建4.1.1嵌入式数据库SQLite的移植SQLite可直接运行在大多数的操作系统上,并且支持C/C+、Java等常用的开发工具; 支持多数SQL92标准,包括索引、限制、触发和查看,支持原子的、一致的、独立和持久的事务。SQLite设计的主要优点是简单:简单的管理、简单的操作、简单地嵌入、简单的维护,从以上优点可以看出,SQLite是一个非常适合嵌入式应用的数据库。SQLite移植过程如下:1)为使SQLite适用于ARM,解压后对configure进行一些配置。2)执行:make&make install,在SQLite下生
13、成bin include lib share文件。3)在ARM板上运行SQLite将SQLite拷贝到ARM板上的方法很多,需要根据具体的情况来选择,如ftp,cmdftp,wget等。 将bin文件下的sqlite3执行文件拷至开发板bin文件下,lib文件夹下的所有文件拷至开发板的/lib文件夹 下 。 以 上 步 骤 实 现 了SQLite在ARM641O和Linux下正常、稳定地运行。4.1.2BOA服务器的移植Boa是一个非常小巧的Web服务器,其可执行代码只有几十K。 它是一个单任务的Web服务器,只能依次完成用户的请求,而不会fork出新的进程处理并发连接请求4。 但boa支持c
14、gi,能够为cgi程序fork出一个进程来执行。 其移植过程如下。1)下载BOA库源码,将其解压并进入源码目录。2)修改boa.conf配置文件,使其能够支持CGI程序的执行。3) 修改Makefile文件, 使其make后适用于ARM-Linux。使用make命令,编译、链接生成boa可执行文件。4)拷贝boa/examples/里的cgi-test.cgi脚本文件。将cgi-test.cgi放到目标板上的/www/cgi-bin文件,在浏览器中输入:http:/Boa主机IP/cgi-bin/cgi-test.cgi可以看到页面,表示BOA和测试脚本都移植成功。4.1.3CGIC库的移植C
15、GIC是一个支持CGI开发的开放源码的标准C库,可以免费使用,只需要在开发的站点和程序文档中有个公开声明即可,表明程序使用了CGIC库,用户也可以购买商业授权而无需公开声明。 其移植过程不再详细描述。4.2嵌入式家庭服务器程序设计4.2.1网络通信程序设计智能家居服务器网络通信采用套接字的方式。网络模块通过GPRS、WiFi、Internet协议接收从移动监控终端 (手机/平板/PC) 和家居主控制器发来的UDP文。 然后对接收到的UDP报文进行解析,判断此UDP数据包是来自手机、平板、PC或者是家居主控制器,其中手机、平板、PC为移动监控终端,获取移动监控终端的ip地址及端口号,并存入SQL
16、ite数据库,以便向移动终端发送感知层信息。 获取IP地址和端口号方法函数:strcpy(ip,(constchar*)inet_ntoa(addr_client.sin_addr);port=ntohs(addr_client.sin_port);将获取到的IP地址和端口暂存在ip、port,然后调用SQLite操作函数将其存入数据库。 移动监控终端的发送程序, 先从数据库中查询到ip地址,调用callback_Send回调函数, 在callback_Send实现套接字发送。 其callback_Send程序如下:int callback_Send(void* data,int ncols,
17、char* values,char*headers) struct sockaddr_in addr_serv;/服务端地址,客户端地址sock_fd = socket(AF_INET,SOCK_DGRAM,0);/创建套接子memset(&addr_serv,0,sizeof(addr_serv);addr_serv.sin_family = AF_INET;/协议族addr_serv.sin_addr.s_addr = inet_addr(ip);addr_serv.sin_port =htons(Phone_Port);/本地端口号send_Pnum = sendto(sock_fd,d
18、ata,50,0,(struct sockaddr *)&addr_serv,sizeof(struct sockaddr _in); close(sock_fd);4.2.2SQLite数据库操作设计SQLite数据库中包含有的数据表类型: 用户信息表、智能家居感知层信息和IP地址。SQLite数据库操作程序主要通过嵌入式数据库SQLite提供的接口函数对数据库进行操作,以达到数据的存储,查询,修改等操作。首先提供文件名和访问模式来调用sqlite3_open连接数据库,然后调用sqlite3_ exec数执行SQL语39Automation Instrumentation2013(4)计算
19、机应用(上接第28页) 通过ChipScope在线逻辑分析仪验证了逻辑时序的可行性, 在实际工程应用项目中,总线控制系统能准确将计算机系统的数据量转换并传输给远程终端。 实践证明,基于FPGA的1553B总线控制系统设计是准确、安全、可靠的。参考文献:1刘锐,赵加凤,付平.基于FPGA的PXI-1553B模块设计J.电子测量技术,2009,32(11):99-101.2汪海英.1553B总线用单/双耦合器J.光纤与电缆及其应用技术,2008(1):15-17,403张伟.综合参数记录器中关键技术的研究D.太原:中北大学,2012.4徐丽清.1553B总线接口技术研究及FPGA实现D.西安:西北
20、工业大学,2006.5DDC.ACE/Mini-ACE Series BC/RT/MT Advanced Communica-tion Engine Integrated 1553 Terminal Users Guide Z.NewYork:Data Device Corp,19996王杰,王诚,谢龙汉. Xilinx FPGA/CPLD设计手册M.北京:人民邮电出版社,2011.句,最后操作完毕执行sqlite3_close关闭数据库。 如果想取SQL语句访问数据库的结果,就要对每一个记录执行同调函数callback。 如果想执行一个SQL查询并获得一个callback函数的指针, 可以调
21、用sqlite_exec下面的代码主要说明在嵌入式服务器上对SQLite的操作,*sql为要执行的sql语句,执行完sqlite3_ exec后调用callback。4.2.3动态网页设计与实现在本智能家居系统中是需要提供动态内容显示或交互式操作,以便对设备进行远程控制。 而简单的静态页面所提供的内容是不变的,也无法完成交互操作。 公共网关接口(CGI)能够从根本上解决这种情况, 使WEB的客户端和服务器之间具有交互功能,使得嵌入式系统的远程控制得以实现5。 本设计的Web请求/响应原理如图4所示。用户通过浏览器进行控制,Web服务器守护进程接收到该请求后,创建一个CGI的子进程。 该子进程将
22、CGI请求的有关数据设置成环境变量,并启动URL指定的CGI程序,CGI程序从环境变量中读取所需要的数据,经过处理后,连接SQLite数据库并查询结果, 最后输出HTML形式的结果文件,经Web服务器送回浏览器显示给用户。5测试结果通过上述设计, 即可完成家庭服务器对SQLite的操作,实现了WEB方式的监控,以及与远程监控子系统的信息交互。 通过Web方式访问家庭服务器,可以实现控制窗帘、电视、空调等家电;也可查看一氧化碳、温度、湿度等环境监测值,以及电视、电饭煲等电器的能耗情况。 安装了本实验室研发的客户端的手机,可以将控制信息发送到家庭服务器实现相应的控制,也可以接收到家庭服务器发送来的
23、数据信息,实现一氧化碳、湿度等的显示。6结语目前大多数嵌入式服务器采用文件作为数据存取的逻辑载体。 文件作为数据存储载体有以下的缺点:增加了应用开发的难度与代价,所有的应用都独立重复了数据管理的工作;数据共享性差,而数据交互在网络时代是必需的; 独立性、 语义性、移植性差,造成了软件的可重用性差。 嵌入式数据库SQLite在嵌入式智能家居服务器的应用,实现了嵌入式智能家居服务器的独立工作性能,符合现代系统网络化、成本低廉、升级维护方便的趋势。参考文献:1雷小俊.基于嵌入式技术的家庭网关的研究与实现D.大连理工大学,2006.2张延冬,王志鸿.基于ARM和SQLite在远程控制系统中的应用研究J.电子测量技术,2009,32(1):95-97.3刘麟,徐晓.基于S3C6410的实时视频监控系统J.电视技术,2010,34(S2):98-100.4邓耀华,吴黎明.数据采集终端Web通信服务器嵌入式设计J.计算机与现代化,2010(5):102-110.5潘琢金,王秋实.嵌入式Web服务器中动态Web技术的研究J.计算机工程与设计,2010,31(18):3975-3978.图4Web请求/响应原理Fig.4Web request/response principle客户端浏览器Web服务器CGI程序SQLite请求响应返回结果调用CGI程序查询结果40