摘 要: 設計了一種可遠程控制的智能家居監控系統,采用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.