发布时间:2010-11-29 阅读量:2321 来源: 发布人:
【中心议题】
【解决方案】
引言
智能家居是通过综合采用先进的计算机、通信和控制技术(3C),建立一个由家庭安全防护系统、网络服务系统和家庭自动化系统组成的家庭综合服务与管理集成系统,从而实现全面的安全防护、便利的通讯网络以及舒适的居住环境的家庭住宅。
从上世纪80年代开始,西方发达国家率先掀起了智能家居技术研究的热潮。随着研究的飞速进展,人们对智能家居概念的理解逐步深入,越来越多的新思想、新技术应用到这个领域,从而有力地推动了现代智能家居的蓬勃发展。
1总体设计
本文构造了一个基于S3C44BOX+uCLinux+MysQLite+Boa的嵌入式家庭网关。如图1所示。以嵌入式微处理器S3C44BOX为中心设计其他功能模块作为家庭网关硬件平台,裁减并移植嵌入式操作系统uCLinux为家庭网关提供底层软件支撑。信息家电通过IAIDL(信息家电接口定义语言)向家庭网关注册,MySQLite存放每个家电的注册信息、参数值以及状态信息等,在需要的时候通过对嵌入式数据库的访问实现对信息家电的信息检索和远程监控。它同时保存用户信息表,赋予不同的用户检索、修改家电信息的相应权限。远程监控端浏览器通过访问家庭网关嵌入式WEB服务器Boa,调用相应的CGI应用程序来执行目标操作。
2家庭网关硬件的设计
32位ARM嵌入式微处理器具有高性能、低功耗的特性,已被广泛应用于消费电子产品、无线通信和网络通信等领域,极其适合于对成本和功耗要求较苛刻的应用场合。因此,本文选取了一款三星公司生产的基于ARM7TDMI核的16/32位RISC嵌入式微处理器s3c44BOX。并以此为中心,设计了其它功能模块FLASH接口模块、SDRAM接口模块、网络接口模块以及其它外围辅助电路模块诸如时钟电路、复位电路等,如图2所示。
3软件平台的构建
3.1嵌入式操作系统uCLinux的移植
uCLinux为Micro一Control一Linux,即“针对微控制领域而设计的Linux系统”。它它可以说是最早的嵌入式Linux发行版本,是专为没有MMU(内存管理单元)的处理器而设计的,将根据需要进行裁减后移植作为软件的平台。
3.2嵌入式数据库MySQLite的移植
MySQLite是基于Linux开发的,因此在ARM一uCLinux上的移植相对简单,主要实现步骤如下:
(l)添加MySQLite作为uCLinux的一个用户应用程序;
(2)针对具体的ARM一uCLinux修改MysQLite;
(3)编译生成包含有mysqlite的romfs文件系统;
(4)下载romfs到uCLinux的可读写目录,运行mysqlite即可。
3.3嵌入式WEB服务器Boa的实现
Boa是一个单任务的http服务器,源代码开放、性能高,支持认证,支持CGI。目前,uCLinux中己包含了boa的源代码,通过在boa.conf和mime.types文件中修改网页存放的路径以及CGI程序存放的目录,并且修改aut_check_userpass()函数完成多用户合法性验证,从而在uCLinux中实现Boa的WEB服务。
3.4 MySQLite中数据表的生成和分类
家庭网关数据库MySQLite中包含有两种类型的数据表:用户信息表和家电信息表。用户信息表用于存储用户名称和密码,可与用户登录程序login、用户注册程序registration进行交互。家电信息表主要存储家电的运行状态数据,主要与家电控制程序controller、查询程序query进行交互。
家电通过接口定义语言向家庭网关注册,家庭网关编译器对信息家电接口定义语言(IAIDL)进行扫描与分析,并将其解释成一种中间信息,再将这些信息存储在MysQLite的相关数据表中。
IAIDL能够较完备地描述信息家电的属性和功能,并在一定程度上定义了家庭网络中设备之间的互操作。但是IAIDL不是编程语言,只是说明性语言,因此它不可能被编译或解释成一个可执行的程序。这就需要有一种机制能提取信息家电向家庭网关注册时所发送的IAIDL中所描述的内容,并解释成一种中间信息,通过调用MysQLite提供的API函数,把这些信息存储在MysQLite的相关数据表中,家庭网关编译器就扮演了这样一个转换的角色。在MySQLite,表的逻辑功能图如图3所示。
4基于MySQLite的家庭网关程序设计
家庭网关嵌入式WEB服务器端的应用程序是建立在CGI基础之上的。因此,基于MySQLite的应用开发就是如何应用CGI程序建立、访问、更新MySQLite数据库的过程。大致可以分为三步来完成:首先建立一个家庭网关数据库,然后通过HTML文档制作一个WEB页面及内建表单,最后编写一个由解码部分、功能部分、输出部分三部分组成的CGI程序。
在CGI程序的功能部分中利用MySQLite提供的C语言API函数完成与数据库的交互。首先提供文件名和访问模式来调用mysqlite_open()连接数据库,然后调用mysqlite_exec()函数执行SQL语句,最后执行mysqlite_close()关闭数据库。
在家庭网关应用程序中是如何将客户的注册信息,通过CGI程序写入数据库文件IAdatabase中表users中的,其代码如下:
#include
#include
#indude
#define MAXQRY 300
Voidmain()
{char*errrQsg;
Int ret;
Char qry[MAXQRY];
/*以可读写方式打开数据库文件IA_database*/
mysqlite*db=mysqlit_open“(IA_database”,0777,&errmsg);
if(db==0)
{fPrintf(stderr“,CoundnotoPendatabase:%s\n”,errmsg);
Mysqlit_freemem(errmsg);
exit(1);}
sPrintf(qry,“INSERTINTOUSERS(name,Password)\n”
“VALUES‘(%s’,‘%s’)”,name,Password);
/*执行SQL语句,向数据库表USERS中插入记录*/
ret=mysqlite_exec(db,qry,null,null,&errmsg);
if(ret!=MYSQLITE_OK)
{fprintf(stderr,"SQL error:%s\n%s\n",emnsg,qry);}
else{printf("%s%s was inserted fin",name,password);}
/*关闭数据库*/
mysqlite close(db);}
CGI应用程序将标准输出(stdout)作为向WEB服务器传递数据的一种重要途径。通常,CGI应用程序将执行结果输出到标准输出,WEB服务器从中读取信息,并将这些信息返回给客户端。因此,如果要将SQL查询结果输出给远程用户,CGI应用程序可以使用prinitf()函数将查询结果以HTML的形式输出到标准输出,进而家庭网关服务器向客户端返回动态页面,实现用户、WEB服务器与数据库MysQLite的交互。其网关服务流程图如图4所示。
整个家庭网关程序设计都以嵌入式数据库MysQLite为核心,它是网关能否实现信息家电监控功能的关键,也是实现信息家电之间协作的重要存储库。实现远程监控端用户通过浏览器对嵌入式数据库的访问至关重要。
5结论
本文的创新点:在综合分析当前嵌入式数据库系统的主要功能和发展现状的基础上,针对嵌入式设备的具体特点,结合在家庭网关中的实际应用需求,在Linux下用C语言设计了一款能有效存储、操作和管理信息家电数据的嵌入式数据库系统MySQLite,并基于此数据库构造了一个S3C44BOX+uCLinux+MySQLite+Boa的嵌入式家庭网关。
本期EIT探讨了从工业4.0到工业5.0的转变,以及即将实现的技术进步
CWGCE2025西部芯博会总规模将达到60000㎡,同期举办光电展+工业展+智能展+军工展等相类展会,将有更多集成电路行业新装备、新产品、新材料、新技术、新工艺、新趋势及新应用集中亮相
CWGCE2025西部芯博会总规模将达到60000㎡,同期举办光电展+工业展+智能展+军工展等相类展会,将有更多集成电路行业新装备、新产品、新材料、新技术、新工艺、新趋势及新应用集中亮相
CWGCE2025西部芯博会总规模将达到60000㎡,同期举办光电展+工业展+智能展+军工展等相类展会,将有更多集成电路行业新装备、新产品、新材料、新技术、新工艺、新趋势及新应用集中亮相
作为我国中西部地区历史最悠久的光电领域全产业链综合性年度盛会,规模和档次逐年增加和提高,CCWPE2025又新增了多个行业组织联办单位,同时将进一步扩容和丰富论坛内容。