殷賢華+劉明緣+王寧



摘 要: 針對普通智能家居系統(tǒng)接口標(biāo)準(zhǔn)多、維護成本高、移動性差等缺點,提出一種基于Raspberry Pi嵌入式平臺的智能家居系統(tǒng)設(shè)計方案。該系統(tǒng)由控制器、Web服務(wù)器、Web瀏覽器、APP移動終端和監(jiān)控終端組成,采用ZigBee技術(shù)實現(xiàn)監(jiān)控終端與控制器之間的通信。實驗表明,該系統(tǒng)能使用戶通過Web瀏覽器或手機APP終端實現(xiàn)對家居的遠程監(jiān)控,具備較好的應(yīng)用價值。
關(guān)鍵詞: Raspberry Pi; 服務(wù)器; 客戶端; ZigBee
中圖分類號: TN911?34; TP311 文獻標(biāo)識碼: A 文章編號: 1004?373X(2016)23?0161?04
Design of smart home system based on Raspberry Pi
YIN Xianhua, LIU Mingyuan, WANG Ning
(School of Electronic Engineering and Automation, Guilin University of Electronic Technology, Guilin 541004, China)
Abstract: In order to overcome the disadvantages of multiple interface standards, high maintenance cost and poor mobility of the general smart home system, a new design scheme of smart home system based on Raspberry Pi embedded platform is proposed. The system is composed of controller, Web server, Web browser, APP mobile terminal and monitoring terminal. The ZigBee technology is adopted to communicate between the monitoring terminal and controller. The experimental results show that the system can help users to realize the home remote monitoring through Web browser or mobile phone APP terminal, and has good practical value.
Keywords: Raspberry Pi; server; client; ZigBee
0 引 言
智能家居是以住宅為平臺,利用綜合布線技術(shù)、網(wǎng)絡(luò)通信技術(shù)、自動控制技術(shù)等,兼顧自動化和智能化為一體的高效、安全、便利的家居環(huán)境[1]。隨著物聯(lián)網(wǎng)技術(shù)日趨成熟,智能家居設(shè)備正受到廣泛的關(guān)注。開發(fā)成本低、移動性強、擴展性更好的普通智能家居系統(tǒng)是當(dāng)前亟需解決的問題[2]。
Raspberry Pi(中文名稱:樹莓派)是一個新興的嵌入式平臺,在國外得到廣泛的應(yīng)用,在國內(nèi)的研究應(yīng)用較少,該嵌入式平臺的核心優(yōu)勢在于成本低,拓展性強,應(yīng)用領(lǐng)域廣,社會關(guān)注度高。樹莓派微型計算機的發(fā)展證明,樹莓派在許多領(lǐng)域都有巨大的應(yīng)用潛力[3]。為了緊跟國際發(fā)展趨勢,研究、拓展和創(chuàng)造更具競爭力的智能家居系統(tǒng),選擇關(guān)注度高的Raspberry Pi更有優(yōu)勢和應(yīng)用價值[3]。該智能家居系統(tǒng)以Raspberry Pi 為核心進行開發(fā),整合了傳感器技術(shù)、ZigBee無線通信、Linux系統(tǒng)應(yīng)用、Web 服務(wù)器與頁面設(shè)計以及Android 客戶端設(shè)計等。該系統(tǒng)具有成本低、可靠性高與拓展性好等優(yōu)勢,避免了重復(fù)的構(gòu)架設(shè)計與產(chǎn)品研究,讓產(chǎn)品的升級拓展更加便捷,在一定程度上減少了人力物力的花費。
1 系統(tǒng)結(jié)構(gòu)
基于Raspberry Pi的智能家居系統(tǒng)由家居監(jiān)控終端、Raspberry Pi服務(wù)器、Web客戶端與Android客戶端組成,系統(tǒng)框圖見圖1。
家居監(jiān)控終端應(yīng)用ZigBee無線組網(wǎng)技術(shù)、家用電路控制技術(shù)與攝像頭監(jiān)控技術(shù),實現(xiàn)對家居環(huán)境的火災(zāi)、水災(zāi)、溫濕度、光照度、煤氣泄漏和入室盜竊等信息的實時監(jiān)測;Raspberry Pi服務(wù)器應(yīng)用Raspberry Pi嵌入式平臺,實現(xiàn)了智能家居系統(tǒng)的服務(wù)器設(shè)計、數(shù)據(jù)庫搭建與后臺服務(wù)支持;客戶端應(yīng)用基于Internet的通信技術(shù),通過網(wǎng)頁界面開發(fā)、頁面與服務(wù)器數(shù)據(jù)交換技術(shù)設(shè)計Web客戶端,通過Android界面開發(fā)、Android網(wǎng)絡(luò)通信技術(shù)設(shè)計Android客戶端,使用戶能通過計算機和移動智能設(shè)備對智能家居實時監(jiān)控。
2 家居監(jiān)控終端設(shè)計
家居監(jiān)控終端使用ZigBee與傳感器構(gòu)建監(jiān)測、控制電路,利用TI公司研發(fā)的Z?Stack協(xié)議棧實現(xiàn)組網(wǎng)通信。
2.1 家居監(jiān)控終端硬件設(shè)計
家居監(jiān)控終端由ZigBee CC2530核心模塊與底板擴展電路構(gòu)成,不同功能的監(jiān)控終端需要設(shè)計不同的底板擴展電路:協(xié)調(diào)器節(jié)點直接通過串口與Raspberry Pi服務(wù)器連接,需要為其設(shè)計CH340 USB轉(zhuǎn)串口模塊;控制節(jié)點通過接收協(xié)調(diào)器節(jié)點發(fā)布控制信息,實現(xiàn)開關(guān)家用電器的作用,需要為其設(shè)計繼電器電路模塊;監(jiān)測終端實時監(jiān)測家居環(huán)境的溫濕度、煙霧水浸、人體紅外與光照強度等信息,需要為其設(shè)計相應(yīng)的傳感器電路模塊。
協(xié)調(diào)器節(jié)點實現(xiàn)了CH340芯片及其外圍電路的設(shè)計,為CH340提供電源電壓與晶振,能支持50 b/s~2 Mb/s的波特率通信,USB硬件原理圖見圖2(a)。控制終端利用繼電器與LED實現(xiàn)模擬控制家電設(shè)備的開關(guān),控制電路原理圖見圖2(b)。
2.2 家居監(jiān)控終端軟件設(shè)計
家居監(jiān)控終端圍繞ZigBee CC2530設(shè)計,監(jiān)測、控制終端利用ZigBee協(xié)議棧實現(xiàn)組網(wǎng)通信,在智能家居系統(tǒng)中,基于TI公司研發(fā)的ZStack?CC2530?2.5.1a版本進行開發(fā)。Z?Stack采用模塊化方法,基于ZigBee規(guī)范中的協(xié)議棧構(gòu)架進行設(shè)計[4]。
在ZigBee協(xié)議棧中,首先由ZMain.c對系統(tǒng)進行一系列的初始化,初始化結(jié)束后將控制權(quán)交給操作系統(tǒng),協(xié)議棧ZMain程序流程圖見圖3。
智能家居系統(tǒng)中,協(xié)調(diào)器節(jié)點通過USB接口與Raspberry Pi服務(wù)器直接相連,需要實現(xiàn)創(chuàng)建ZigBee無線網(wǎng)與接入網(wǎng)內(nèi)的控制終端、監(jiān)測終端交互數(shù)據(jù)等功能。在協(xié)調(diào)器與Raspberry Pi通信時,需要將數(shù)據(jù)封裝成特定的幀格式。
3 Raspberry Pi服務(wù)器設(shè)計
構(gòu)建Raspberry Pi服務(wù)器需要搭建Raspbian系統(tǒng),為系統(tǒng)根目錄擴容并添加鏡像站支持;安裝與配置Nginx,使Web服務(wù)器支持HTTP訪問支持;安裝MySQL,并為服務(wù)器優(yōu)化數(shù)據(jù)庫配置、設(shè)計數(shù)據(jù)表;設(shè)計Python后臺程序,實現(xiàn)家居監(jiān)控終端與Raspberry Pi服務(wù)器的數(shù)據(jù)交互。
3.1 構(gòu)建Raspbian系統(tǒng)
Raspbian是Debian Linux為Raspberry Pi定制的版本,專門對ARM架構(gòu)進行優(yōu)化[5]。Raspbian支持ssh登錄,當(dāng)其接入控制后,可以直接使用Putty登錄Rasberry Pi。
登錄Raspbian后,執(zhí)行操作sudo raspi?config,選擇Expand Filesystem則可將Raspbian存儲空間擴大至SD卡容量大小。Raspbian軟件的更新由鏡像站支持,其默認(rèn)使用國外鏡像站,相對而言,國內(nèi)的開源鏡像站同步速度更穩(wěn)定,下載速度也更快,故需要更換國內(nèi)合適的鏡像站作為軟件源。
3.2 構(gòu)建Web服務(wù)器
Nginx(“engine x”)是一款高性能的HTTP和反向代理服務(wù)器[6]。它可以直接內(nèi)部支持PHP對外服務(wù)[7],也可以支持作為HTTP代理服務(wù)器對外服務(wù)。為了在Raspberry Pi上構(gòu)建Web服務(wù)器,需要修改/etc/local/nginx/conf/路徑下的nginx.conf文件,改變數(shù)據(jù)流量的壓縮率,優(yōu)化Nginx對內(nèi)存的使用。
3.3 數(shù)據(jù)庫設(shè)計
MySQL是Web應(yīng)用方面最好的關(guān)系數(shù)據(jù)庫系統(tǒng),由于其體積小、速度快、成本低、源代碼開放[8],能夠很好地配合PHP和Nginx組成良好的開發(fā)環(huán)境,可以滿足設(shè)計的需求,減輕Raspberry Pi服務(wù)器的運行負(fù)擔(dān),減少存儲空間的消耗。
為了構(gòu)建合適的智能家居系統(tǒng)數(shù)據(jù)庫,需要對MySQL進行一定的設(shè)置與優(yōu)化,修改路徑/etc/mysql下的my.cnf文件。設(shè)計數(shù)據(jù)庫時,需要構(gòu)建與監(jiān)測、控制信息相對應(yīng)的表。在構(gòu)建溫度濕度、煙霧光照、控制信息表時,使用Datetime格式標(biāo)記時間戳,使用變長浮點數(shù)Decimal格式標(biāo)記對應(yīng)的攝氏度(℃)、相對濕度(Relative Humidity,簡寫RH)、光照xLX、煙霧濃度(PPM)等數(shù)據(jù)。
對于圖片存儲,MySQL支持以BLOB,MEDIUMBLOB,LONGBLOB格式直接存儲圖片,但在Raspberry Pi的硬件平臺上,若頻繁存儲、讀取圖片會增加服務(wù)器的運行負(fù)擔(dān)。所以在設(shè)計圖像信息結(jié)構(gòu)表時,使用存儲圖片的存儲路徑方式代替直接存儲圖片的方式。在服務(wù)器端,將圖片以特定的格式命名(例如,2015?05?06 10:10:10 時間點存儲的圖片對應(yīng)命名為20150506101010.jpg),加快客戶端數(shù)據(jù)鏈接速度。在客戶端,第一次讀取的是圖片路徑,第二次讀取對應(yīng)路徑下的圖片。
3.4 服務(wù)器后臺程序設(shè)計
在智能家居服務(wù)器的后臺程序設(shè)計中,使用Python作為服務(wù)器腳本語言,實現(xiàn)家居監(jiān)控終端的數(shù)據(jù)通信功能、數(shù)據(jù)庫數(shù)據(jù)存取功能。
家居監(jiān)控終端數(shù)據(jù)通信程序?qū)崿F(xiàn)了服務(wù)器與家居監(jiān)控終端的實時通信,實時存儲家居監(jiān)測終端采集的數(shù)據(jù),并將Web客戶端、Android客戶端改變的控制參數(shù)發(fā)送至家居控制終端。攝像頭圖像采集程序通過攝像頭實時監(jiān)控數(shù)據(jù)庫變化。當(dāng)監(jiān)控環(huán)境中有人時,程序控制攝像頭采集圖像信息,獲取監(jiān)控環(huán)境的人物圖像,將獲取的圖像以特定格式命名,并將圖片路徑存入數(shù)據(jù)庫。
4 客戶端設(shè)計
客戶端有Web客戶端與Android客戶端兩種,使用MVC框架模式構(gòu)建,通過構(gòu)建通用Model可以實現(xiàn)客戶端同步服務(wù)器數(shù)據(jù)。
4.1 Web客戶端設(shè)計
Web客戶端采用瀏覽器/服務(wù)器結(jié)構(gòu)(簡稱B/S結(jié)構(gòu))[9],該結(jié)構(gòu)將客戶端統(tǒng)一到頁面上,用戶只需要訪問網(wǎng)絡(luò)頁面就可以瀏覽信息并產(chǎn)生交互。Web客戶端需要進行MVC實例化,視圖實現(xiàn)彈窗、描繪曲線、顯示圖片的功能,控制器部分實現(xiàn)日期選擇,模型部分使用PHP對數(shù)據(jù)庫相關(guān)信息實現(xiàn)調(diào)用與修改。
Web客戶端實現(xiàn)了登錄、瀏覽監(jiān)測數(shù)據(jù)、瀏覽監(jiān)控圖片、控制家電設(shè)備等功能。從軟件結(jié)構(gòu)上,Web客戶端的實現(xiàn)可以分為三大部分:前端顯示頁面實現(xiàn)了瀏覽界面的布局、標(biāo)記以及樣式定制;頁面動態(tài)交互操作實現(xiàn)了網(wǎng)頁操作的響應(yīng)、動態(tài)加載數(shù)據(jù)以及動態(tài)構(gòu)建頁面;后端數(shù)據(jù)處理實現(xiàn)了RESTful API,數(shù)據(jù)庫存取與JSON數(shù)據(jù)格式化[6]。
在Web客戶端,將溫度濕度、煙霧光照、RPi信息三個頁面中的數(shù)據(jù)信息轉(zhuǎn)化為數(shù)據(jù)曲線,并對圖像進行實時采集;在室內(nèi)控制頁面中,通過自定義CSS實現(xiàn)了家電開關(guān)按鈕與閾值設(shè)置框,關(guān)按鈕可以通過改變開關(guān)狀態(tài)控制家電設(shè)備;閾值框可以更新閾值大小設(shè)置監(jiān)測警報參數(shù)。Web客戶端的數(shù)據(jù)曲線、圖像采集和控制界面,如圖4所示。
4.2 Android客戶端設(shè)計
Android客戶端采用客戶機/服務(wù)器結(jié)構(gòu)(簡稱C/S結(jié)構(gòu))。該結(jié)構(gòu)應(yīng)用在移動智能設(shè)備上,用戶能通過移動智能設(shè)備隨時隨地獲取服務(wù)器信息,獲取服務(wù)器的服務(wù)[10]。Android客戶端需要進行MVC實例化,視圖實現(xiàn)了顯示字符、圖片、數(shù)據(jù)曲線的功能,控制器部分實現(xiàn)響應(yīng)用戶控制信息,模型部分實現(xiàn)對數(shù)據(jù)庫對應(yīng)信息的調(diào)用與修改。
Android客戶端實現(xiàn)瀏覽監(jiān)測數(shù)據(jù)、瀏覽監(jiān)控圖片、控制家電設(shè)備等功能。在客戶端的設(shè)計中,使用Activity構(gòu)建客戶端界面,通過Service獲取/修改服務(wù)器數(shù)據(jù)實現(xiàn)相應(yīng)功能。
Android客戶端設(shè)計了4種不同的界面:主界面用于顯示不同項目的菜單;監(jiān)測數(shù)據(jù)曲線界面用于顯示監(jiān)測數(shù)據(jù)在不同時間的變化曲線;圖像信息界面用于顯示有人時采集到的監(jiān)控圖像畫面;室內(nèi)控制界面用于顯示家電設(shè)備控制、設(shè)置警報閾值;信息欄彈窗用于提示有人進入圖像監(jiān)控區(qū)域,通過點擊信號欄圖標(biāo)可以瀏覽獲取到的最新圖像。Android客戶端的主界面、監(jiān)測數(shù)據(jù)曲線和室內(nèi)控制界面,如圖5所示。
5 結(jié) 語
利用ZigBee技術(shù)構(gòu)建家居環(huán)境監(jiān)測終端,基于Raspberry Pi嵌入式平臺,使用Nginx+MySQL+PHP的軟件方案實現(xiàn)了網(wǎng)頁服務(wù)器的搭建,并與Web客戶端及Android客戶端結(jié)合,組成了完善的多平臺智能家居系統(tǒng)。經(jīng)過測試和運行,本系統(tǒng)能很好地提供智能家居服務(wù)功能,用戶可以通過智能移動設(shè)備或瀏覽器網(wǎng)頁訪問系統(tǒng),對家居環(huán)境實時監(jiān)控,并通過客戶端界面對系統(tǒng)進行控制,實現(xiàn)了多平臺的人機交互。系統(tǒng)工作穩(wěn)定、可靠,具有良好的擴展性,具備較大的實用價值。
參考文獻
[1] 陶在紅,楊宇,常建華.基于ZigBee的智能家居控制系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2014,37(23):9?12.
[2] 楊曉迪,廖昕,古麗米拉·克孜爾別克,等.基于ARM的智能家居控制系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2015,38(8):93?95.
[3] EDWARDS C. Not?so?humble Raspberry Pi gets big ideas [J]. Engineering & technology, 2013, 8(3): 30?33.
[4] 江丹丹,唐煜程,唐東.一種基于ZigBee及GSM混合網(wǎng)絡(luò)的輕智能家居安防系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2015,38(3):6?8.
[5] 李楊,郭培源,劉波,等.基于嵌入式技術(shù)的居室健康環(huán)境監(jiān)測系統(tǒng)[J].電子技術(shù)應(yīng)用,2014,40(8):24?26.
[6] ALLAMARAJU S. RESTful Web Services Cookbook(中文版)[M].北京:電子工業(yè)出版社,2011.
[7] 陳亮,高宏力,周倫.嵌入式服務(wù)器在智能家居系統(tǒng)中的應(yīng)用[J].計算機測量與控制,2015(5):1758?1761.
[8] 馮興利,索志海,徐墨.基于PHP+MySQL的Web系統(tǒng)安全防范及全站靜態(tài)化[J].現(xiàn)代電子技術(shù),2012,35(8):25?27.
[9] 李紅剛,張素萍,方佳,等.基于ARM的智能家居遠程監(jiān)控系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2009,32(5):134?138.
[10] 顧菊芬,陳敏鋒,楊國華.基于Android的物聯(lián)網(wǎng)移動數(shù)據(jù)網(wǎng)關(guān)的設(shè)計與應(yīng)用[J].測控技術(shù),2014(6):107?110.