基于Web Services的嵌入式農(nóng)業(yè)物聯(lián)網(wǎng)測控系統(tǒng)
摘要:目前農(nóng)業(yè)物聯(lián)網(wǎng)測控系統(tǒng)數(shù)據(jù)交換普遍采用基于socket的簡單通信。為解決使用socket通信產(chǎn)生的數(shù)據(jù)交換復(fù)雜,系統(tǒng)耦合性大的問題,將Web Services技術(shù)應(yīng)用到linux的嵌入式農(nóng)業(yè)物聯(lián)網(wǎng)測控中,并給出了測控系統(tǒng)體系結(jié)構(gòu)及軟、硬件實現(xiàn)方法。Web Service技術(shù)使得嵌入式測控系統(tǒng)有了標(biāo)準(zhǔn)的數(shù)據(jù)表示格式和數(shù)據(jù)交換協(xié)議,提高了開發(fā)效率,便于系統(tǒng)修改、定制,實驗結(jié)果表明,該系統(tǒng)性能穩(wěn)定,無線數(shù)據(jù)采集與設(shè)備控制能達(dá)到實際需求,具有較高的實用性。
本文引用地址:http://cafeforensic.com/article/201610/309021.htm物聯(lián)網(wǎng)ZigBee技術(shù)以其低成本、低功耗、高可靠性的特點被廣泛應(yīng)用于農(nóng)業(yè)測控系統(tǒng)中,實現(xiàn)了無線數(shù)據(jù)采集和控制。孫玉文等設(shè)計了基于嵌入式ZigBee技術(shù)的農(nóng)田信息服務(wù)系統(tǒng),韓華峰等設(shè)計了基于ZigBee網(wǎng)絡(luò)的溫室環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)等等。盡管我國農(nóng)業(yè)物聯(lián)網(wǎng)方面的應(yīng)用有所突破,但依然存在許多問題。目前農(nóng)業(yè)測控系統(tǒng)中ZigBee測控網(wǎng)絡(luò)與服務(wù)器數(shù)據(jù)交換一般通過嵌入式設(shè)備使用socket通信,數(shù)據(jù)被透明的傳送至服務(wù)器,其數(shù)據(jù)格式、發(fā)送方式、響應(yīng)方式等都是自定義的私有協(xié)議,上層軟件的開發(fā)者需要根據(jù)私有協(xié)議處理數(shù)據(jù)通信?;趕ocket的簡單私有協(xié)議使得系統(tǒng)耦合性加大、系統(tǒng)靈活性降低。如果系統(tǒng)內(nèi)測控的溫室類型及數(shù)量較多時,數(shù)據(jù)處理將變得復(fù)雜,系統(tǒng)開發(fā)的復(fù)雜性和成本大大增加。為解決這個問題,將Web Services技術(shù)引入到嵌入式測控系統(tǒng)中。Web Services服務(wù)不依賴于任何語言和平臺,只要遵循相關(guān)協(xié)議用戶就可以像調(diào)用本地服務(wù)一樣調(diào)用該服務(wù),而不必了解底層的通信細(xì)節(jié)。
1 系統(tǒng)總體結(jié)構(gòu)
基于Web Services的嵌入式農(nóng)業(yè)物聯(lián)網(wǎng)測控系統(tǒng)的總體結(jié)構(gòu)如圖1所示。
現(xiàn)場設(shè)備中的ZigBee傳感器網(wǎng)絡(luò)、視頻采集模塊、執(zhí)行機(jī)構(gòu)控制模塊,完成信息采集和設(shè)備控制。linux智能網(wǎng)關(guān)層是本系統(tǒng)的關(guān)鍵部分,網(wǎng)關(guān)通過ZigBee網(wǎng)絡(luò)收集、存儲環(huán)境數(shù)據(jù),控制現(xiàn)場執(zhí)行機(jī)構(gòu),并對外提供數(shù)據(jù)查詢、設(shè)備控制等web Services接口,數(shù)據(jù)傳輸部分使用無線WIFI網(wǎng)橋連接現(xiàn)場設(shè)備與服務(wù)器。服務(wù)器主要提供數(shù)據(jù)庫服務(wù)、業(yè)務(wù)邏輯管理、用戶交互等服務(wù)。
2 系統(tǒng)功能模塊設(shè)計
2.1 ZigBee無線傳感網(wǎng)絡(luò)與無線控制節(jié)點
本系統(tǒng)的無線傳感網(wǎng)絡(luò)采用CC2530射頻芯片及溫濕度、光照、土壤濕度等傳感器構(gòu)成,在ZigBee Pro協(xié)議棧的基礎(chǔ)上進(jìn)行應(yīng)用開發(fā),CC2530結(jié)合一個完全集成的、高性能的RF收發(fā)器與一個增強型的8051微處理器,提供101 dB的鏈路質(zhì)量,具有較高的靈敏度和良好的抗干擾性,使得整個無線傳感網(wǎng)絡(luò)具有低成本、低功耗、網(wǎng)絡(luò)容量大、采樣點布置靈活的優(yōu)點。
ZigBee網(wǎng)絡(luò)由一個協(xié)調(diào)器、一個或多路由設(shè)備和多個終端設(shè)備組成。協(xié)調(diào)器是整個網(wǎng)絡(luò)的核心,負(fù)責(zé)網(wǎng)絡(luò)的組建,維護(hù)網(wǎng)絡(luò)的運行,使得各個節(jié)點和路由器間相互通信,路由器負(fù)責(zé)數(shù)據(jù)的中轉(zhuǎn),終端設(shè)備負(fù)責(zé)采集傳感器數(shù)據(jù)、控制繼外部設(shè)備,協(xié)調(diào)器通過串口與智能網(wǎng)關(guān)相連,透明轉(zhuǎn)發(fā)數(shù)據(jù)。
ZigBee終端節(jié)點有兩部分組成:核心板和擴(kuò)展版。核心板上主要由CC2530芯片、必需外部電路、天線等組成,主要完成數(shù)據(jù)傳輸以及控制擴(kuò)展板功能,擴(kuò)展板主要有三種:模擬量采集板、數(shù)字量采集板、設(shè)備控制板。模擬量采集版主要由電壓、電流采集電路組成,數(shù)字量采集板主要由RS232、RS485、I2C等數(shù)字接口電路組成,設(shè)備控制板主要由繼電器和PWM接口等組成。根據(jù)不同的傳感器和控制設(shè)備選用不同的擴(kuò)展版,既增加了ZigBee節(jié)點的靈活性又降低了成本和復(fù)雜性。
2.2 無線WIFI局域網(wǎng)
在實際生產(chǎn)中溫室距離服務(wù)器的距離較遠(yuǎn)且分布離散,如果通過雙絞線、光纖等有線方式連接溫室中的智能網(wǎng)關(guān)和云服務(wù)器,不但成本高、布線不便、影響農(nóng)業(yè)生產(chǎn);3G網(wǎng)絡(luò)帶寬窄、受無線信號影響大,流量費非常昂貴,不適合傳輸高清視頻。考慮視頻服務(wù)需要較大帶寬和智能網(wǎng)關(guān)與服務(wù)器的距離較遠(yuǎn),而無線網(wǎng)橋具有安裝靈活、通信帶寬較寬、通信距離長(目前無線點對點通信距離可達(dá)幾公里甚至幾十公里)等特點,采用無線網(wǎng)橋連接是較好的組網(wǎng)選擇。
2.3 智能網(wǎng)關(guān)
2.3.1 智能網(wǎng)關(guān)的硬件結(jié)構(gòu)及操作系統(tǒng)
智能網(wǎng)關(guān)的硬件系統(tǒng)主要由ARM處理器構(gòu)成。本系統(tǒng)的ARM處理器是三星公司的S3C6410微處理器,S3C6410是一款低功率、高性價比、高性能的用于移動電話和通用處理RSIC處理器。主要硬件資源及接口包括128M SRAM芯片,256M Nand Flash芯片,一個以太網(wǎng)口、兩個USB接口、4個RS232口等其他數(shù)字接口。
智能網(wǎng)關(guān)上運行經(jīng)過剪裁的linux 3.0.1版本操作系統(tǒng),以及YAFFS2可讀寫文件系統(tǒng),同時載入串口驅(qū)動、USBHost驅(qū)動(用以支持U盤、USB WIFI、USB 3G等)、網(wǎng)卡驅(qū)動等外設(shè)驅(qū)動,以支持應(yīng)用軟件運行。
2.3.2 智能網(wǎng)關(guān)Web Services服務(wù)
Web Services是本系統(tǒng)的重要組成部分,從表面上看,Web Services服務(wù)就是一個Web應(yīng)用程序,它向外界暴露出一個API接口,用戶可以通過編程方式在Internet上調(diào)用這些Web Services應(yīng)用程序。從深層次上看,Web服務(wù)是一種新的Web應(yīng)用程序分支,它們是自包含、自描述、模塊化的應(yīng)用,可以在網(wǎng)絡(luò)中被描述、發(fā)布、查找、調(diào)用。Web Services基于可擴(kuò)展的標(biāo)記語言(XML)消息交換,其所使用協(xié)議都是開放的標(biāo)準(zhǔn)協(xié)議,調(diào)用接口更加規(guī)范且與平臺無關(guān);調(diào)用方法采用簡單對象訪問協(xié)議(SOAP),其定義了其消息格式,實現(xiàn)實體間的信息交換;使用Web Services描述語言(WSDL)描述網(wǎng)絡(luò)服務(wù)及其訪問信息,WSDL描述了Web Services及其函數(shù)、參數(shù)和返回值等。
本系統(tǒng)的軟件架構(gòu)如圖2:主要有Web Serice接口層、服務(wù)抽象層、信息采集與控制層。
1)Web Services接口層
由于嵌入式系統(tǒng)的計算及存儲資源有限,本文使用gSOAP輕量級的開源工具實現(xiàn)Web Serices網(wǎng)絡(luò)接口。gSOAP編譯工具提供了一個SOAP /XML關(guān)于C/C++語言的實現(xiàn),屏蔽了SOAP協(xié)議的具體實現(xiàn)細(xì)節(jié),系統(tǒng)開發(fā)者只需關(guān)注具體的邏輯實現(xiàn)即可。gSOAP開發(fā)工具主要由gSoap編譯器和運行時庫組成,gSoap編譯器包括WSDL解析器(wsdl2h)、存根和框架編譯器(soapcpp2),WSDL解析器可以把WSDL文件解析成相應(yīng)的C/C++的頭文件(.h)主要用于Web Service客戶端開發(fā),存根和框架編譯器根據(jù)頭文件中函數(shù)定義生成存根和框架文件主要用于Web Service服務(wù)端開發(fā),stdsoap2.c是運行時庫文件,編譯時必須包含該文件。本系統(tǒng)中嵌入式網(wǎng)關(guān)對外服務(wù),所以只實現(xiàn)服務(wù)端程序。開發(fā)服端的應(yīng)用程序的過程如圖3所示。
開發(fā)服務(wù)端程序,用戶定義一個C/C++頭文件(.h),這個頭文件包含服務(wù)函數(shù)的名稱、輸入/輸出參數(shù)和相應(yīng)的數(shù)據(jù)類型聲明,聲明的函數(shù)需要在相應(yīng)的C/C++文件中實現(xiàn)。該頭文件經(jīng)gSoap編譯器編譯后,即可生成服務(wù)端端框架以及WSDL文件。獲取傳感器參數(shù)和控制設(shè)備的頭文件如圖4所示。
這個頭文件定義了Web Service的基本屬性:通信方式、文字編碼、命名空間、服務(wù)地址、接口參數(shù)聲明以及兩個服務(wù)接口函數(shù)ns_sen sor、ns_device。
依據(jù)圖定義的頭文件,按照圖服務(wù)端開發(fā)步驟系統(tǒng)Web服務(wù)的實現(xiàn)程序的主要代碼如圖5所示。
2)服務(wù)抽象層
服務(wù)抽象層屏蔽不同傳感器和可控設(shè)備的細(xì)節(jié),為gSoap網(wǎng)絡(luò)接口層提供支持,如圖6兩個接口函數(shù)的具體實現(xiàn)方法就屬于這一層。傳感器數(shù)據(jù)來源可能來自數(shù)據(jù)庫、其他進(jìn)程、或者ZigBee網(wǎng)絡(luò)等等,而實現(xiàn)一個設(shè)備動作(如簾幕收展)因為耗時較長需要創(chuàng)建新進(jìn)程控制多個繼電器協(xié)同工作。這就需要將抽象的查詢和控制命令解析為具體的實現(xiàn)過程,當(dāng)新增、修改指令時只需修改本層即可。
3)信息采集與控制層
信息采集和控制層主要完成具體的數(shù)據(jù)采集和控制過程。信息采集主要指通過ZigBee網(wǎng)絡(luò)將模擬傳感器的電流或電壓值轉(zhuǎn)換為數(shù)字值或按照通信協(xié)議獲取數(shù)字傳感器的測量值。控制主要指根據(jù)抽象層的設(shè)備控制命令完成具體設(shè)備的控制,如控制ZigBee板某個載繼電器的閉合或者通過某個PWM接口控制步進(jìn)電機(jī)運轉(zhuǎn)。當(dāng)有新的物理設(shè)備加入時,只需要修改本層代碼即可。
2.4 視頻監(jiān)控
由于通用ARM處理器核心不包含DSP視頻處理模塊,因此如果通過軟件實現(xiàn)視頻編碼及流化,實踐表明一般只能實現(xiàn)較低幀率且較低分辨率的輸出,畫質(zhì)較差,容易造成CPU占用率高、系統(tǒng)不穩(wěn)定。如果加入IPC(網(wǎng)絡(luò)攝像機(jī))專業(yè)處理器會造硬件成本和軟件研發(fā)成本巨大提高。近年來監(jiān)控產(chǎn)品價格逐漸降低,選擇成熟穩(wěn)定的網(wǎng)絡(luò)攝像機(jī)作為視頻監(jiān)控是較好的方案。網(wǎng)絡(luò)攝像機(jī)一般會提供SDK(軟件開發(fā)包)這使得視頻開發(fā)快捷方便。
2.5 應(yīng)用層
根據(jù)軟件工程松耦合分層設(shè)計思想和農(nóng)業(yè)生產(chǎn)需求額多樣性,本系統(tǒng)中的應(yīng)用層設(shè)計劃分力應(yīng)用服務(wù)子層、業(yè)務(wù)邏輯子層以及用戶交互子層。每一層都抽象地定義各自的功能以及對外接口。這樣每層都可以使用任何開發(fā)語言(如C#,Java等)獨立地開發(fā),層與層之間通過統(tǒng)一的接口進(jìn)行通信,目前層與層通信采用了共享數(shù)據(jù)庫數(shù)據(jù)以及進(jìn)程間通信技術(shù),避免系統(tǒng)某一層的改變影響其他層。
3 系統(tǒng)運行與測試
本系統(tǒng)已成功應(yīng)用于江蘇某農(nóng)業(yè)科技示范園內(nèi)的兩座玻璃溫室。位于辦公區(qū)的服務(wù)器距離溫室距離大于500米,通過無線網(wǎng)橋可以流暢的查看高清視頻,觀察植物生長狀況。每個溫室內(nèi)包括DHT21溫濕度傳感器(單總線)、JTBQ-6光照傳感器(電流輸出)、S-100H二氧化碳傳感器(電壓輸出),溫室具有側(cè)窗、天窗、保溫幕等多種設(shè)備需要控制,ZigBee控制節(jié)點連接了24路繼電器模塊,以完成復(fù)雜的控制過程。
服務(wù)器端開發(fā)使用.net平臺(開個工具為VS2010和SQLServer2008)的C#語言開發(fā),包括數(shù)據(jù)管理及控制模塊和Web網(wǎng)站,數(shù)據(jù)管理及控制調(diào)用嵌入式網(wǎng)關(guān)的Web Service接口完成數(shù)據(jù)采集、存儲和設(shè)備控制,開發(fā)時只需引用gSoap生成的WSDL文件VS2010會自動生成相應(yīng)的類,開發(fā)者只需使用這些類而不必了解具體實現(xiàn)過程,在圖5頭文件中定義的接口在VS2010中生成的類如圖6所示。
Web網(wǎng)站完成與用戶交互,用戶可以登入網(wǎng)站查看數(shù)據(jù),控制設(shè)備等,通過視頻查看植物生長狀況。
4 結(jié)束語
本文構(gòu)建了基于嵌入式Web Services的農(nóng)業(yè)物聯(lián)網(wǎng)測控系統(tǒng),實現(xiàn)了大規(guī)模的農(nóng)業(yè)測控方案。嵌入式網(wǎng)關(guān)通過web Services技術(shù)將Zigbee無線測控網(wǎng)絡(luò)與Internet鏈接起來,使得的底層設(shè)備數(shù)據(jù)獲取與設(shè)備控制都有相同的表示方式和操作方法,實現(xiàn)了異構(gòu)網(wǎng)絡(luò)的互操作,測控網(wǎng)絡(luò)獲得極大的靈活性,程序設(shè)計者都將從復(fù)雜的底層數(shù)據(jù)處理中解脫出來,大大降低了開發(fā)和維護(hù)的難度。
評論