肖鵬 陳健 姜培
摘 要:文中設計了一套基于物聯網的遠程環境監控系統,實現了對廣州市大學城,廣州市五山和惠州市廣工大物聯網協同創新研究院等三地溫濕度、光強的監測,并對燈泡亮滅進行遠程控制。利用Qt平臺開發的基于安卓操作系統的移動客戶端應用程序,通過簡潔友好的界面展示了不同位置的環境信息以及供用戶使用的控制按鈕。
關鍵詞:物聯網;網關;設備云;遠程監控
中圖分類號:TP399 文獻標識碼:A 文章編號:2095-1302(2018)01-00-03
0 引 言
物聯網的概念于1999年由麻省理工學院的Auto-ID實驗室提出,基于無線傳感網絡和射頻識別技術,實現物體的定位和狀態識別[1]。其目的在于實現一個全面感知,無縫互聯的高度智能世界。隨著因特網技術和無線傳感網技術的進步,一個萬物互聯的時代已悄悄來臨。據IDC預測:“到2020年,物聯網網絡的連接設備數量將達到290億,到2025年,這些設備產生的數據將驅動11萬億美元的經濟價值”[2]。通常來說,物聯網由感知層,傳輸層,應用層構成[3]。感知層主要負責信息采集和短距離傳輸;傳輸層主要負責將感知層的數據進行長距離傳輸;應用層用于實現對數據的處理和決策,主要包括各類應用服務,如環境監控,智能電網,工業控制,綠色農業,智能家居,公共安全等。物聯網和和云計算技術為物聯網基礎平臺應用提供了新的機遇,在物聯網應用過程中,傳感器采集的數據將會被存儲在云環境中[4]。云計算技術為用戶提供了三種不同的服務模式,即基礎設施及服務(LaaS)、平臺及服務(PaaS)、軟件及服務(SaaS),這些服務可以運行在公有云、私有云和混合云當中[5]。
本文基于物聯網傳感技術和DiGi云平臺的PaaS模式,設計并實現了一套環境監控系統。通過在廣州市大學城、廣州市五山和惠州市廣工大物聯網協同創新研究院(簡稱惠州市廣工大研究院)分別部署執行器和傳感器,利用DIGI公司的XBee適配器將數據匯集到物聯網網關協調器,使用Python語言在網關上部署應用程序。一方面網關通過ZigBee技術與感知層設備交互,另一方面網關可以通過以太網與設備云交互。設備云可以對網關上傳的數據進行分析、存儲和展示。利用Qt平臺設計的Android手機應用客戶端可通過調用設備云提供的應用程序接口(API)實現對執行器的控制,并以燈泡的亮滅顯示;可對當前環境的溫度、濕度及光強進行監測。該系統大大提高了用戶對遠程環境的感知能力。
1 系統總體實現
在本系統中,感知層部署了兩個終端節點,分別為信息采集傳感器節點和燈泡控制節點,其中信息采集傳感器可以采集溫度(T)、濕度(H)和光強(L);終端節點利用ZigBee技術將數據傳送至網關協調器,網關利用以太網將數據上傳至設備云。此時可以通過本地瀏覽器或者安卓客戶端監控感知層節點。整體系統框圖如圖1所示。
1.1 T/H/L傳感器節點與燈泡執行器節點
本系統的T/H/L傳感器節點采用XBee傳感器模塊,該模塊可實時讀取溫度、濕度、光強參數,并通過ZigBee技術進行數據傳送;燈泡執行器節點使用XBee數字I/O適配器,該適配器擁有4個支持集電極開路上拉和下拉的接口,可通過配置引腳模式來控制適配器的端口狀態。二者皆可配合網關將數據送至設備云,也可通過網關下發指令,控制適配器輸出引腳的高低電平。
1.2 物聯網網關
物聯網網關的作用在于銜接感知層與應用層,主要功能涵蓋節點管理、多種信息交互(TCP,HTTP,UDP,SMTP,SMS等)、信息記錄與管理、云端信息安全管理等[6,7]。本系統使用DIGI公司的XBee Gateway-ZigBee to Ethernet/WiFi,該網關通過ZigBee技術與其他XBee模塊連接,使用了開源的Python開發環境,可通過開發應用程序實現設備云與感知層節點的數據交互。圖2所示為該網關的軟硬件架構。
網關核心處理器為Fresscale公司生產的i.MX28 ARM9處理器,ZigBee網絡信息交互采用DIGI公司生產的XBee S2C ZigBee模塊。該模塊采用SMT封裝,擁有PRO版本的物理層,傳輸距離更遠。XBee S2C采用Ember357單片機,與XBee S2采用相同的Ember ZigBee 協議棧,二者之間可以相互通信。網關中用戶應用程序可使用20 MB RAM和10 MB Flash。
1.3 DIGI設備云
設備云處在整個系統的應用層,具有數據分析、數據存儲、數據顯示和設備管理等功能,并提供豐富的API。DIGI設備云是一個設備托管服務平臺,具備PaaS服務能力,可提供設備管理、設備實時通信以及數據存儲服務等[8,9]。考慮到DIGI設備云不僅提供了免費的應用開發平臺,以及業界領先的安全協議和可即時連接任何M2M設備,更可對存儲時間序列數據進行智能分析的優勢,因此將其作為本系統的云服務平臺。本系統設備云作為應用層數據的獲取源,同時也作為數據展現和設備控制的平臺。
1.4 移動客戶端應用
設計基于安卓的客戶端是為了實現移動監控功能,由于Qt擁有跨平臺的C++應用程序開發框架,且提供了自由軟件的用戶協議,使得它可以被廣泛應用在各平臺上的開放源代碼軟件開發中,因此選擇Qt作為開發平臺。使用Qt開發的軟件,相同的代碼可以在任何支持的平臺上編譯、運行,無需修改源代碼,可自動根據平臺的變化而表現出平臺特有的圖形界面風格[10]。本系統開發的移動客戶端主要基于安卓操作系統。
2 系統軟件設計與實現
2.1 網關應用程序設計
2.1.1 燈泡控制應用程序
在XBee數字I/O適配器的一個輸出端口接MOSFET三極管的柵極,適配器+12 V電源輸出端通過燈泡接到漏極,適配器的地與源極相連,可通過控制輸出口的電平實現控制燈泡亮滅的目標。適配器輸出端的電平通過調用XBee封裝的庫函數實現,常用的幾個庫函數見表1。
本程序中主要用到了 xbee.ddo_set_param()和idigidata.register_callback()模塊。idigidata.register_callback()函數實現了回調功能。應用程序按照預先制定的協議解析指令內容,實現對適配器端口狀態的控制。在本系統中,指令協議只有六條,分別為HUI4 ,HUI5,DA4,DA5,WU4,WU5,其中4代表開燈,5代表關燈,數字前面的字母代表不同的位置。主要程序片段如下:
Def data_callback(data_callback_example,xml:
If xml.find(“HUI4”)>-1:
xbee.ddo_set_param(DESTINATION0, ‘D4, 4)
elif xml.find(“HUI5”)>-1:
xbee.ddo_set_param(DESTINATION0, ‘D4, 5)
handle=iDIGIdata.register_callback(“data_callback_example”, data_callback)
當網關程序部署好后,使用設備云提供的API進行調試,可及時驗證網關程序的運行效果,同時為后續的App開發提供可靠依據。00000000-00000000-00409DFF-FF5E0EBF為網關的Id,API 調試程序如下:
HUI4
2.1.2 傳感器數據讀取應用程序
在將傳感器采集的數據上傳到設備云的過程中,網關應用程序的主要功能包括獲取數據、封裝數據格式、上傳數據。下面分別就實現三個功能的主要代碼作簡單介紹。
數據獲取調用 sock.recvfrom()模塊,該函數以近似Socket套接字通信的方式將底層傳感器的數據上傳到網關。根據I/O采樣的數據手冊可以分別提取出溫度、濕度和光強數據。部分代碼如下:
payload,src_addr=sock.recvfrom(200)
light=float(ord(payload[6])*256+ord(payload[7]))*1200/1023
temp_c=(float(ord(payload[8])*256+ord(payload[9]))*1200/1023-500)/10
hum=float(ord(payload[10])*256+ord(payload[11]))*1200/1023
humidity=((hum*108.2/33.2)/5000-0.16)/0.0062
封裝數據格式主要是指將數據封裝為可擴展標記語言格式(XML),XML語言是一種簡單的數據存儲語言,也是用于數據交換的公共語言。通過設計的fmt_dp()函數可以將數據以XML的格式封裝。部分代碼如下,其中參數payload為上一步采集的數據。
upload_data=fmt_dp(payload, “serial_data_0621hz”, time.time() * 1000, “String”, “b6 encoded”)
數據上傳是將已封裝好的數據通過idigidata.send_to_idigi()函數送至設備云,主要程序如下,其中參數upload_data 為上一步封裝為XML的數據。
status, number, error_msg = idigidata.send_to_idigi(upload_data, “DataPoint/stream_0703dxc.xml”)
DataPoint/stream_0703dxc.xml是事先在設備云建立的數據點,數據最終保存到該文件下。
至此,傳感器所在環境的數據已采集完畢并上傳到設備云,可在設備云上直接查看。
2.2 移動客戶端應用的設計與實現
基于安卓的移動客戶端設計主要分為五個模塊,分別為用戶登錄模塊,燈泡控制模塊,燈泡顯示模塊,T/H/L顯示模塊以及系統信息模塊,其框架如圖3所示。
關于移動客戶端的UI設計以簡潔明了為主旨,設計了監測模式和控制模式。在監測模式下,三個位置的現場都將在同一個頁面展現;在控制模式下,可以選擇和切換不同位置。圖4所示為客戶端UI圖。
3 實驗結果
系統運行效果如圖5所示,各傳感器所在地的相關環境信息都展現在App上,同時可通過App打開燈泡。
可在設備云的數據服務窗口查看各類參數的走勢。圖6所示為最近一周的溫度走勢圖。
通過實驗證明,此系統實現了對傳感器所在環境的溫度、濕度和光強的監測,也實現了對開關的控制,并可將監控結果友好地展現在移動終端。
4 結 語
本文利用DIGI公司生產的XBee系列產品搭建起了基本的硬件平臺,通過設計并部署物聯網網關應用程序,成功將廣州大學城,廣州五山和惠州廣工大研究院三個不同位置的環境信息上傳到設備云端;設計的基于安卓的移動App通過調用設備云提供的API,實現了對三個位置的環境信息的監測以及對燈泡亮滅的控制。該系統將一個完整的物聯網基礎架構成功應用在實際中。未來的主要工作是在設備的安全性以及信息的互通性方面進行優化,以適應更加多變的環境,滿足更加復雜的需求。在傳輸方式的選擇上,可以考慮低功耗廣域網。
參考文獻
[1]丁天明.基于RFID技術的物聯網在現代物流領域的應用[J].中國物流與采購, 2011(4):54-55.
[2] Columbus L. Roundup Of Internet of Things Forecasts And Market Estimates,2015[Z]. Forbes, December, 2015, 27.
[3] Gubbi J, Buyya R, Marusic S, et al. Internet of Things (IoT): A vision, architectural elements, and future directions[J].Future generation computer systems,2013,29(7): 1645-1660.
[4]孫利民,沈杰,朱紅松.從云計算到海計算:論物聯網的體系結構[J].中興通訊技術,2011,17(1):3-7.
[5]張建勛,古志民,鄭超.云計算研究進展綜述[J].計算機應用研究.2010,27(2):429-433.
[6]車楠,劉勝輝.物聯網技術原理及實現—AnduiBee 開源物聯網解決路線[M].北京:人民郵電出版社,2014.
[7]汪永鵬. 物聯網感知層智能網關及開放服務接口的研究與實現[D].北京:北京郵電大學, 2013.
[8] Digi. iDigi Device Cloud - Application Platform for Device Networks.datasheet[EB/OL]. http://www.digi.com/pdf/dsidigidevicecloud.pdf, Jan 2012.
[9]陳斌.云計算在物聯網中的作用[J].中國防偽報道.2012(1):52-54.
[10]曹龍,劉煒,曾力.基于Qt on Android平臺的空氣質量監測系統手機客戶端設計[J].電子技術與軟件工程,2017(2):56-57.