胡 嬌1,孫 堅1,王曉薇1,沈 澍2,3,鄒志強2,3
(1.南京郵電大學 貝爾學院,江蘇 南京 210023;
2.南京郵電大學 計算機學院,江蘇 南京 210003;
3.江蘇省無線傳感網高技術研究重點實驗室,江蘇 南京 210003)
摘 要: 為了對水環境進行數據采集、傳輸和顯示的全方位處理,設計了一套基于無線傳感網(WSNs)的水環境云端監測系統,闡述了系統的網絡架構及具體組成部分,包括終端監測節點、簇頭節點、數據匯聚節點和基于Yeelink的遠程監視中心,并詳細介紹了各部分的軟硬件設計。同時,支持用戶在手機終端實時監測采集到的水溫、壓強、pH值等信息。通過實驗和測試可以看出,該系統為低成本實時在線水質監測提供了一套可行的方案。
關鍵詞: Arduino;水環境監測;無線傳感網絡(WSNs);云端網絡;Yeelink
0 引言
隨著人口膨脹和經濟的高速增長,環境污染變得日益嚴重,特別是近年來的水質污染。大自然是一個有機的整體,水環境的惡化不可避免地會影響整體環境改變[1]。傳統的水質監測主要是通過用便攜式儀器進行人工檢測、分析計算水環境中微生物的活性情況,但這些方法或效率低,或成本高,或精度低,并且對周邊生態環境有影響[2-3]。也有人采用開源平臺來搭建監測系統,但規模較小,不適合大面積、分散的水域監測[4]。直到最近幾年,無線傳感器網絡(Wireless Sensor Networks,WSNs)技術的引入,使得監測效率得到大幅度提高[5-6]。但是,由于水質環境的復雜性以及河流湖泊地域的限制,WSNs實施起來比較困難,并且單個節點大多數只能測量單一數據,很難對水環境做出正確判斷,處理的數據也是通過較為傳統的終端機顯示。
本文在WSNs的基礎上,針對當前水質監測技術的不足,設計了一種水環境云端監測系統。該設計對傳感器節點進行整合,利用雙核結構將原本單一的傳感器整合在一個節點上,使得單一節點可同時監測溫度、pH值和壓強等多項數據;憑借WSNs技術布局靈活、成本低、功耗低、無需基礎設施支撐等優勢,解決組網問題,實現對水域的覆蓋;加入GPS模塊,結合壓力傳感器實現監測節點的三維定位;在數據顯示上,本設計一改傳統的終端機顯示方法,引入當前熱門的云端網絡技術,將數據匯聚節點處理得到的數據直接發送至云端網絡,使用戶可以在Yeelink物聯網平臺上實時監測水質數據,真正實現隨時隨地進行水質監測。
1 系統網絡拓撲結構
為了獲得最佳效果,本系統設計了一種混合網絡拓撲結構,整個系統由以下四部分組成:終端監測節點、簇頭節點、數據匯聚節點和遠程監視中心。其中終端監測節點、簇頭節點和數據匯聚節點構建成了一個無線傳感器網絡,如圖1所示。擬定在監測區域部署N個節點得到N維的原始信號。接著,按照分層分簇的網絡結構進行邏輯映射得到M個簇,簇頭節點分別為{B1,B2,B3,…,BM},簇頭節點負責收集本簇內的數據;最后,由M個簇頭節點把信息匯聚到數據匯聚節點,由數據匯聚節點傳輸到上層的云端網絡。因此,數據匯聚節點與簇頭節點之間構成了樹狀網絡,而每個簇頭節點所負責的一簇區域內的各個終端節點之間則構成了一個網狀網絡,以確保能選擇最佳的路由路徑進行數據的傳輸。
在簇頭節點上部署GPS定位裝置,用以提供準確的參考坐標,而在每個簇頭節點負責的一簇區域當中,采用三邊定位算法來計算每個終端監測節點的位置坐標。結合壓力傳感器得出的水深,從而獲得三維坐標。
2 系統硬件設計
系統核心處理器選用ATmega328,其I/O口豐富,可以支持更多種類和更大數量的傳感器,實現更多水質參數的監測[7]。系統各部分分工合作,終端監測節點采集傳感器數據,分析處理后發送給簇頭節點;簇頭節點實現本簇內終端監測節點數據的收集;數據匯聚節點監測網絡,實現數據的統計分析和上傳。系統硬件結構組成如圖2。
2.1 電源模塊
節點采用外部+5 V電源供電,通過高效線性穩壓器AMS1117得到+3.3 V電壓供給無線傳輸模塊、數據上傳模塊、GPS模塊和溫度壓強傳感器。而調理電路工作所需的±5 V電壓則是利用ICL7660得到,如圖3所示。
2.2 調理模塊
本系統測量pH值采用雷磁公司的E-201-C傳感器,其輸出信號為微弱的直流信號,大小與pH值存在線性關系,信號范圍為-450~+450 mV,不便于采集。于是通過調理模塊對該信號進行線性處理,最終得到便于采集的0~3 V范圍的電壓信號。
圖3展示的便是調理電路,由跟隨、線性放大和反向放大三部分組成。用VOUT表示調理電路的輸出,VIN表示pH傳感器信號,最終兩者間服從關系如下:
這里取R2、R3、R4、R7皆為1 k,則式(1)為:
VOUT=VREF-2VIN(2)
得到的輸出可直接送至處理器讀取進行A/D轉換。由于實際情況多變,調理電路的放大倍數和電平抬升量均是可調節的,可以減小誤差,更好地適應多樣化的環境。
2.3 GPS模塊
GPS模塊選用一款與Arduino兼容的GPS擴展板,支持GPS衛星導航技術,能讓簇頭節點發送信息并使用GSM網絡。同時在GPS模塊加入GPS記錄單元——Itead Arduino GPS定位導航擴展板NEO-6,可記錄GPS數據,方便后期數據分析,改進分簇算法,解決覆蓋率不足等問題。
2.4 數據上傳模塊
數據上傳模塊采用以W5100為核心的網絡擴展模塊。W5100內部集成了TCP/IP協議棧、以太網介質傳輸層和物理層,使用它可以不需要考慮以太網的控制,只需要進行簡單的端口控制便可實現網絡連接。擴展版支持SPI接口,使得W5100可以利用SPI協議與處理器進行通信從而獲取需要上傳的數據[7]。
2.5 接口電路
無線通信模塊選用CC2530核心板,進行邏輯電平匹配后,使用標準的串口與ATmega328通信,不僅降低了開發難度,也提升了系統的整體性能。終端監測節點采用了微型數字型溫度壓強傳感器MS5541C,其工作于+3.3 V的數字電壓下,內部集成了A/D轉換器,可將電壓值直接轉換為16位數字信號輸出,精度高,支持SPI協議,在時鐘(32.768 kHz)的控制下與ATmega328通信,實現溫度壓強的測量[8]。接口電路原理如圖4所示。
3 系統軟件設計
3.1 終端監測節點主程序
MS5541C是一款綜合了溫度和壓力測量的微型數字型傳感器,可以根據下式
P=P0+ρgh(3)
計算水深。其中P是水下壓強,P0是大氣壓強(約為1 Pa),ρ、g、h分別是水的密度、重力加速度和水的深度。這樣結合簇頭節點上GPS模塊可以實現水域的三維監測。由于壓強傳感器的輸出電壓受溫度等因素的影響較大,需要通過外圍處理器進行軟件補償。
于是主程序除了負責系統的初始化、定位和數據的采集處理之外,還要實現與傳感器的通信,如圖5所示。
主程序主要進行以下操作:
(1)系統初始化,包括傳感器的初始化;
(2)獲取校正系數,處理器先從MS5541C的64 bit的PROM中讀取它自帶的校準數據,然后將校準數據轉換成校正系數;
(3)讀取水質參數;
(4)溫度校正,首先計算出校正溫度,然后依據測量溫度和校正溫度計算得出實際溫度;
(5)對壓強值和pH值進行溫度補償;
(6)數據傳遞,即對數據進行位置信息綁定后將數據包通過串口傳遞給無線通信模塊。
3.2 簇頭節點主程序
簇頭節點主要實現位置信息的獲取和數據的轉發,主程序流程圖如圖6。主要步驟如下:
(1)系統初始化,包括GPS模塊的初始化;
(2)通過AT指令啟動GPS功能并記錄GPS坐標;
(3)將本簇頭節點獲取的位置坐標廣播給終端監測節點及其他簇頭節點;
(4)簇頭節點進入路由模式,與終端監測節點和其他簇頭節點進行無線通信,實現數據包的轉發等功能。
3.3 數據匯聚節點主程序
數據匯聚節點主程序負責讀取CC2530傳遞過來的數據并交由W5100上傳。由于采用雙核模式,主程序可以設計得非常簡單,流程如圖7所示。主要步驟如下:
(1)系統初始化,包括網絡端口初始化以及設備編號、傳感器編號配置等,初始化后進入偵聽狀態;
(2)如果產生串口中斷,表明CC2530有數據發送過來,則讀取數據;
(3)數據讀取完畢后,進行簡單的處理,隨后將數據上傳至遠程監視中心,上傳結束后繼續偵聽。
3.4 無線通信程序
CC2530的引入使得無線通信的軟件設計變得非常簡單,直接使用TI公司提供的協議棧ZStack進行開發[9-11]。該協議棧是基于操作系統而存在的,建立在事件循環機制的思想之上。
數據匯聚節點上電初始化后首先詢問是否存在現有網絡,如有則直接入網綁定,開始轉發數據、審核入網申請,相當于執行簇頭節點程序;若不存在則將自己配置為協調器,啟動網絡,為入網節點分配地址,接收數據并上傳。終端監測節點初始化后詢問是否存在現有網絡,沒有則等待,有則直接入網綁定,運行三邊算法進行定位,然后開始采集傳感器數據并傳遞給父節點,等待應答,如果一直收不到應答則重新尋找網絡。無線通信的工作流程如圖8所示。
4 遠程監視中心
遠程監視中心采用Yeelink物聯網交互平臺,可以實現對前端的信息采集和信息處理設備的管理。在平臺上注冊,然后添加自己的設備,對設備進行管理。由于Yeelink平臺是開放的,這就需要對每個用戶以及用戶的設備進行管理,確保傳感器數據與用戶傳感器一一對應。Yeelink為了解決這個問題,采用分層管理的模式:用戶層、設備層和傳感器層[12]。首先分配給注冊用戶獨有的APIKEY,每個用戶可自行管理自己賬戶的設備,系統分配給每個設備獨有的設備編號,設備里可以添加各種傳感器,同樣地,系統分配給傳感器獨有的傳感器編號。
Yeelink物聯網平臺能同時支持電腦終端和手機終端實時顯示,用戶可實時查看水質參數,十分便捷。客戶端顯示界面如圖9所示。
5 系統測試
對監測節點進行了防水處理之后,選取了室內和室外兩種測試對該系統進行了初步測試。其中室外選在了南京郵電大學仙林校區的人工湖(大致在北緯32°06′34.40″,東經118°55′40.58″)。
溫度測量范圍能達到-40℃~+85.0℃,精度在1℃以內;壓強測量范圍為0~14 bar,精度達到1 mbar;pH值測量范圍為1~14,精度達0.01。在水下測量時,選擇12月初某天的8∶00~20∶00時間段,每半小時測量一次,并記錄數據。在湖面下0.5 m左右處最低溫度為 7.0 ℃,最高溫度為9.12 ℃,壓強在1 050 mbar左右,pH值在7.20左右。測試數據顯示如圖10所示。并對標準儀器進行人工測量得到的值與系統測量得到的數據進行了對比。
通過以上數據可以發現,pH值的測量誤差相對較大,這是由于pH電極的信號需要經過調理電路的處理,而這種模擬電路帶來的誤差較大,但總體來說系統測量值與人工測量得到的數據基本接近,說明本系統數據測量的準確性。目前平均數據傳送時延在20~30 s之間,有較好的實時性。無線通信部分采用最新的ZigBee2007協議棧,采取了碰撞避免策略,MAC層也采用了完全確認(ACK)的數據傳輸模式,支持差錯重傳,提升了系統的可靠性。
6 結論
本文針對水質參數的網絡監測問題,設計并實現了一個基于無線傳感網的水質參數云端監測系統,該系統由終端監測節點、簇頭節點、數據匯聚節點和遠程監視中心組成,可以完成信息的自動采集、信息的無線傳輸以及基于云端的信息存儲,并可以在移動終端實時查看監測數據。大量的實際實驗表明本系統具有一定的實時性和可靠性。本系統不僅可以滿足對水環境的監測需要,而且由于模塊化設計,使得本系統具有一定的普適性,可用于其他環境監測的領域,具有廣闊的應用市場。考慮到能源功率和成本問題,本系統還需要進一步優化。
參考文獻
[1] JIN D L, LIU Y W. An overview of the water environment[J]. Water Resour, 2006(27):33-36.
[2] Jiang Peng, Xia Hongbo, He Zhiye. Design of a water environment monitoring system based on wireless sensor networks[J]. Sensors, 2009,9(8):6411-6434 .
[3] 周良明,劉玉光,郭佩芳,等.多參數水質檢測儀在海洋水質監測中的應用[J].氣象水文海洋儀器,2003(4):45-56.
[4] TATSIOPOULOS C, KTENA A. A smart ZigBee based wireless sensor meter system[C]. 2009 16th International Conference on Systems,Signals and Image Processing,2009:1-4.
[5] He Dong, Zhang Lixin. The water quality monitoring system based on WSN[C]. 2012 2nd International Conference on Consumer Electronics, Communications and Networks,2012:3661-3664.
[6] 秦華,孫曉松.基于Arduino/Android的環境狀況監測系統設計[J].無線互聯科技,2013(1):59-61.
[7] 程晨.Arduino開發實踐指南AVR篇[M].北京:機械工業出版社,2012.
[8] 徐守品,劉越,張靚.基于ATMEGA32單片機高精度微水測量儀的設計與實現[J].精密制造與自動化,2012(4):34-36.
[9] 李新.基于CC2530的ZigBee網絡節點設計[J].PLC&FA,2011(3):97-99.
[10] 吳岳忠,汪濤,周訓志,等.基于物聯網的家居室內環境在線監控系統研究[J].微型機與應用,2014,33(14):60-63.
[11] 張毅,張靈至,盧威.面向物聯網的ZigBee-紅外控制系統設計[J].電子技術應用,2013,39(5):82-85.
[12] Yeelink. API Documents[EB/OL].(2014-12)[2015-01-12]. http://www.yeelink.net/develop/api.