顧逸楓,張正華*,沈 逸,蘇 權(quán)
(1.揚州大學(xué) 信息工程學(xué)院,江蘇 揚州 225000;2.揚州蘇水科技有限公司,江蘇 揚州 225000;3.揚州國脈通信發(fā)展有限責(zé)任公司,江蘇 揚州 225000)
隨著無線傳感器網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,人們獲取信息和處理信息的方式日新月異,人類世界、物理世界和計算機世界之間的聯(lián)系不斷加強[1],其在軍事、民用、醫(yī)療和環(huán)境監(jiān)測等領(lǐng)域發(fā)揮了極其重要的作用[2]。無線傳感器網(wǎng)絡(luò)建立在大量傳感器節(jié)點基礎(chǔ)上,并通過對不同傳感器技術(shù)和功能方面的完善來逐漸組成一個自由、靈動的網(wǎng)絡(luò)組織結(jié)構(gòu)[3]。節(jié)點通過對區(qū)域環(huán)境的智能感知,采集相應(yīng)信息,利用傳輸協(xié)議將數(shù)據(jù)信息輸送至接收端[4],數(shù)據(jù)會通過數(shù)據(jù)接收器路由到中央服務(wù)器以進行處理、存儲、可視化和解釋[5],此過程需要考慮無線傳感器節(jié)點的穩(wěn)定性、能耗和體積等多個方面。目前的無線傳感器網(wǎng)絡(luò)主要有ZigBee網(wǎng)絡(luò)、WiFi網(wǎng)絡(luò)等,ZigBee技術(shù)主要適用于短距離傳輸,憑借其功耗低、成本低、時延短、可靠性高、安全性高和網(wǎng)絡(luò)容量大等特點[6],在各個領(lǐng)域內(nèi)都得到廣泛的應(yīng)用。
遠程控制技術(shù)以計算機通信技術(shù)為基礎(chǔ),二者通過信息反饋和數(shù)據(jù)處理,然后充分利用遠程控制軟件進入到服務(wù)終端,從而達到利用互聯(lián)網(wǎng)進行遠程控制的目的[7]。此技術(shù)具有不受時間空間約束的優(yōu)點,對解放大量人力物力,最大化資源利用率起到重要作用。鑒于以上優(yōu)點,各高校也紛紛建立遠程實驗平臺,其硬件體系結(jié)構(gòu)可以非常靈活,并且可以使用許多不同的形式及其應(yīng)用[8],遠程技術(shù)的運用將越來越廣泛。
得益于無線傳感器網(wǎng)絡(luò)技術(shù)和遠程控制技術(shù)的發(fā)展,物聯(lián)網(wǎng)理論及應(yīng)用水平不斷提高[9]。實施“互聯(lián)網(wǎng)+農(nóng)業(yè)”“互聯(lián)網(wǎng)+水利”“互聯(lián)網(wǎng)+交通”等工程,對于探索物聯(lián)網(wǎng)理論研究、系統(tǒng)集成、重點領(lǐng)域、發(fā)展模式及推進路徑,促進生產(chǎn)方式轉(zhuǎn)變有重要意義[10]。本文構(gòu)建了一種基于ZigBee的無線傳感器節(jié)點數(shù)據(jù)采集及分布式遠程控制系統(tǒng),系統(tǒng)以遠程采集土壤氮磷鉀含量數(shù)據(jù)為例說明運行過程,該系統(tǒng)由網(wǎng)頁客戶端、服務(wù)器端、主機端和無線傳感器節(jié)點端構(gòu)成,用戶遠程控制節(jié)點采集相應(yīng)數(shù)據(jù),通過主機端上傳數(shù)據(jù)至服務(wù)器端,網(wǎng)頁客戶端可觀察服務(wù)器端回傳的數(shù)據(jù)。
系統(tǒng)主要由網(wǎng)頁客戶端、服務(wù)器端、主機端和無線傳感器節(jié)點端構(gòu)成。無線傳感器節(jié)點端包括發(fā)送節(jié)點和協(xié)調(diào)器節(jié)點。系統(tǒng)總體設(shè)計如圖1所示。
圖1 統(tǒng)體系結(jié)構(gòu)Fig.1 System architecture diagram
以遠程采集土壤氮磷鉀含量數(shù)據(jù)為例說明系統(tǒng)運行過程。用戶在網(wǎng)頁客戶端編寫代碼并提交,網(wǎng)頁客戶端通過socket通信將代碼發(fā)送到服務(wù)器,主機端通過MQTT協(xié)議訂閱該代碼,服務(wù)器將代碼轉(zhuǎn)發(fā)到主機端,主機將代碼編譯下載到實驗箱中,若代碼編譯失敗,主機會通過服務(wù)器將錯誤說明返回到網(wǎng)頁客戶端,若編譯通過,CC2530無線傳感器發(fā)送節(jié)點通過ZigBee無線傳輸技術(shù)將采集到的數(shù)據(jù)信息發(fā)送給協(xié)調(diào)器節(jié)點,協(xié)調(diào)器節(jié)點通過串口線將數(shù)據(jù)信息輸送至主機,服務(wù)器端通過MQTT協(xié)議訂閱該數(shù)據(jù)信息,并將接收到的數(shù)據(jù)信息存進數(shù)據(jù)庫,當(dāng)網(wǎng)頁請求數(shù)據(jù)時,服務(wù)器從數(shù)據(jù)庫取出數(shù)據(jù)發(fā)送給網(wǎng)頁客戶端,網(wǎng)頁端實時顯示該數(shù)據(jù)。
ZigBee技術(shù)是一種新型的短距離無線通信技術(shù),擁有自組織性、動態(tài)拓撲、低功耗和傳輸穩(wěn)定等特點[11],相比于藍牙等無線通信技術(shù)有不可比擬的優(yōu)勢。ZigBee技術(shù)憑借這些先天性優(yōu)勢,逐漸成為物聯(lián)網(wǎng)行業(yè)的主流技術(shù),在工業(yè)、農(nóng)業(yè)和智能家居等領(lǐng)域得到大規(guī)模應(yīng)用[12]。在ZigBee技術(shù)應(yīng)用下,技術(shù)人員在電子設(shè)備上設(shè)置多個節(jié)點,將其安裝至設(shè)備當(dāng)中,使用計算機等信息技術(shù),構(gòu)建成一個完整的無線傳感器網(wǎng)絡(luò)系統(tǒng)[13],在該系統(tǒng)的支持下,能夠更好地達到信息間傳遞的目的[14]。
本系統(tǒng)運用以CC2530為微控制器的ZigBee無線傳感網(wǎng)絡(luò),CC2530發(fā)送節(jié)點用于接收信號源信息并對其進行數(shù)據(jù)格式處理,然后將數(shù)據(jù)通過點對點無線傳輸至CC2530協(xié)調(diào)器節(jié)點;CC2530協(xié)調(diào)器節(jié)點用于匯總接收到的各參數(shù)數(shù)據(jù),然后通過無線節(jié)點調(diào)試接口板傳輸至主機端。具體連接方式如下:CC2530發(fā)送節(jié)點、協(xié)調(diào)器節(jié)點通過調(diào)試接口板、CC2530仿真器與主機相連,將程序編譯下載進相關(guān)節(jié)點,CC2530協(xié)調(diào)器節(jié)點通過232轉(zhuǎn)USB串口線將接收到的氮磷鉀數(shù)據(jù)發(fā)送給主機,通過串口顯示。
本系統(tǒng)硬件具有擴展性,可增加傳感器種類以測量更多的參數(shù)數(shù)據(jù)。系統(tǒng)選用485型土壤氮磷鉀三合一傳感器來檢測土壤中氮磷鉀的含量,選定合適的測量地點,避開石塊,確保鋼針不會碰到堅硬的物體,按照所需測量深度拋開表層土,保持下面土壤原有的松緊程度,緊握傳感器垂直插入土壤。485型土壤氮磷鉀三合一傳感器共有4根接線,棕色線為電源正(12~24 V DC),黑色線為電源負,黃色線為485-A,藍色線為485-B,其中正負電源線外接12 V電源,負電源線、485-A、485-B與485轉(zhuǎn)TTL模塊一端相連,485轉(zhuǎn)TTL模塊另一端與CC2530發(fā)送節(jié)點的UART_TX,UART_RX,VDD,GND相連,這一部分用于CC2530發(fā)送節(jié)點發(fā)送問詢并獲取氮磷鉀三合一傳感器采集的數(shù)據(jù)。
ZigBee可采用星狀、片狀和網(wǎng)狀網(wǎng)絡(luò)結(jié)構(gòu),容量大[15],本系統(tǒng)中可增加傳感器種類,測得的數(shù)據(jù)均發(fā)送給CC2530協(xié)調(diào)器節(jié)點進行匯總,最后均通過無線節(jié)點調(diào)試接口板傳輸至主機端。
硬件具體連接方式如圖2所示。
圖2 硬件連接Fig.2 Hardware connection diagram
無線傳感器節(jié)點端包括發(fā)送節(jié)點和協(xié)調(diào)器節(jié)點,程序主要實現(xiàn)無線傳感器數(shù)據(jù)采集功能,具體內(nèi)容包括各類功能函數(shù)的定義及初始化、氮磷鉀數(shù)據(jù)的接收與發(fā)送、進制轉(zhuǎn)換和收發(fā)數(shù)據(jù)格式規(guī)定等。
CC2530發(fā)送節(jié)點板工作流程如圖3所示,首先配置好各參數(shù)的初始化值,按照規(guī)定數(shù)據(jù)幀格式發(fā)送問詢碼0x01 0x03 0x00 0x1e 0x00 0x03 0x65 0xcd,傳感器返回氮磷鉀數(shù)據(jù),若成功返回,D7 LED燈閃爍。
圖3 發(fā)送節(jié)點流程Fig.3 Sending node flowchar
CC2530協(xié)調(diào)器節(jié)點板工作流程圖如圖4所示,協(xié)調(diào)器節(jié)點與發(fā)送節(jié)點通過ZigBee組成點對點無線傳輸網(wǎng)絡(luò),當(dāng)發(fā)送節(jié)點數(shù)據(jù)準備好后,協(xié)調(diào)器節(jié)點開始接收數(shù)據(jù),若成功接收,協(xié)調(diào)器節(jié)點將該數(shù)據(jù)通過串口發(fā)送給PC機。
圖4 協(xié)調(diào)器節(jié)點流程Fig.4 Coordinator node flowchart
主機端負責(zé)實現(xiàn)如下功能:① 接收采集數(shù)據(jù)并發(fā)布數(shù)據(jù);② 訂閱并下載學(xué)生代碼,編譯并下載代碼,發(fā)布編譯情況信息。
主機端包括串口監(jiān)聽程序、bat文件批量處理程序、MQTT訂閱和發(fā)布程序。串口監(jiān)聽程序,用于通過串口監(jiān)聽顯示主機端接收到的信息采集模塊采集的氮磷鉀數(shù)據(jù);bat文件批量處理程序,用于下載服務(wù)器端的代碼以及用命令行實現(xiàn)IAR文件的編譯、下載和執(zhí)行;MQTT訂閱和發(fā)布程序,用于主機端訂閱服務(wù)器代碼以及發(fā)布氮磷鉀數(shù)據(jù)。主機端工作流程圖如圖5所示。
圖5 主機端工作流程Fig.5 Host-side work flowchart
服務(wù)器端負責(zé)實現(xiàn)如下功能:① 建立與客戶端的Web Socket連接(多進程實現(xiàn)多個客戶端同時訪問同一服務(wù)器);② 保存網(wǎng)頁上傳的代碼為具體文本,并發(fā)布代碼,訂閱學(xué)生代碼的編譯情況信息;③ 收到正確網(wǎng)頁請求后,發(fā)送學(xué)生代碼的編譯情況信息和相應(yīng)數(shù)據(jù)到網(wǎng)頁端;④ 數(shù)據(jù)庫訂閱采集數(shù)據(jù)并存入數(shù)據(jù)表。
云端服務(wù)器包括MQTT服務(wù)器、SQL Server數(shù)據(jù)庫和Web Socket通信。MQTT服務(wù)器,其中WAMP Server用于快速安裝配置Web服務(wù)器,MQTT服務(wù)用于實現(xiàn)消息的訂閱和發(fā)布,HTTP服務(wù)用于主機端從服務(wù)器下載代碼;SQL Server數(shù)據(jù)庫,用于存儲數(shù)據(jù),也可查看歷史數(shù)據(jù);Web Socket通信,用于客戶端和服務(wù)器之間的數(shù)據(jù)交換,進行雙向數(shù)據(jù)傳輸。服務(wù)器端工作流程圖如圖6所示。
圖6 服務(wù)器端工作流程Fig.6 Server-side work flowchart
服務(wù)器端負責(zé)實現(xiàn)如下功能:① 用戶編寫、提交無線節(jié)點端所需代碼;② 實時顯示采集到的信號源信息。
用戶在網(wǎng)頁端點擊選擇文件按鈕后,選擇485.c代碼文件,隨后點擊上傳按鈕,通過構(gòu)建multipart formdata的HTTP請求,借助FormData對象,實現(xiàn)文件上傳至云端。若代碼編譯失敗,主機會通過服務(wù)器將錯誤說明返回到網(wǎng)頁端,若編譯通過,485型土壤氮磷鉀三合一變送器通過串口將氮磷鉀數(shù)據(jù)發(fā)送給主機,主機將接收到的數(shù)據(jù)存入數(shù)據(jù)庫。網(wǎng)頁端調(diào)用Highcharts圖表庫,通過ajax技術(shù)實時訪問數(shù)據(jù)庫數(shù)據(jù),從而以圖表的方式顯示實時更新的數(shù)據(jù)。
為測試系統(tǒng)的實用性與穩(wěn)定性,進行了多次試驗。
串口接收節(jié)點采集數(shù)據(jù)界面如圖7所示。串口顯示界面中,第1位為標志“*”,第2位為主機號,后6位為氮磷鉀數(shù)據(jù),數(shù)據(jù)顯示為16進制,即0C1C為氮數(shù)據(jù),0021為磷數(shù)據(jù),0075為鉀數(shù)據(jù)。
圖7 串口顯示界面Fig.7 Serial display interface
數(shù)據(jù)庫界面如圖8所示。數(shù)據(jù)庫界面利用查詢功能,將主機號、當(dāng)前時間以及氮磷鉀數(shù)據(jù)逐一顯示。
圖8 數(shù)據(jù)庫查詢界面Fig.8 Database query interface
網(wǎng)頁客戶端數(shù)據(jù)實時顯示界面如圖9所示。
圖9 網(wǎng)頁端顯示界面Fig.9 Web-side display interface
試驗結(jié)果表明,系統(tǒng)能夠?qū)崿F(xiàn)用戶遠程控制基于ZigBee技術(shù)的無線傳感器節(jié)點進行數(shù)據(jù)采集的功能,并實時監(jiān)測數(shù)據(jù)庫中保存的數(shù)據(jù)信息。對比基于傳統(tǒng)51單片機,HTTP,MQ,CoAP等協(xié)議的數(shù)據(jù)采集方案,系統(tǒng)具有以下優(yōu)勢:采用基于CC2530的無線傳感器節(jié)點,節(jié)點可靠性高,具備良好的擴展性,抗干擾性強[16],功耗低,應(yīng)用范圍廣;服務(wù)器基于MQTT協(xié)議,使用發(fā)布/訂閱消息模式[17],提供一對多的消息發(fā)布,解除應(yīng)用程序耦合,使用TCP/IP提供網(wǎng)絡(luò)連接,小型傳輸,開銷很小[18];系統(tǒng)將采集的數(shù)據(jù)上傳至云端數(shù)據(jù)庫,即可對歷史數(shù)據(jù)進行查看與比較,便于實驗人員對信號源進行實時監(jiān)控與管理。
結(jié)合試驗數(shù)據(jù)可以看出,系統(tǒng)利用ZigBee技術(shù)、MQTT協(xié)議、Web Socket通信協(xié)議和SQL Server數(shù)據(jù)庫等實現(xiàn)了用戶遠程控制無線傳感器節(jié)點進行數(shù)據(jù)采集并保存進數(shù)據(jù)庫的功能,這有利于農(nóng)業(yè)墑情、工業(yè)控制等各領(lǐng)域數(shù)據(jù)的遠程采集,并且可對歷史數(shù)據(jù)進行查看與比較,不受時間空間的限制。該系統(tǒng)還可應(yīng)用于學(xué)校遠程實驗平臺等范圍,具有一定應(yīng)用前景。但系統(tǒng)能夠測量的數(shù)據(jù)種類不夠豐富,今后將進行完善,嘗試學(xué)習(xí)ZigBee協(xié)議棧內(nèi)容,優(yōu)化整個系統(tǒng)。