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