摘 要: 设计了一种可远程控制的智能家居监控系统,采用XBee模块组成ZigBee网络传输智能家居控制网络,由Netduino plus搭建的家庭网关实施控制,Android远程控制端通过Pachube对网关进行访问。该系统组网方便,能通过手机远程监控智能家居的运转,具有很好的应用前景。
关键词: Android;Pachube;智能家居;XBee
随着人们生活品质的不断提高,对智能家居的要求也随之提高,不再局限于PC终端的控制和信息的传递,而要求随时随地能够对智能家居的各种信息进行监控。随着3G技术和各种智能手机的普及,使得智能家居可以通过手机进行控制。同时,2.4 GHz频段的高通信速率和可兼容性正引起人们的重视,比起其他组网方式,采用2.4 GHz通信正逐步成为家电类产品无线通信发展的趋势[1]。
1 系统硬件设计
1.1 系统结构设计
系统整体结构如图1所示,家居设备上各种传感器的信息通过Digi公司的XBee模块组建的ZigBee网络进行传输。ZigBee在物理层和媒体访问控制层采用IEEE 802.15.4协议,使用带时隙或不带时隙的载波检测多址访问和冲突检测(CSMA-CA)的数据传输方法,并与确认和数据检验等措施结合,可保证数据的可靠传输[2]。XBee模块功耗低,传输速率最高可达250 kb/s,支持AT和API command模式,易于配置[3]。智能家居网关采用Netduino接收ZigBee网络传递的数据进行处理和存储,Netduino所用的是Atmel的32 bit ARM7,其频率为48 MHz。Netduino具有1个SPI、I2C、2个UARTs(1个RTS/CTS)、4个PWM和6个ADC,基于微软的.NET Micro Framework,支持C#和VB.NET进行系统开发。Netduino的IDE采用Visual Studio,且支持仿真和在线调试(In-Circuit Debugging),支持事件机制。Netduino Plus直接板载了网络模块和Micro SD卡槽[4-5],如图2所示。
智能家居网关和远程控制端采用Pachube进行信息的传递,可以对智能家居设备的数据进行监控,同时,远程控制端可以发送指令控制智能家居设备。Pachube是一种网络服务,它帮助你在世界范围连接和共享来自物体、设备、建筑和环境的感应装置实时数据,并且创建标签。Pachube有一点像YouTube,唯一的不同是它不是共享视频,Pachube使人们能够监测和共享与互联网相连的感应装置的实时环境数据。Pachube可以在不同的环境之间发挥作用,既实现了获得来自远程感应装置的导入数据,又实现了为远程促动器提供输出数据。任何两个环境之间可以建立连接,支持点对点、自发或事先未计划的连接[6]。远程监控端采用基于Android系统的手机。Android是谷歌公司和开放手机联盟(Open Handset Alliance)共同提供的软件平台。由嵌入式Linux和Java构成的Android系统的架构和工作原理决定了它是目前最具可移植性的移动设备操作系统[7-8]。
1.2 开发平台搭建
开发平台的搭建主要包括.NET Micro Framework的安装和Netduino的硬件平台的搭建。由于Netduino的IDE采用Visual Studio,要Visual Studio支持Netduino,首先必须安装.NET Micro Framework和Netduino SDK。目前,最新的.NET Micro Framework和Netduino SDK都是V.4.2.0版本。
智能家居网关与控制终端通过Internet进行互联,对Netduino Plus板载的网卡进行初始化的配置,设置IP地址、子网掩码、网关和DNS,同时也支持通过DHCP获取上述的设置信息。要在pachube.com上创建存储智能家居设备信息和控制指令的Feed及用来访问对应Feed的API key。
2 系统软件设计
2.1 网关设计
智能家居网关系统的主体流程如图3所示。系统启动后进行设备的初始化,并且通过XBee模块采集家居设备的状态信息,如房间的光照强度、火灾报警器信息等。采集数据后通过Netduino Plus板载的网口,通过HTTP协议发送信息到Pachube,同时监听从Pachube发送的指令。如果接收到控制指令则启动设备控制模块,发送指令给智能家居设备执行,同时网关进行设备数据的更新,将更新后的设备数据发送到Pachube。监听从Pachube发送的指令的部分代码如下:
……
//调用Pachube API的apikey
const string apikey=
"eRJdp_9i9l224rvrRpDN062owfeAkNan0ce_ZE1_21w";
//用于发送指令的feedId
const string feedId="49567";
var requestUri="http://api.pachube.com/v2/feeds/" + feedId + ".csv";
using (var request=(HttpWebRequest)
WebRequest.Create(requestUri))
{
request.Method="GET";
//通过GET形式获取数据
request.Headers.Add("X-PachubeApiKey", apikey);//添加Pachube API key
using (var response = (HttpWebResponse)request.GetResponse())
{
if (signal)
{
if(HandleResponse(response))
Home_windows1.Write(true);
//拉上房间的窗帘
……
2.2 远程控制端设计
远程控制端基于Android系统进行设计,主要有两个功能,一是从Pachube接收智能家居网关发送的设备信息(包含空调的温度、灯光的亮度等),同时判断获取的信息与上一次获取的信息是否相同。如果不同,则显示信息,并采用AChartEngine进行图形化的显示;如果相同,则再次从Pachube接收信息。二是发送远程控制指令给智能家居网关。系统发送指令到Pachube,智能家居网关收到控制指令后,将控制指令通过XBee模块组成的ZigBee网络传递给设备执行。执行完毕后,网关将指令执行情况发送到Pachube,远程控制端获取指令执行情况信息,并显示指令执行是否成功。远程控制端系统流程如图4所示,发送控制指令部分代码如下:
……
try {
//调用Pachube API
Pachube p = new Pachube
("eRJdp_9i9l224rvrRpDN062owfeAkNan0ce_ZE1_21w");
Feed f = p.getFeed(49568);
f.updateDatastream(1,ControlCode);
//发送控制指令
} catch (PachubeException e) {
System.out.println(e.errorMessage);
}
……
本文设计了一种基于Android和Pachube的智能家居远程监控系统,基于Netduino Plus的智能家居网关对整个家居系统进行控制,同时提供了远程访问的功能,通过ZigBee网络进行设备的控制和信息的传送,基于Android系统设计远程控制端通过Pachube和智能家居网关通信。此外,本系统的可扩展性强,可以将Pachube嵌入到网站中,不同操作系统的智能终端可以通过访问网站实现对智能家居的监控,这也是本系统进一步研究的方向。
参考文献
[1] 余炽业.一种智能家居远程监控系统设计[J].电测与仪表,2011,48(542):36-39.
[2] 郭渊博,杨奎武.ZigBee技术与应用-CC2430设计、开发与实践[M].北京:国防工业出版社,2010.
[3] 吴文忠,李万磊.基于ARM和ZigBee的智能家居系统[J].计算机工程与设计,2011,32(6):1987-1990.
[4] PRISTER C. Getting started with the Internet of things[M].America: O′Reilly Media, Inc, 2011.
[5] WALKER C. Getting started with Netduino[M]. America: O′Reilly Media, Inc,2012.
[6] 欢迎来到Pachube[EB/OL].http://www.pachube.cn/,2012-03-01.
[7] 农丽萍,王力虎,黄一平.Android在嵌入式车载导航系统的应用研究[J].计算机工程与设计,2010,31(11):2473-2476.
[8] 张魏,李卉.Android移动应用开发从入门到精通[M].北京:人民邮电出版社,2010.