吳雪琴 陳虹君
摘要:隨著現(xiàn)代化水平不斷提高,人們對(duì)智能要求也越來越高。為了提高家居的智能化控制,設(shè)計(jì)一種使用計(jì)算機(jī)無線網(wǎng)絡(luò)基于CortexA8的智能家居控制系統(tǒng)。該系統(tǒng)以CortexA8和ZigBee為核心,采用WEB服務(wù)器以B/S進(jìn)行控制和數(shù)據(jù)采集,通過移植Linux系統(tǒng),移植sqhte數(shù)據(jù)庫,移植驅(qū)動(dòng)程序?qū)崿F(xiàn)。
關(guān)鍵詞:智能家居;ZigBee;無線傳感網(wǎng)絡(luò);監(jiān)控
中圖分類號(hào):TP319 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)14-0193-03
物聯(lián)網(wǎng)在人類生活中有著廣泛的用途,但同時(shí)物聯(lián)網(wǎng)的發(fā)展進(jìn)展緩慢,影響物聯(lián)網(wǎng)發(fā)展的一個(gè)重大因素就是它非常靈活,在系統(tǒng)中存在大量處于不同網(wǎng)絡(luò)的設(shè)備,這些處于不同網(wǎng)絡(luò)的設(shè)備相互通信很困難,因此設(shè)計(jì)一個(gè)物聯(lián)網(wǎng)的通用控制平臺(tái)尤為重要,通過此平臺(tái)和網(wǎng)絡(luò)監(jiān)控可以實(shí)現(xiàn)智能家居控制系統(tǒng),在本文中設(shè)計(jì)此平臺(tái)并通過該平臺(tái)就實(shí)現(xiàn)家居中常用設(shè)備的控制,除此以外還能進(jìn)行溫濕度采集、有毒有害氣體的檢測(cè)等,在實(shí)際應(yīng)用中有著廣泛的應(yīng)用。
1系統(tǒng)簡介
該系統(tǒng)是一個(gè)智能家居控制通用平臺(tái),考慮到設(shè)備間的兼容性,在系統(tǒng)中采用B/S方式進(jìn)行設(shè)計(jì)。因此系統(tǒng)結(jié)構(gòu)主要由底層感知層,核心通信層和應(yīng)用業(yè)務(wù)層這三層組成。
底層感知層是系統(tǒng)最終被控制或者采集數(shù)據(jù)的層次,包括各種傳感器和執(zhí)行器。核心通信層是系統(tǒng)中唯一不變的層次,它為整個(gè)系統(tǒng)構(gòu)建框架,在這個(gè)層次中包含多個(gè)網(wǎng)絡(luò)服務(wù)器程序:隧道服務(wù)器、反向代理服務(wù)器、SN分配服務(wù)器、數(shù)據(jù)庫服務(wù)器等。應(yīng)用業(yè)務(wù)層是根據(jù)開發(fā)人員的實(shí)際需求,開發(fā)出相應(yīng)的應(yīng)用程序。由于系統(tǒng)采用B/S的方式,因此系統(tǒng)具有很大的延展性和可擴(kuò)展性。在這一個(gè)層次中,可以使用多種編程語言實(shí)現(xiàn)。
2系統(tǒng)工作原理
本系統(tǒng)控制原理是采用嵌入式Linux WEB服務(wù)器,通過CGI程序向Linux驅(qū)動(dòng)程序?qū)懭朊钭郑偻ㄟ^Linux驅(qū)動(dòng)程序控制ARM的GPIO的高低電平來控制電磁繼電器的方式來實(shí)現(xiàn)。傳感器則是單片機(jī)通過I/O收集來自傳感器的數(shù)據(jù)、通過串口發(fā)送到ARM開發(fā)板。步進(jìn)電機(jī)的控制原理則是ARM發(fā)送命令數(shù)據(jù)給CC2530,CC2530輸出高地電平控制ULN2003步進(jìn)電機(jī)驅(qū)動(dòng)芯片。從而達(dá)到控制步進(jìn)電機(jī)的目的。ARM開發(fā)板內(nèi)移植有Sqlite數(shù)據(jù)庫。收集的數(shù)據(jù)儲(chǔ)存在數(shù)據(jù)庫內(nèi)。用于顯示的CGI程序讀取數(shù)據(jù)庫里的值顯示到HTML網(wǎng)頁。嵌入式WEB服務(wù)器的登錄認(rèn)證是由CGI+JS+cookie配合完成的。
由于IPV4的限制,使其它網(wǎng)絡(luò)的用戶無法訪問位于本地局域網(wǎng)內(nèi)部的WEB服務(wù)器,因此系統(tǒng)提供了能訪問內(nèi)網(wǎng)WEB服務(wù)器的反向代理程序。它是通過MAC地址對(duì)系統(tǒng)中每一個(gè)作為物聯(lián)網(wǎng)網(wǎng)關(guān)的ARM開發(fā)板提供獨(dú)一的sN編號(hào),它可使其用戶直接輸入即可訪問。整個(gè)系統(tǒng)通過移植linux系統(tǒng),WEB服務(wù)器,Sqlite數(shù)據(jù)庫和CCGI庫實(shí)現(xiàn)。
1)linux系統(tǒng)的移植
采用天嵌公司TQ210開發(fā)板,這款開發(fā)板采用S5PV210作為CPU內(nèi)核,它的架構(gòu)是ARM Cortex-A8,可在其上移植好linux內(nèi)核以及相應(yīng)必要的驅(qū)動(dòng)程序后就可以開始進(jìn)行WEB服務(wù)器的移植。
2)WEB服務(wù)器的移植
市場(chǎng)上有很多的嵌入式WEB服務(wù)器,對(duì)于嵌入式WEB服務(wù)器基本要求是占用內(nèi)存小,實(shí)時(shí)性高。對(duì)于我們的系統(tǒng)而言,必須支持CGI程序。比較好的嵌入式WEB服務(wù)器有:boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。Apache是主流的WEB服務(wù)器但是占用內(nèi)存多,開銷很大。因此不適用于嵌入式WEB服務(wù)器。對(duì)比了其他服務(wù)器后,最終采用boa服務(wù)器,boa服務(wù)器占用資源很少,并且支持CGI。在www.boa.org上下載boa的源碼,解壓后進(jìn)行交叉編譯,然后再把boa的可執(zhí)行文件可配置文件拷貝到開發(fā)板上,boa就可以開始運(yùn)行。
3)Sqlite數(shù)據(jù)庫的移植
Sqlite是一種小型的可用在嵌入式設(shè)備上的關(guān)系數(shù)據(jù)庫。它主要是用來存儲(chǔ)由傳感器采集的數(shù)據(jù)。在www.sqlite.org上下載sqlite的源代碼,解壓后交叉編譯,將可執(zhí)行文件和庫拷貝到開發(fā)板上即可。
4)CCGI庫的移植
CCGI庫是一個(gè)C語言庫,用于C語言編寫CGI程序的一個(gè)函數(shù)庫,下載解壓后用VIM打開Makefile文件,將里面的編譯器改為交叉編譯器即可。
3核心通信層
作為系統(tǒng)的核心,核心通信層為整個(gè)系統(tǒng)提供框架,為上層的應(yīng)用業(yè)務(wù)層提供設(shè)備的控制和采集接口,同時(shí)也為底層的底層感知層提供平臺(tái)支持。
核心通信層可以劃分為兩個(gè)功能模塊:一個(gè)是網(wǎng)絡(luò)通信,它主要提供數(shù)據(jù)的傳輸,如隧道轉(zhuǎn)發(fā)、SN分配、上層接口調(diào)用;另一個(gè)是嵌入式WEB服務(wù)器(采用B/S通信方式),它主要提供WEB服務(wù)和底層驅(qū)動(dòng)程序以及安全認(rèn)證,以便于數(shù)據(jù)的傳輸以及對(duì)底層感知層的支持。
3.1核心通信層嵌入式WEB服務(wù)器設(shè)計(jì)
系統(tǒng)采用B/S方式進(jìn)行控制和數(shù)據(jù)采集,因此嵌入式WEB服務(wù)器是整個(gè)系統(tǒng)的核心,在實(shí)際項(xiàng)目中嵌入式WEB服務(wù)器實(shí)際上就是物聯(lián)網(wǎng)系統(tǒng)的物聯(lián)網(wǎng)網(wǎng)關(guān)。在本文中采用ARMlinux平臺(tái)實(shí)現(xiàn)嵌入式WEB服務(wù)器。嵌入式WEB服務(wù)器結(jié)構(gòu)圖如圖1所示。它主要通過網(wǎng)絡(luò)將物聯(lián)網(wǎng)網(wǎng)關(guān)(嵌入式WEB服務(wù)器)的端口轉(zhuǎn)發(fā)客戶端模塊與云服務(wù)器建立隧道通信和反向代理服務(wù)。同時(shí)嵌入式WEB服務(wù)器提供WEB服務(wù),收集來自協(xié)調(diào)器的數(shù)據(jù)后保存在sqlite數(shù)據(jù)中,再由CGI程序輸出和控制。端口轉(zhuǎn)發(fā)客戶端模塊將嵌入式WEB服務(wù)器轉(zhuǎn)發(fā)到云服務(wù)器使得外網(wǎng)用戶也能訪問。
3.2核心通信層網(wǎng)絡(luò)通信設(shè)計(jì)
通信設(shè)計(jì)是物聯(lián)網(wǎng)中的核心。在本系統(tǒng)中,由于采用B/S方式進(jìn)行通信,外網(wǎng)的客戶端不能夠訪問內(nèi)網(wǎng)的服務(wù)器,而物聯(lián)網(wǎng)系統(tǒng)是一個(gè)分布式網(wǎng)絡(luò),它負(fù)責(zé)連接所有的設(shè)備,因此網(wǎng)絡(luò)通信模塊主要是解決這個(gè)問題。網(wǎng)絡(luò)通信模塊主要實(shí)現(xiàn)如下三大功能:SSH隧道轉(zhuǎn)發(fā),代理服務(wù)及SN分配。
1)SSH隧道轉(zhuǎn)發(fā)
因?yàn)榍度胧絎EB服務(wù)器一般處于局域網(wǎng)內(nèi)部,因此想要訪問嵌入式WEB服務(wù)器必須依靠隧道轉(zhuǎn)發(fā)技術(shù),這種技術(shù)能讓用戶訪問處于內(nèi)網(wǎng)或者讓其他的網(wǎng)絡(luò)中的客戶端進(jìn)行訪問。公網(wǎng)服務(wù)器會(huì)分配一個(gè)端口號(hào),用于監(jiān)聽來自對(duì)嵌入式WEB服務(wù)器的請(qǐng)求。
2)代理服務(wù)器
在這個(gè)物聯(lián)網(wǎng)系統(tǒng)中的代理服務(wù)器是一個(gè)反向代理服務(wù)器,啟動(dòng)隧道轉(zhuǎn)發(fā)后,在公網(wǎng)服務(wù)器上就會(huì)有一個(gè)監(jiān)聽端口。這個(gè)端口是處于公網(wǎng)服務(wù)器的防火墻的內(nèi)部的。為了數(shù)據(jù)的安全性因此必須用防火墻對(duì)數(shù)據(jù)進(jìn)行過濾。反向代理服務(wù)器的作用就是將處于防火墻內(nèi)的端口代理出防火墻外,這樣一來有利于數(shù)據(jù)的安全性。在此系統(tǒng)中,反向代理服務(wù)器中常用的是Hap-roxy代理服務(wù)器,它將本地的嵌入式WEB服務(wù)器端口80映射到公網(wǎng)服務(wù)器上時(shí),公網(wǎng)服務(wù)器程序會(huì)分配一個(gè)端口。此時(shí)這個(gè)端口為127.0.0.1:port,再由Haproxy反向代理出去,并且生成一個(gè)URL,這個(gè)URL就是嵌入式WEB服務(wù)器的控制鏈接。每一個(gè)嵌入式WEB服務(wù)器的URL不同,因?yàn)樵趯?shí)際應(yīng)用中,可能存在多個(gè)嵌入式WEB服務(wù)器。
3)SN分配
在實(shí)際中系統(tǒng)中可能存在不僅一個(gè)嵌入式WEB服務(wù)器。這些不同的嵌入式WEB服務(wù)器控制和采集對(duì)應(yīng)的執(zhí)行器和感知器。SN分配的功能就是將不同的嵌入式WEB區(qū)別開,SN號(hào)在整個(gè)系統(tǒng)中獨(dú)一無二,SN對(duì)應(yīng)這一個(gè)嵌入式WEB服務(wù)器。SN分配的原理是端口轉(zhuǎn)發(fā)。嵌入式WEB服務(wù)器進(jìn)行端口轉(zhuǎn)發(fā)時(shí),服務(wù)器會(huì)分配一個(gè)端口號(hào)來進(jìn)行監(jiān)聽WEB端口請(qǐng)求,而數(shù)據(jù)庫對(duì)SN和端口號(hào)進(jìn)行關(guān)聯(lián)。服務(wù)器端程序流程和設(shè)備終端程序流程分別見圖2和圖3。
4底層感知層
TQ210與Zigbee通信采用串口通信。Zigbee CC2530電路圖如圖4所示。該系統(tǒng)中控制步進(jìn)電機(jī)的原理則是CGI程序發(fā)送串口數(shù)據(jù),Zigbee接收數(shù)據(jù)后,對(duì)命令進(jìn)行解析,從而實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的控制,而家居設(shè)備中的燈則是則是通過GPIO的高低電平來來控制電磁電器閉合實(shí)現(xiàn)其開、關(guān)狀態(tài)。傳感器則是由Zigbee收集數(shù)據(jù),通過串口發(fā)生給TQ210。CGI程序通過串口收集到數(shù)據(jù)后,將數(shù)據(jù)存入數(shù)據(jù)庫,再由用于顯示的CGI程序,讀取數(shù)據(jù)庫中的數(shù)據(jù),最后進(jìn)行顯示,從而實(shí)現(xiàn)所需功能。
5應(yīng)用層
應(yīng)用層為用戶提供輸入SN號(hào)的操作平臺(tái),并且注冊(cè)用戶名、已經(jīng)通過用戶輸人的SN來跳轉(zhuǎn)到對(duì)應(yīng)的智能家居網(wǎng)關(guān)控制監(jiān)控頁面。
在此系統(tǒng)中,應(yīng)用層以網(wǎng)站形式呈現(xiàn),而在核心層服務(wù)器已經(jīng)生成好了頁面的鏈接,該網(wǎng)站只需要根據(jù)用戶輸入的SN號(hào)跳轉(zhuǎn)到對(duì)應(yīng)的頁面即可。
6結(jié)束語
本文實(shí)現(xiàn)了基于Cortex A8的智能家居控制系統(tǒng),能對(duì)家居設(shè)備進(jìn)行自動(dòng)開、關(guān),能通過步進(jìn)電機(jī)實(shí)現(xiàn)對(duì)電扇的順時(shí)針和逆時(shí)針旋轉(zhuǎn),還能對(duì)溫濕度和氣體進(jìn)行檢測(cè),通過多次實(shí)驗(yàn)表明,此設(shè)計(jì)方案較好地搭建了智能家居控制平臺(tái),達(dá)到了預(yù)期效果,這些思路和方法在實(shí)際中都值得借鑒,在工業(yè)上也有很高的應(yīng)用價(jià)值。