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