陳 詮, 畢忠勤, 劉大明
(上海電力學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 上海 200090)
基于樹莓派的物聯(lián)網(wǎng)ZigBee網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)
陳 詮, 畢忠勤, 劉大明
(上海電力學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 上海 200090)
利用樹莓派這種體積小、成本低、便于攜帶的微型主機(jī)實(shí)現(xiàn)了一個(gè)電能監(jiān)測(cè)ZigBee網(wǎng)絡(luò)的多網(wǎng)融合網(wǎng)關(guān),并基于非阻塞異步I/O,實(shí)現(xiàn)了PC端和手機(jī)端的并發(fā)訪問.各部分功能均通過實(shí)驗(yàn)進(jìn)行了驗(yàn)證.
樹莓派; 物聯(lián)網(wǎng); 網(wǎng)關(guān); 電能監(jiān)測(cè)
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,無線傳感器網(wǎng)絡(luò)技術(shù)除了在工業(yè)控制、辦公自動(dòng)化等領(lǐng)域得到應(yīng)用之外,也開始現(xiàn)身于家庭級(jí)別的應(yīng)用,如智能家電、樓宇自動(dòng)化等.傳感器節(jié)點(diǎn)一般都具有體積小、成本低、功耗低的優(yōu)勢(shì),而ZigBee技術(shù)也是一種新興的短距離無線通信技術(shù),特別適用于低成本、低功耗、小范圍的網(wǎng)絡(luò)設(shè)備的無線通信.隨著對(duì)傳感器數(shù)據(jù)的收集、傳輸與分析,人們的日常生活也會(huì)變得更加便利和智能化.
但是ZigBee 協(xié)議與互聯(lián)網(wǎng)中TCP/IP 協(xié)議族并不兼容,如何將ZigBee消息接入互聯(lián)網(wǎng),是物聯(lián)網(wǎng)研究中的熱點(diǎn)問題,如文獻(xiàn)[1]基于龍芯1B開發(fā)板實(shí)現(xiàn)了一個(gè)物聯(lián)網(wǎng)ZigBee網(wǎng)關(guān).
樹莓派作為世界上最小的臺(tái)式機(jī),外形只有信用卡大小,卻具備電腦的所有基本功能,具有體積小、成本低、便于攜帶的應(yīng)用優(yōu)勢(shì)及實(shí)用價(jià)值.樹莓派比個(gè)人電腦體積小、耗能低;用于開發(fā)網(wǎng)關(guān)時(shí),比專用開發(fā)板功能更完善,更易于維護(hù).將樹莓派作為ZigBee網(wǎng)絡(luò)接入互聯(lián)網(wǎng)的中繼網(wǎng)關(guān),特別適用于家庭級(jí)別及小規(guī)模的工業(yè)企業(yè)的傳感器監(jiān)測(cè)工作,例如文獻(xiàn)[2]和文獻(xiàn)[3]介紹了樹莓派在水質(zhì)監(jiān)測(cè)、網(wǎng)絡(luò)監(jiān)控等方面的應(yīng)用.
為了用樹莓派實(shí)現(xiàn)ZigBee無線傳感器網(wǎng)絡(luò)的網(wǎng)關(guān),本文基于一個(gè)電能監(jiān)測(cè)ZigBee網(wǎng)絡(luò)[4-5],提出了一種樹莓派作為網(wǎng)關(guān)的設(shè)計(jì)方案,實(shí)現(xiàn)了ZigBee協(xié)議向TCP協(xié)議的數(shù)據(jù)傳輸轉(zhuǎn)換,以及用于移動(dòng)手機(jī)和個(gè)人電腦訪問的服務(wù)器端功能.
網(wǎng)關(guān)是實(shí)現(xiàn)無線傳感器網(wǎng)絡(luò)與局域網(wǎng)、互聯(lián)網(wǎng)連接的重要設(shè)備,其性能及工作狀態(tài)對(duì)后續(xù)的數(shù)據(jù)存儲(chǔ)和分析有重要影響.本文將樹莓派作為家庭級(jí)別網(wǎng)絡(luò)的網(wǎng)關(guān),利用其“麻雀雖小,五臟俱全”的特性,將其部署為PC訪問、手機(jī)端訪問的數(shù)據(jù)服務(wù)中心,大大減少了家庭級(jí)別用戶的設(shè)備需求.
整個(gè)系統(tǒng)的硬件結(jié)構(gòu)原理如圖1所示.
圖1 基于ZigBee技術(shù)及樹莓派網(wǎng)關(guān)的電能監(jiān)測(cè)系統(tǒng)
網(wǎng)關(guān)為樹莓派2代,B型,RAM為1GB,并配有一個(gè)無線傳輸WiFi模塊.ZigBee網(wǎng)絡(luò)的匯聚節(jié)點(diǎn)以USB端口與樹莓派相接,占用的串口設(shè)備端口為ttyUSB0,波特率為115 200.連接了匯聚節(jié)點(diǎn)的樹莓派網(wǎng)關(guān)實(shí)物如圖2所示.
圖2 已接入?yún)R聚節(jié)點(diǎn)的網(wǎng)關(guān)實(shí)物
樹莓派網(wǎng)關(guān)的上游實(shí)現(xiàn)了電能監(jiān)測(cè)的ZigBee無線傳感器網(wǎng)絡(luò),監(jiān)測(cè)的數(shù)據(jù)包含各節(jié)點(diǎn)設(shè)備的溫度、濕度、光照、電壓、電流、功率、電量及數(shù)據(jù)傳輸?shù)穆窂叫畔?各個(gè)節(jié)點(diǎn)均可作為其他節(jié)點(diǎn)數(shù)據(jù)無線傳輸?shù)闹欣^,且數(shù)據(jù)的無線傳輸一般可以穿過兩面墻體,所有數(shù)據(jù)最后經(jīng)過一個(gè)匯聚節(jié)點(diǎn)傳入樹莓派網(wǎng)關(guān).這些無線傳輸?shù)男阅茏阋詽M足家庭級(jí)別及小型工業(yè)企業(yè)的需求.
樹莓派網(wǎng)關(guān)的下游可以連接3類設(shè)備,實(shí)現(xiàn)3類功能,除了B/S型的PC端訪問及手機(jī)端訪問外,還可以C/S模式下的TCP/IP協(xié)議接收傳感器數(shù)據(jù),再將數(shù)據(jù)上傳至數(shù)據(jù)庫或云端設(shè)備.
2.1 網(wǎng)關(guān)協(xié)議轉(zhuǎn)換方法
網(wǎng)關(guān)的首要功能是協(xié)議轉(zhuǎn)換,以此為基礎(chǔ)實(shí)現(xiàn)多網(wǎng)融合.根據(jù)文獻(xiàn)[6],ZigBee協(xié)議與TCP/IP協(xié)議轉(zhuǎn)換的工作原理如圖3所示.由圖3可知,網(wǎng)關(guān)在收到匯聚節(jié)點(diǎn)發(fā)來的消息后,需要根據(jù)ZigBee協(xié)議規(guī)范去除物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層的包頭,對(duì)應(yīng)用層數(shù)據(jù)進(jìn)行處理.這里電能監(jiān)測(cè)ZigBee網(wǎng)絡(luò)應(yīng)用層的消息幀為十六進(jìn)制數(shù)據(jù),且不包含時(shí)間戳,因此需要進(jìn)行解析,并記得加入時(shí)間戳.在對(duì)應(yīng)用層數(shù)據(jù)處理完畢后,按照TCP/IP協(xié)議標(biāo)準(zhǔn)重新對(duì)數(shù)據(jù)進(jìn)行封裝,以待發(fā)出.
圖3 ZigBee協(xié)議與TCP/IP協(xié)議轉(zhuǎn)換示意
網(wǎng)關(guān)還需要通過設(shè)置TCP服務(wù)器實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā)功能.對(duì)于傳感器數(shù)據(jù),如果需要存儲(chǔ)和分析,就要保證數(shù)據(jù)的完整性,因此網(wǎng)關(guān)要實(shí)現(xiàn)一對(duì)一的可靠數(shù)據(jù)流傳輸,即TCP協(xié)議傳輸.通過在網(wǎng)關(guān)上設(shè)置多線程TCP服務(wù)器,可以實(shí)現(xiàn)多個(gè)PC客戶端對(duì)數(shù)據(jù)的接收和處理,在數(shù)據(jù)量較大時(shí)可以分工協(xié)作,最終完成數(shù)據(jù)的轉(zhuǎn)發(fā)、存儲(chǔ)等功能.
利用樹莓派的優(yōu)勢(shì),網(wǎng)關(guān)還可以實(shí)現(xiàn)PC端網(wǎng)頁訪問和移動(dòng)手機(jī)端的訪問.除了對(duì)選擇好的數(shù)據(jù)加入特定的http協(xié)議頭外,這里需要解決的主要問題是多個(gè)終端對(duì)網(wǎng)關(guān)的并發(fā)訪問,移動(dòng)手機(jī)端的數(shù)據(jù)訪問很可能需要數(shù)秒就更新一次數(shù)據(jù),即每隔數(shù)秒訪問一次服務(wù)器,而且需要考慮多個(gè)手機(jī)同時(shí)訪問的情形.
2.2 樹莓派網(wǎng)關(guān)的總體架構(gòu)設(shè)計(jì)
由于樹莓派以Linux系統(tǒng)為基礎(chǔ),提供了Python語言作為用戶可選的主要開發(fā)語言,因此本系統(tǒng)也采用Python作為主要的開發(fā)語言,涉及的主要模塊有串口通信模塊、套接字模塊、多線程模塊和異步I/O模塊,均為樹莓派中Python庫的已有模塊.
網(wǎng)關(guān)的架構(gòu)設(shè)計(jì)如圖4所示.
圖4 樹莓派網(wǎng)關(guān)的總體架構(gòu)設(shè)計(jì)
利用串口通信模塊可以對(duì)無線傳感器網(wǎng)絡(luò)的匯聚節(jié)點(diǎn)進(jìn)行讀寫.套接字模塊可以將解碼后的數(shù)據(jù)以TCP/IP協(xié)議發(fā)給遠(yuǎn)程客戶端,從而上傳數(shù)據(jù)庫或進(jìn)行分析.
通過多線程并發(fā)處理,可以保證數(shù)據(jù)采集、中繼及并發(fā)訪問等幾大主要功能的性能,這對(duì)整個(gè)網(wǎng)關(guān)的穩(wěn)定性及性能具有關(guān)鍵作用.
3.1 傳輸協(xié)議轉(zhuǎn)換
網(wǎng)關(guān)需要實(shí)現(xiàn)的首要功能便是從ZigBee協(xié)議向TCP/IP協(xié)議轉(zhuǎn)換,涉及的具體工作便是對(duì)應(yīng)用層傳輸數(shù)據(jù)格式的解碼,可劃分為6個(gè)主要步驟:識(shí)別幀邊界,將串行數(shù)據(jù)根據(jù)邊界標(biāo)識(shí)符(幀頭“0x7E”)劃分為單個(gè)的數(shù)據(jù)幀;數(shù)據(jù)轉(zhuǎn)義,將因幀頭轉(zhuǎn)義的數(shù)據(jù)恢復(fù)為初始數(shù)據(jù);識(shí)別合法幀,根據(jù)特定標(biāo)識(shí)位的數(shù)據(jù)判別幀的完整性及合法性,舍棄失真幀;數(shù)據(jù)解碼,根據(jù)各類傳感器數(shù)據(jù)的編碼,對(duì)其數(shù)據(jù)進(jìn)行解碼計(jì)算;生成時(shí)間標(biāo)簽,根據(jù)當(dāng)前時(shí)間加入采集時(shí)間標(biāo)簽;生成新數(shù)據(jù)對(duì)象,組合各傳感器數(shù)據(jù),生成數(shù)據(jù)對(duì)象,構(gòu)建新的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu).
新生成的數(shù)據(jù)可以列表或字典的形式存儲(chǔ)于內(nèi)存中,而列表和字典均為線程安全,可供其他線程并行訪問和編輯.
3.2 TCP數(shù)據(jù)傳輸服務(wù)器的搭建
由于樹莓派以TF卡作為永久存儲(chǔ)設(shè)備,因此其容量有限,而且這種設(shè)備的訪問次數(shù)和訪問頻率也會(huì)受到一定的限制.雖然可以在樹莓派上搭建數(shù)據(jù)庫服務(wù)器,但由于傳感器設(shè)備的數(shù)據(jù)產(chǎn)出頻率高、數(shù)據(jù)量大,所以更好的處理方法,是將數(shù)據(jù)傳輸給遠(yuǎn)程客戶端或云端設(shè)備,以此實(shí)現(xiàn)永久存儲(chǔ).樹莓派作為網(wǎng)關(guān),可以在內(nèi)存中存儲(chǔ)特定的數(shù)據(jù)結(jié)構(gòu),從而向上層提供具有一定限制的第一手分析數(shù)據(jù).
本系統(tǒng)的樹莓派網(wǎng)關(guān),以多線程模式設(shè)置TCP協(xié)議下的套接字服務(wù)器,進(jìn)行傳感器數(shù)據(jù)的分發(fā).通過監(jiān)測(cè)待發(fā)送數(shù)據(jù)的長度,對(duì)連接上的各個(gè)套接字端口進(jìn)行詢問,從而發(fā)出數(shù)據(jù).雖然樹莓派基于Linux系統(tǒng),但通過TCP協(xié)議發(fā)出的數(shù)據(jù)可以適用于各個(gè)操作系統(tǒng)下終端的接收,因此具有一定的普適性和靈活性.
若沒有必要對(duì)數(shù)據(jù)進(jìn)行永久存儲(chǔ),即無其他終端訪問時(shí),用于數(shù)據(jù)分發(fā)的內(nèi)存中的消息列表會(huì)定時(shí)清空.
3.3 http服務(wù)器的搭建
TCP數(shù)據(jù)傳輸服務(wù)器的主要功能是實(shí)現(xiàn)無線傳感器網(wǎng)絡(luò)數(shù)據(jù)的永久存儲(chǔ),其并發(fā)訪問要求不高,通過多線程機(jī)制足以滿足數(shù)據(jù)傳輸?shù)囊?但若要實(shí)現(xiàn)PC端或手機(jī)端對(duì)最新數(shù)據(jù)的訪問,則要考慮到多用戶、高頻率訪問的情況,這里采用了epoll異步I/O的模式進(jìn)行服務(wù)器端的編程.其內(nèi)核采用紅黑樹機(jī)制,可以大大提高epoll 的性能.
PC端用戶用瀏覽器訪問的效果如圖5所示.該圖是在和網(wǎng)關(guān)位于同一網(wǎng)絡(luò)的個(gè)人電腦上,經(jīng)Chrome瀏覽器,訪問網(wǎng)關(guān)的IP(192.168.1.104)所得.訪問所得的結(jié)果概覽中,記錄了智能用電設(shè)備的節(jié)點(diǎn)號(hào)、采集數(shù)據(jù)的時(shí)間,以及采集所得的溫度、濕度、光照、電壓、電流、功率、電能數(shù)據(jù)等.網(wǎng)關(guān)的PC端訪問端口為8080,移動(dòng)手機(jī)端訪問的端口為8081.
圖5 PC端瀏覽器訪問效果
無線傳感器網(wǎng)絡(luò)的網(wǎng)關(guān)是將收集的數(shù)據(jù)傳入局域網(wǎng)或互聯(lián)網(wǎng)的關(guān)鍵設(shè)備,對(duì)于家庭用戶及小型企業(yè)用戶,配置專門的PC主機(jī)作為服務(wù)器并不現(xiàn)實(shí),而樹莓派這種超微型主機(jī)便成了網(wǎng)關(guān)開發(fā)的合適平臺(tái).本文針對(duì)一個(gè)電能監(jiān)測(cè)ZigBee網(wǎng)絡(luò),以樹莓派這種體積小、成本低、便于攜帶的設(shè)備作為網(wǎng)關(guān),實(shí)現(xiàn)了數(shù)據(jù)的中繼傳輸以及PC端、手機(jī)端直接訪問的服務(wù)器端功能,具有很強(qiáng)的實(shí)用性能.
[1] 張藝粟,李鴻彬,賈軍營,等.物聯(lián)網(wǎng)ZigBee網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013(6):34-38.
[2] 于志強(qiáng),溫志渝,謝瑛珂,等.基于樹莓派的多參數(shù)水質(zhì)檢測(cè)儀控制系統(tǒng)[J].儀表技術(shù)與傳感器,2015(6):20-23.
[3] 蔡燕敏,孔維通.基于樹莓派網(wǎng)絡(luò)監(jiān)控系統(tǒng)的研究[J].實(shí)驗(yàn)室科學(xué),2015,18(6):87-90.
[4] 雷景生,蘇峰,劉大明.基于WSN的智能用電監(jiān)測(cè)節(jié)點(diǎn)的設(shè)計(jì)[J].上海電力學(xué)院學(xué)報(bào),2016,32(2):115-119.
[5] 翁同洋,劉大明,畢忠勤.電能能耗實(shí)時(shí)監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].上海電力學(xué)院學(xué)報(bào),2016,32(2):203-209..
[6] 朱劍鋒,熊志斌,尹成國.ZigBee 無線傳感網(wǎng)絡(luò)與IP網(wǎng)絡(luò)的網(wǎng)關(guān)設(shè)計(jì)[J].軟件,2011,32(9):53-55.
(編輯 白林雪)
Design and Implementation of ZigBee Gateway in theInternet of Things Based on Raspberry Pi
CHEN Quan, BI Zhongqin, LIU Daming
(SchoolofComputerScienceandTechnology,ShanghaiUniversityofElectricPower,Shanghai200090,China)
Raspberry Pi,which is of small size,low price and light to carry,is used as a gateway of one electricity monitoring ZigBee networks.And based on non-blocking asynchronous I/O,the concurrent visit from both PC and mobile phone is realized.All the part of the gateway is verified through experiments.
raspberry Pi; internet of things; gateway; power monitoring
10.3969/j.issn.1006-4729.2016.06.020
2016-06-09
簡介:陳詮(1988-),男,在讀碩士,江蘇鹽城人.主要研究方向?yàn)槲锫?lián)網(wǎng)軟件技術(shù).E-mail:chenq182@sina.com.
TP391;TN929.5
A
1006-4729(2016)06-0599-04