本發(fā)明屬于物聯(lián)網(wǎng)領(lǐng)域,尤其涉及一種基于物聯(lián)網(wǎng)的數(shù)據(jù)顯示系統(tǒng)及方法。
背景技術(shù):
隨著計(jì)算機(jī)、電子通訊、控制、信息等技術(shù)的發(fā)展,運(yùn)用計(jì)算機(jī)物聯(lián)網(wǎng)技術(shù)可為生態(tài)農(nóng)、牧業(yè)建設(shè)和科學(xué)管理提供全方位、完善的監(jiān)測(cè)技術(shù)手段。建立生態(tài)物聯(lián)網(wǎng)可對(duì)農(nóng)業(yè)、草原牧區(qū)土壤和氣象環(huán)境參數(shù)進(jìn)行實(shí)時(shí)、高效、快速的檢測(cè),對(duì)生態(tài)產(chǎn)量和質(zhì)量進(jìn)行預(yù)報(bào),以及對(duì)重大農(nóng)、牧業(yè)生態(tài)環(huán)境污染事故做出預(yù)警,是有效扭轉(zhuǎn)我國(guó)目前生態(tài)農(nóng)牧發(fā)展現(xiàn)狀的技術(shù)方法之一,這將產(chǎn)生良好的社會(huì)和經(jīng)濟(jì)效益,推動(dòng)社會(huì)發(fā)展。
無(wú)線傳感器網(wǎng)絡(luò)的產(chǎn)品備受消費(fèi)者青睞,然而由于采集數(shù)據(jù)較多,用戶實(shí)時(shí)性要求較高,PC機(jī)笨重不便攜的缺點(diǎn)日益凸顯。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供一種基于物聯(lián)網(wǎng)的數(shù)據(jù)顯示系統(tǒng)及方法,旨在解決現(xiàn)有物聯(lián)網(wǎng)無(wú)線傳感器網(wǎng)絡(luò)采用PC機(jī),笨重便于攜帶和操作的問(wèn)題。
本發(fā)明是這樣實(shí)現(xiàn)的,一種基于物聯(lián)網(wǎng)的數(shù)據(jù)顯示系統(tǒng),所述基于物聯(lián)網(wǎng)的數(shù)據(jù)顯示系統(tǒng)包括Android模塊、Zigbee傳感器網(wǎng)絡(luò)模塊、后臺(tái)系統(tǒng)、服務(wù)器;
所述服務(wù)器與所述后臺(tái)系統(tǒng)通過(guò)無(wú)線網(wǎng)絡(luò)連接,所述后臺(tái)系統(tǒng)與所述Zigbee傳感器網(wǎng)絡(luò)模塊通過(guò)無(wú)線網(wǎng)絡(luò)連接,所述Android模塊與所述服務(wù)器通過(guò)無(wú)線網(wǎng)絡(luò)連接;
所述Android模塊由底層到頂層分別為L(zhǎng)inux內(nèi)核層、系統(tǒng)運(yùn)行層、應(yīng)用框架層和應(yīng)用層;
所述Zigbee傳感器網(wǎng)絡(luò)模塊包括傳感器、數(shù)據(jù)采集器、路由器、協(xié)調(diào)器、Zigbee傳感器終端;
所述傳感器與所述數(shù)據(jù)采集器電性連接,所述數(shù)據(jù)采集器與所述路由器通過(guò)無(wú)線網(wǎng)絡(luò)連接,所述路由器與所述協(xié)調(diào)器通過(guò)無(wú)線網(wǎng)絡(luò)連接,所述Zigbee傳感器終端與所述協(xié)調(diào)器通過(guò)無(wú)線網(wǎng)絡(luò)連接;
所述傳感器包括TI CC2530芯片及與該TI CC2530芯片連接的傳感器接口、電源接口、天線接口;
在Linux內(nèi)核層中設(shè)置有相機(jī)驅(qū)動(dòng)模塊、USB驅(qū)動(dòng)模塊,在Linux內(nèi)核層的上一層是系統(tǒng)運(yùn)行層,該系統(tǒng)運(yùn)行層由內(nèi)庫(kù)層和安卓運(yùn)行時(shí)模塊組成;
所述內(nèi)庫(kù)層包括2D圖庫(kù)引擎模塊、3D圖庫(kù)引擎模塊、SQLite模塊,C語(yǔ)言核心庫(kù)模塊;
所述安卓運(yùn)行時(shí)模塊包括DVM模塊和Java語(yǔ)言核心庫(kù)模塊;
所述應(yīng)用框架層,包括視圖系統(tǒng)、通知管理器;
應(yīng)用層,包括桌面應(yīng)用模塊、手機(jī)聯(lián)系人應(yīng)用模塊、電話應(yīng)用模塊;
后臺(tái)系統(tǒng)的信息處理方法包括:
消息機(jī)制,對(duì)于Android中聯(lián)網(wǎng)請(qǐng)求異步消息,分為三步:主線程顯示提示視圖;分線程進(jìn)行聯(lián)網(wǎng)請(qǐng)求,并得到響應(yīng)數(shù)據(jù);在主線程中顯示數(shù)據(jù)。在Android開(kāi)發(fā)過(guò)程中與消息處理相關(guān)的API主要有Message和Handler;
當(dāng)分線程聯(lián)網(wǎng)獲得了服務(wù)器返回的數(shù)據(jù),需在主線程里執(zhí)行,分線程發(fā)一個(gè)消息給主線程,然后在主線程中進(jìn)行界面更新相關(guān)操作,Handler的作用定義為在線程間分發(fā)消息,Handler是Message的處理器,處理消息的發(fā)送和移除工作。Message通過(guò)其自己的靜態(tài)方法Message.obtain()創(chuàng)建一個(gè)對(duì)象,然后由obj或者argl對(duì)象對(duì)不同類型的消息進(jìn)行封裝,最后由what對(duì)象對(duì)消息標(biāo)識(shí),Handler通過(guò)Handler.sendMessage或Handler.sendMessage發(fā)送消息,在主線程中,通過(guò)調(diào)用handleMessage來(lái)處理消息;
Json數(shù)據(jù),Json分為兩種格式Json數(shù)組和Json對(duì)象。Json數(shù)組的結(jié)構(gòu)為[value1,value2,value3……],而Json對(duì)象的結(jié)構(gòu)為[keyl:value1,key2:value2,key3:value3……];其中key的值是字符串,而value的數(shù)據(jù)類型數(shù)值或字符串、null、Json對(duì)象或Json數(shù)組。在服務(wù)器,將Java對(duì)象轉(zhuǎn)換為Json格式的字符串來(lái)返回給客戶端;在客戶端,通常反之進(jìn)行操作;使用Gson框架。在導(dǎo)入Gson架包之后,然后創(chuàng)建Gson對(duì)象后通過(guò)調(diào)用String toJson方法將傳入的對(duì)象轉(zhuǎn)換為對(duì)應(yīng)格式的Json字符串;同樣在服務(wù)器,通過(guò)調(diào)用T fromJson解析Json字符串,得到對(duì)象;
服務(wù)器的信息處理方法包括:
(1)從數(shù)據(jù)源獲取最新的環(huán)境參數(shù)
當(dāng)服務(wù)器獲得了客戶端發(fā)送的最新查詢請(qǐng)求后,需返回給客戶端該傳感器最新存儲(chǔ)到數(shù)據(jù)庫(kù)中的數(shù)據(jù),首先通過(guò)select語(yǔ)句獲得該節(jié)點(diǎn)的最新查詢時(shí)間。進(jìn)而通過(guò)該最新查詢時(shí)間鎖定該查詢時(shí)間中獲取的環(huán)境參數(shù);
(2)DAO層
DAO層是新建一個(gè)訪問(wèn)數(shù)據(jù)的類,包含了對(duì)數(shù)據(jù)庫(kù)的CRUD操作,把底層的數(shù)據(jù)訪問(wèn)邏輯和上層的邏輯剝離開(kāi),使得DAO層實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)部分的功能;
所述基于物聯(lián)網(wǎng)的數(shù)據(jù)顯示系統(tǒng)的數(shù)據(jù)顯示方法包括:
Android模塊發(fā)出采集數(shù)據(jù)的命令,然后將命令由協(xié)調(diào)器節(jié)點(diǎn)通過(guò)無(wú)線網(wǎng)絡(luò)傳達(dá)給傳感器節(jié)點(diǎn),在傳感器接收到采集命令后,遵照采集頻率進(jìn)行數(shù)據(jù)的采集工作,采集到參數(shù)后,終端節(jié)點(diǎn)將采集到的數(shù)據(jù)連同參數(shù)獲取時(shí)間、區(qū)標(biāo)識(shí)、節(jié)點(diǎn)標(biāo)識(shí)參數(shù)值一同傳輸?shù)胶笈_(tái)系統(tǒng)并發(fā)送給服務(wù)器,服務(wù)器將收集到的數(shù)據(jù)處理并存儲(chǔ),Android模塊發(fā)出讀取數(shù)據(jù)的命令給服務(wù)器,服務(wù)器將存儲(chǔ)的數(shù)據(jù)發(fā)送給Android模塊。
進(jìn)一步,所述服務(wù)器設(shè)置有接收信號(hào)模塊,所述接收信號(hào)模塊的接收信號(hào)s(t)廣義二階循環(huán)累積量按如下公式進(jìn)行:
接收信號(hào)s(t)的特征參數(shù)M2的理論值具體計(jì)算公式為:
經(jīng)過(guò)計(jì)算可知,BPSK信號(hào)和MSK信號(hào)的均為1,QPSK、8PSK、16QAM和64QAM信號(hào)的均為0,由此可以用最小均方誤差分類器將BPSK、MSK信號(hào)與QPSK、8PSK、16QAM、64QAM信號(hào)分開(kāi);對(duì)于BPSK信號(hào)而言,在廣義循環(huán)累積量幅度譜上僅在載頻位置存在一個(gè)明顯譜峰,而MSK信號(hào)在兩個(gè)頻率處各有一個(gè)明顯譜峰,由此可通過(guò)特征參數(shù)M2和檢測(cè)廣義循環(huán)累積量幅度譜的譜峰個(gè)數(shù)將BPSK信號(hào)與MSK信號(hào)識(shí)別出來(lái);
檢測(cè)廣義循環(huán)累積量幅度譜的譜峰個(gè)數(shù)的具體方法如下:
首先搜索廣義循環(huán)累積量幅度譜的最大值Max及其位置對(duì)應(yīng)的循環(huán)頻率α0,將其小鄰域[α0-δ0,α0+δ0]內(nèi)置零,其中δ0為一個(gè)正數(shù),若|α0-fc|/fc<σ0,其中δ0為一個(gè)接近0的正數(shù),fc為信號(hào)的載波頻率,則判斷此信號(hào)類型為BPSK信號(hào),否則繼續(xù)搜索次大值Max1及其位置對(duì)應(yīng)的循環(huán)頻率α1;若|Max-Max1|/Max<σ0,并且|(α0+α1)/2-fc|/fc<σ0,則判斷此信號(hào)類型為MSK信號(hào)。
進(jìn)一步,所述路由器設(shè)置有接收準(zhǔn)則模塊,所述接收準(zhǔn)則模塊的信號(hào)處理方法包括:獲取x1和x2的接收干信比,即干擾信號(hào)與期望信號(hào)的功率比ki(i=1,2),信噪比以及干擾與期望信號(hào)的空間相關(guān)度cos2θ,并計(jì)算xi的接收準(zhǔn)則
其中,i=1,2,為信噪比,對(duì)于i=1,對(duì)于i=2,f2=H2P2,
進(jìn)一步,所述Zigbee傳感器網(wǎng)絡(luò)模塊設(shè)置有定位節(jié)點(diǎn)坐標(biāo)計(jì)算模塊,所述定位節(jié)點(diǎn)坐標(biāo)接收模塊的計(jì)算方法包括:
第一步,選定差分修正點(diǎn),確定定位交點(diǎn)坐標(biāo)和復(fù)數(shù)定位交點(diǎn),計(jì)算定位交點(diǎn)間距離;
從中選擇距離值最小的錨節(jié)點(diǎn)A0為差分修正點(diǎn),再?gòu)氖S嗟木嚯x值中取出3個(gè)最小的距離值,這3個(gè)為距離值分別和對(duì)應(yīng)的錨節(jié)點(diǎn)坐標(biāo)分別為A1(x1,y1)、A2(x2,y2)和A3(x3,y3),分別以錨節(jié)點(diǎn)Ai(xi,yi)為圓心,為半徑作三個(gè)定位圓i,其中i=1,2,3,三個(gè)定位圓的相交情況共有6種,兩個(gè)圓之間存在兩個(gè)交點(diǎn),這兩個(gè)交點(diǎn)為兩個(gè)相等的實(shí)數(shù)交點(diǎn),或兩個(gè)不相等的實(shí)數(shù)交點(diǎn),或兩個(gè)復(fù)數(shù)交點(diǎn);兩個(gè)定位圓的兩個(gè)交點(diǎn)中,選擇與第三定位圓圓心坐標(biāo)的距離較小的那個(gè)交點(diǎn)作為定位交點(diǎn),以參與待定位節(jié)點(diǎn)的定位;由3個(gè)定位圓確定三個(gè)定位交點(diǎn)及復(fù)數(shù)定位交點(diǎn)的個(gè)數(shù)m,由定位圓2和定位圓3確定的定位交點(diǎn)坐標(biāo)為由定位圓1和定位圓3確定的定位交點(diǎn)的坐標(biāo)為由定位圓1和定位圓2確定的定位交點(diǎn)的坐標(biāo)為定位交點(diǎn)與與與的距離分別為d12、d23、d13:
第二步,設(shè)置閾值T,個(gè)體差異系數(shù)修正系數(shù)w,參數(shù)l(l>0),設(shè)置T=0.5、w=1500以及l(fā)=0.001,三個(gè)定位交點(diǎn)之間的距離d12<T、d23<T、d13<T時(shí),執(zhí)行第四步;
第三步,根據(jù)如下自適應(yīng)距離修正公式修正得到修正距離為d1、d2、d3:
其中,di表示待定位節(jié)點(diǎn)與錨節(jié)點(diǎn)Ai之間的修正距離,d0i表示差分修正點(diǎn)A0與錨節(jié)點(diǎn)Ai之間的實(shí)際距離,表示差分修正點(diǎn)A0與錨節(jié)點(diǎn)Ai之間的測(cè)量距離,w表示個(gè)體差異系數(shù)修正系數(shù),li表示方向修正因子,exp(×)表示指數(shù)函數(shù);
根據(jù)修正后的距離d1、d2、d3,重新求解修正后的三個(gè)定位交點(diǎn)間的距離d12、d23、d13,返回第二步;
第四步,根據(jù)如下公式,計(jì)算出待定位節(jié)點(diǎn)的定位坐標(biāo)O(x0,y0):
其中,a1、a2、a3分別表示的權(quán)重,b1、b2、b3分別表示的權(quán)重,
本發(fā)明利用Android開(kāi)發(fā)技術(shù),將無(wú)線傳感器網(wǎng)路系統(tǒng)中獲取的環(huán)境參數(shù)信息,實(shí)時(shí)的顯示到用戶移動(dòng)設(shè)備上,該應(yīng)用將會(huì)推動(dòng)無(wú)線傳感器對(duì)農(nóng)作物生長(zhǎng)環(huán)境進(jìn)行技術(shù)檢測(cè)的發(fā)展,使用者可以在移動(dòng)的情況下隨時(shí)隨地獲取遠(yuǎn)距離參數(shù)。進(jìn)而根據(jù)參數(shù),實(shí)時(shí)的調(diào)整種田和維護(hù)的策略,提高糧食產(chǎn)量,還可以應(yīng)用到草原牧區(qū)和林田等環(huán)境條件下,APP人機(jī)交互性良好,在準(zhǔn)確率和時(shí)延性方面均能夠滿足客戶的需求。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例提供的基于物聯(lián)網(wǎng)的數(shù)據(jù)顯示系統(tǒng)及方法的結(jié)構(gòu)示意圖;
圖2是本發(fā)明實(shí)施例提供的Zigbee傳感器網(wǎng)絡(luò)模塊的結(jié)構(gòu)示意圖;
圖中:1、Android模塊;2、Zigbee傳感器網(wǎng)絡(luò)模塊;2-1、傳感器;2-2、數(shù)據(jù)采集器;2-3、路由器;2-4、協(xié)調(diào)器;2-5、Zigbee傳感器終端;3、后臺(tái)系統(tǒng);4、服務(wù)器。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本本發(fā)明,并不用于限定本發(fā)明。
下面結(jié)合附圖對(duì)本發(fā)明的應(yīng)用原理作詳細(xì)的描述。
請(qǐng)參閱圖1-圖2,本發(fā)明實(shí)施例的基于物聯(lián)網(wǎng)的數(shù)據(jù)顯示系統(tǒng)包括Android模塊1、Zigbee傳感器網(wǎng)絡(luò)模塊2、后臺(tái)系統(tǒng)3、服務(wù)器4。
所述服務(wù)器4與所述后臺(tái)系統(tǒng)3通過(guò)無(wú)線網(wǎng)絡(luò)連接,所述后臺(tái)系統(tǒng)3與所述Zigbee傳感器網(wǎng)絡(luò)模塊2通過(guò)無(wú)線網(wǎng)絡(luò)連接,所述Android模塊1與所述服務(wù)器4通過(guò)無(wú)線網(wǎng)絡(luò)連接。
所述Android模塊1由底層到頂層分別為L(zhǎng)inux內(nèi)核層、系統(tǒng)運(yùn)行層、應(yīng)用框架層和應(yīng)用層。
進(jìn)一步,所述Zigbee傳感器網(wǎng)絡(luò)模塊2包括傳感器2-1、數(shù)據(jù)采集器2-2、路由器2-3、協(xié)調(diào)器2-4、Zigbee傳感器終端2-5。
所述傳感器2-1與所述數(shù)據(jù)采集器2-2電性連接,所述數(shù)據(jù)采集器2-2與所述路由器2-3通過(guò)無(wú)線網(wǎng)絡(luò)連接,所述路由器2-3與所述協(xié)調(diào)器2-4通過(guò)無(wú)線網(wǎng)絡(luò)連接,所述Zigbee傳感器終端2-5與所述協(xié)調(diào)器2-4通過(guò)無(wú)線網(wǎng)絡(luò)連接。
進(jìn)一步,在Linux內(nèi)核層中設(shè)置有相機(jī)驅(qū)動(dòng)模塊、USB驅(qū)動(dòng)模塊,在Linux內(nèi)核層的上一層是系統(tǒng)運(yùn)行層,該系統(tǒng)運(yùn)行層由內(nèi)庫(kù)層和安卓運(yùn)行時(shí)模塊組成;
所述內(nèi)庫(kù)層包括2D圖庫(kù)引擎模塊、3D圖庫(kù)引擎模塊、SQLite模塊,C語(yǔ)言核心庫(kù)模塊。
所述安卓運(yùn)行時(shí)模塊包括DVM模塊和Java語(yǔ)言核心庫(kù)模塊。
所述應(yīng)用框架層,包括視圖系統(tǒng)、通知管理器。
應(yīng)用層,包括桌面應(yīng)用模塊、手機(jī)聯(lián)系人應(yīng)用模塊、電話應(yīng)用模塊。
進(jìn)一步,基于物聯(lián)網(wǎng)的數(shù)據(jù)顯示方法包括:
Android模塊發(fā)出采集數(shù)據(jù)的命令,然后將命令由協(xié)調(diào)器節(jié)點(diǎn)通過(guò)無(wú)線網(wǎng)絡(luò)傳達(dá)給傳感器節(jié)點(diǎn),在傳感器接收到采集命令后,遵照采集頻率進(jìn)行數(shù)據(jù)的采集工作,采集到參數(shù)后,終端節(jié)點(diǎn)將采集到的數(shù)據(jù)連同參數(shù)獲取時(shí)間、區(qū)標(biāo)識(shí)、節(jié)點(diǎn)標(biāo)識(shí)參數(shù)值一同傳輸?shù)胶笈_(tái)系統(tǒng)并發(fā)送給服務(wù)器,服務(wù)器將收集到的數(shù)據(jù)處理并存儲(chǔ),Android模塊發(fā)出讀取數(shù)據(jù)的命令給服務(wù)器,服務(wù)器將存儲(chǔ)的數(shù)據(jù)發(fā)送給Android模塊。
在本實(shí)施例的APP開(kāi)發(fā)中,使用Gson來(lái)解析Json數(shù)據(jù),Gson是Google公司提供的一個(gè)用來(lái)在Java對(duì)象和Json數(shù)據(jù)之間進(jìn)行映射的Java類庫(kù)。使用Gson,可以十分簡(jiǎn)潔的將一串Json數(shù)據(jù)轉(zhuǎn)換為一個(gè)Java對(duì)象,或?qū)⒁粋€(gè)Java對(duì)象轉(zhuǎn)換為相應(yīng)的Json數(shù)據(jù),這相比Android原生API大大提高了效率。
采集內(nèi)蒙古自治區(qū)鄂爾多斯市五家堯村試驗(yàn)田的草莓生長(zhǎng)參數(shù)信息包括:二氧化碳含量、空氣溫度、土壤濕度、土壤溫度、光照強(qiáng)度、空氣濕度;
其中區(qū)編號(hào)一般表示農(nóng)田中的哪塊區(qū)域,終端節(jié)點(diǎn)編號(hào)則表示該區(qū)域哪個(gè)傳感器采集到的數(shù)據(jù)。
后臺(tái)結(jié)構(gòu)設(shè)計(jì):
(1)消息機(jī)制
對(duì)于Android中聯(lián)網(wǎng)請(qǐng)求異步消息,大概可以分為三步:1、主線程顯示提示視圖;2、分線程進(jìn)行聯(lián)網(wǎng)請(qǐng)求,并得到響應(yīng)數(shù)據(jù);3、在主線程中顯示數(shù)據(jù)。在Android開(kāi)發(fā)過(guò)程中與消息處理相關(guān)的API主要有Message和Handler。
當(dāng)分線程聯(lián)網(wǎng)獲得了服務(wù)器返回的數(shù)據(jù),需在主線程里執(zhí)行。分線程發(fā)一個(gè)消息給主線程,這個(gè)消息攜帶數(shù)據(jù),然后在主線程中進(jìn)行界面更新等相關(guān)操作。Handler的作用定義為在線程間分發(fā)消息。也就是說(shuō)Handler是Message的處理器,處理消息的發(fā)送和移除工作。Message通過(guò)其自己的靜態(tài)方法Message.obtain()創(chuàng)建一個(gè)對(duì)象。然后由obj或者argl對(duì)象對(duì)不同類型的消息進(jìn)行封裝。最后由what對(duì)象對(duì)消息標(biāo)識(shí)。Handler通過(guò)Handler.sendMessage(Message msg)或Handler.sendMessage(Message msg,Lang time)來(lái)發(fā)送消息,這兩種方法所不同的是發(fā)送的消息是否需要延時(shí)。在主線程中,通過(guò)調(diào)用handleMessage(Message msg)來(lái)處理消息。
(2)Json數(shù)據(jù)
Json分為兩種格式Json數(shù)組和Json對(duì)象。Json數(shù)組的結(jié)構(gòu)為[value1,value2,value3……],而Json對(duì)象的結(jié)構(gòu)為[key1:value1,key2:value2,key3:value3……]。
其中key的值必須是字符串,而value的數(shù)據(jù)類型可以是數(shù)值、字符串、null甚至還可以是Json對(duì)象或Json數(shù)組。在服務(wù)器,需要將Java對(duì)象轉(zhuǎn)換為Json格式的字符串來(lái)返回給客戶端;在客戶端,通常反之進(jìn)行操作。
對(duì)于Json數(shù)據(jù)的解析可以用Android原生的API但相對(duì)來(lái)說(shuō)比較繁瑣。而使用Gson框架就會(huì)使項(xiàng)目比較簡(jiǎn)潔,在本次開(kāi)發(fā)中使用的是Gson框架。在導(dǎo)入Gson架包之后,然后創(chuàng)建Gson對(duì)象后通過(guò)調(diào)用String toJson(Object src)方法就可以將傳入的對(duì)象轉(zhuǎn)換為對(duì)應(yīng)格式的Json字符串;同樣在服務(wù)器,通過(guò)調(diào)用T fromJson(String Json,Type typeofT)也可以解析Json字符串,得到對(duì)象。
服務(wù)器結(jié)構(gòu)設(shè)計(jì):
(1)從數(shù)據(jù)源獲取最新的環(huán)境參數(shù)
當(dāng)服務(wù)器獲得了客戶端發(fā)送的最新查詢請(qǐng)求(包括區(qū)編號(hào)以及節(jié)點(diǎn)編號(hào))后,需返回給客戶端該傳感器最新存儲(chǔ)到數(shù)據(jù)庫(kù)中的數(shù)據(jù)。首先通過(guò)select語(yǔ)句獲得該節(jié)點(diǎn)的最新查詢時(shí)間。進(jìn)而通過(guò)該最新查詢時(shí)間鎖定該查詢時(shí)間中獲取的環(huán)境參數(shù)。
(2)DAO層
DAO(Data Access Object)層是新建一個(gè)訪問(wèn)數(shù)據(jù)的類,包含了對(duì)數(shù)據(jù)庫(kù)的CRUD(Creat,Read,Update,Delete)操作,而不包括任何業(yè)務(wù)相關(guān)的信息。這樣就能把底層的數(shù)據(jù)訪問(wèn)邏輯和上層的邏輯剝離開(kāi)。使得DAO層能夠更加專注于實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)部分的功能。這樣做的優(yōu)勢(shì)就是實(shí)現(xiàn)了功能的模塊化,更有利于代碼的維護(hù)的和升級(jí)。
進(jìn)一步,所述服務(wù)器設(shè)置有接收信號(hào)模塊,所述接收信號(hào)模塊的接收信號(hào)s(t)廣義二階循環(huán)累積量按如下公式進(jìn)行:
接收信號(hào)s(t)的特征參數(shù)M2的理論值具體計(jì)算公式為:
經(jīng)過(guò)計(jì)算可知,BPSK信號(hào)和MSK信號(hào)的均為1,QPSK、8PSK、16QAM和64QAM信號(hào)的均為0,由此可以用最小均方誤差分類器將BPSK、MSK信號(hào)與QPSK、8PSK、16QAM、64QAM信號(hào)分開(kāi);對(duì)于BPSK信號(hào)而言,在廣義循環(huán)累積量幅度譜上僅在載頻位置存在一個(gè)明顯譜峰,而MSK信號(hào)在兩個(gè)頻率處各有一個(gè)明顯譜峰,由此可通過(guò)特征參數(shù)M2和檢測(cè)廣義循環(huán)累積量幅度譜的譜峰個(gè)數(shù)將BPSK信號(hào)與MSK信號(hào)識(shí)別出來(lái);
檢測(cè)廣義循環(huán)累積量幅度譜的譜峰個(gè)數(shù)的具體方法如下:
首先搜索廣義循環(huán)累積量幅度譜的最大值Max及其位置對(duì)應(yīng)的循環(huán)頻率α0,將其小鄰域[α0-δ0,α0+δ0]內(nèi)置零,其中δ0為一個(gè)正數(shù),若|α0-fc|/fc<σ0,其中δ0為一個(gè)接近0的正數(shù),fc為信號(hào)的載波頻率,則判斷此信號(hào)類型為BPSK信號(hào),否則繼續(xù)搜索次大值Max1及其位置對(duì)應(yīng)的循環(huán)頻率α1;若|Max-Max1|/Max<σ0,并且|(α0+α1)/2-fc|/fc<σ0,則判斷此信號(hào)類型為MSK信號(hào)。
進(jìn)一步,所述路由器設(shè)置有接收準(zhǔn)則模塊,所述接收準(zhǔn)則模塊的信號(hào)處理方法包括:獲取x1和x2的接收干信比,即干擾信號(hào)與期望信號(hào)的功率比ki(i=1,2),信噪比以及干擾與期望信號(hào)的空間相關(guān)度cos2θ,并計(jì)算xi的接收準(zhǔn)則
其中,i=1,2,為信噪比,對(duì)于i=1,E1=H1p1,對(duì)于i=2,f2=H2P2,
進(jìn)一步,所述Zigbee傳感器網(wǎng)絡(luò)模塊設(shè)置有定位節(jié)點(diǎn)坐標(biāo)計(jì)算模塊,所述定位節(jié)點(diǎn)坐標(biāo)接收模塊的計(jì)算方法包括:
第一步,選定差分修正點(diǎn),確定定位交點(diǎn)坐標(biāo)和復(fù)數(shù)定位交點(diǎn),計(jì)算定位交點(diǎn)間距離;
從中選擇距離值最小的錨節(jié)點(diǎn)A0為差分修正點(diǎn),再?gòu)氖S嗟木嚯x值中取出3個(gè)最小的距離值,這3個(gè)為距離值分別和對(duì)應(yīng)的錨節(jié)點(diǎn)坐標(biāo)分別為A1(x1,y1)、A2(x2,y2)和A3(x3,y3),分別以錨節(jié)點(diǎn)Ai(xi,yi)為圓心,為半徑作三個(gè)定位圓i,其中i=1,2,3,三個(gè)定位圓的相交情況共有6種,兩個(gè)圓之間存在兩個(gè)交點(diǎn),這兩個(gè)交點(diǎn)為兩個(gè)相等的實(shí)數(shù)交點(diǎn),或兩個(gè)不相等的實(shí)數(shù)交點(diǎn),或兩個(gè)復(fù)數(shù)交點(diǎn);兩個(gè)定位圓的兩個(gè)交點(diǎn)中,選擇與第三定位圓圓心坐標(biāo)的距離較小的那個(gè)交點(diǎn)作為定位交點(diǎn),以參與待定位節(jié)點(diǎn)的定位;由3個(gè)定位圓確定三個(gè)定位交點(diǎn)及復(fù)數(shù)定位交點(diǎn)的個(gè)數(shù)m,由定位圓2和定位圓3確定的定位交點(diǎn)坐標(biāo)為由定位圓1和定位圓3確定的定位交點(diǎn)的坐標(biāo)為由定位圓1和定位圓2確定的定位交點(diǎn)的坐標(biāo)為定位交點(diǎn)與與與的距離分別為d12、d23、d13:
第二步,設(shè)置閾值T,個(gè)體差異系數(shù)修正系數(shù)w,參數(shù)l(l>0),設(shè)置T=0.5、w=1500以及l(fā)=0.001,三個(gè)定位交點(diǎn)之間的距離d12<T、d23<T、d13<T時(shí),執(zhí)行第四步;
第三步,根據(jù)如下自適應(yīng)距離修正公式修正得到修正距離為d1、d2、d3:
其中,di表示待定位節(jié)點(diǎn)與錨節(jié)點(diǎn)Ai之間的修正距離,d0i表示差分修正點(diǎn)A0與錨節(jié)點(diǎn)Ai之間的實(shí)際距離,表示差分修正點(diǎn)A0與錨節(jié)點(diǎn)Ai之間的測(cè)量距離,w表示個(gè)體差異系數(shù)修正系數(shù),li表示方向修正因子,exp(×)表示指數(shù)函數(shù);
根據(jù)修正后的距離d1、d2、d3,重新求解修正后的三個(gè)定位交點(diǎn)間的距離d12、d23、d13,返回第二步;
第四步,根據(jù)如下公式,計(jì)算出待定位節(jié)點(diǎn)的定位坐標(biāo)O(x0,y0):
其中,a1、a2、a3分別表示的權(quán)重,b1、b2、b3分別表示的權(quán)重,
Android模塊APP的主要功能是根據(jù)用戶輸入的區(qū)域編號(hào)、終端結(jié)點(diǎn)編號(hào),顯示該終端節(jié)點(diǎn)采集到的最新該種參數(shù)數(shù)據(jù)。測(cè)試用例如表1所示。(CO2含量數(shù)值單位:CO2ppm=10000*(CO2/(16383×2)×3.3-0.4)/1.6;土壤濕度數(shù)值單位:100*SW/(16383×2)×3.3;土壤溫度數(shù)值單位:LT*1.0(自定義補(bǔ)償光系數(shù));光照強(qiáng)度數(shù)值單位:TEM*0.01-39.6;空氣濕度數(shù)值單位:HUM*0.0367-2.0468-1.5955E-6*HUM*HUM;空氣溫度數(shù)值單位:TEM*0.01-39.6采集時(shí)間格式為年月日時(shí)分秒(YYYYMMDDhhmmss));
表1
由于該APP主要目的是為了向使用者準(zhǔn)確及時(shí)的反映農(nóng)田的生長(zhǎng)環(huán)境參數(shù)。所以應(yīng)該考察該APP的傳送數(shù)據(jù)的準(zhǔn)確性、及時(shí)性、遠(yuǎn)距離傳輸?shù)忍匦?。又因?yàn)樵揂PP是基于互聯(lián)網(wǎng)傳輸數(shù)據(jù),故測(cè)試主要考察APP的的準(zhǔn)確性和及時(shí)性。
本次測(cè)試是在實(shí)驗(yàn)室的環(huán)境情況下完成,同時(shí)采集六種環(huán)境信息,采集間隔為10s。然后分別請(qǐng)求不同的環(huán)境參數(shù),其中請(qǐng)求CO2參數(shù)8次,土壤濕度參數(shù)8次,光照強(qiáng)度參數(shù)8次,土壤溫度參數(shù)8次,空氣溫度參數(shù)8次,空氣濕度參數(shù)8次,共48組數(shù)據(jù);將APP顯示的數(shù)據(jù)分別與數(shù)據(jù)庫(kù)中的數(shù)據(jù)相對(duì)比。不妨假設(shè)ai為該類型數(shù)據(jù)在數(shù)據(jù)庫(kù)中的實(shí)際值(在本實(shí)驗(yàn)中0≤i≤5);bi為該類型數(shù)據(jù)在手機(jī)端的顯示值(0≤i≤5)。下面給出誤差率μ的定義:
μ=|ai-bi|/ai(0≤i≤5)
本次測(cè)試嚴(yán)格按照測(cè)試計(jì)劃和測(cè)試用例執(zhí)行,主要從準(zhǔn)確性方面進(jìn)行測(cè)試,測(cè)試數(shù)據(jù)的誤差率為0。由于采取手工測(cè)試方式,未能完全在農(nóng)田環(huán)境中實(shí)現(xiàn)對(duì)大量數(shù)據(jù)進(jìn)行操作的測(cè)試,但不影響實(shí)際使用情況下用戶對(duì)該應(yīng)用準(zhǔn)確性的需求。
時(shí)延測(cè)試
假設(shè)si為某類數(shù)據(jù)在服務(wù)器的發(fā)送時(shí)間(在本實(shí)驗(yàn)中0≤i≤5,si單位:毫秒);ri為客戶端顯示該數(shù)據(jù)的時(shí)間(ri單位:毫秒)。下面給出誤時(shí)延t的定義:
t=ri-si(0≤i≤5)
本次測(cè)試主要從時(shí)延性方面進(jìn)行測(cè)試。經(jīng)測(cè)試,客戶端請(qǐng)求數(shù)據(jù)存在一定的時(shí)延,但時(shí)延一般維持在O.1s左右。由于只為每種類型傳感器設(shè)置一個(gè)終端節(jié)點(diǎn),取了部分?jǐn)?shù)據(jù)測(cè)試,但結(jié)果能夠滿足用戶對(duì)等待時(shí)間的需求。
經(jīng)過(guò)界面測(cè)試,該APP的界面設(shè)計(jì)符合人們的使用習(xí)慣,并在選擇查詢節(jié)點(diǎn)的過(guò)程中都有顯示。通過(guò)數(shù)據(jù)的準(zhǔn)確性測(cè)試和時(shí)延測(cè)試發(fā)現(xiàn),本次實(shí)驗(yàn)所設(shè)計(jì)的應(yīng)用能夠準(zhǔn)確的獲取數(shù)據(jù)源的數(shù)據(jù),反映農(nóng)田的真實(shí)狀況。查詢相關(guān)資料發(fā)現(xiàn):0.1秒在該時(shí)間內(nèi)顯示反饋結(jié)果用戶是可以接受的。1.0秒是用戶保持不間斷的思維流的限定時(shí)間,用戶會(huì)注意到這樣的延遲。APP傳輸數(shù)據(jù)顯示的的時(shí)間大概在0.1秒左右,在用戶對(duì)時(shí)間要求的范圍內(nèi)。
本發(fā)明利用Android開(kāi)發(fā)技術(shù),將無(wú)線傳感器網(wǎng)路系統(tǒng)中獲取的環(huán)境參數(shù)信息,實(shí)時(shí)的顯示到用戶移動(dòng)設(shè)備上,該應(yīng)用將會(huì)推動(dòng)無(wú)線傳感器對(duì)農(nóng)作物生長(zhǎng)環(huán)境進(jìn)行技術(shù)檢測(cè)的發(fā)展,使用者可以在移動(dòng)的情況下隨時(shí)隨地獲取遠(yuǎn)距離參數(shù)。進(jìn)而根據(jù)參數(shù),實(shí)時(shí)的調(diào)整種田和維護(hù)的策略,提高糧食產(chǎn)量,還可以應(yīng)用到草原牧區(qū)和林田等環(huán)境條件下,APP人機(jī)交互性良好,在準(zhǔn)確率和時(shí)延性方面均能夠滿足客戶的需求。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。