彭 源,徐曉輝,宋 濤,郝淼淼,趙法川
(河北工業(yè)大學(xué)電子信息工程學(xué)院,天津300400)
目前在農(nóng)業(yè)生產(chǎn)中,粗放用水和農(nóng)田干旱嚴(yán)重影響農(nóng)業(yè)生產(chǎn)效率及產(chǎn)量,因此,制定科學(xué)合理的農(nóng)田灌溉計劃尤為重要[1]。制定科學(xué)的農(nóng)田灌溉計劃需要準(zhǔn)確地獲取農(nóng)田的土壤濕度,并設(shè)計一個自動化的農(nóng)田濕度評估系統(tǒng),對農(nóng)田的土壤濕度作出準(zhǔn)確的評估。
現(xiàn)有的農(nóng)田濕度控制系統(tǒng)主要以文獻(xiàn)[2]、文獻(xiàn)[3]設(shè)計的農(nóng)業(yè)灌溉系統(tǒng)為主,系統(tǒng)的實時性強(qiáng),但其土壤濕度信息大多數(shù)是由單個土壤濕度傳感器測得,即數(shù)據(jù)只能代表農(nóng)田某一部分的土壤濕度,比較單一,缺乏代表性,不能準(zhǔn)確反映農(nóng)田整體的濕度情況。同時由于系統(tǒng)決策完全依賴于一個土壤濕度傳感器,會使系統(tǒng)整體缺乏抗干擾性,一旦濕度土壤傳感器出現(xiàn)故障,會導(dǎo)致控制系統(tǒng)作出錯誤的決策,影響灌溉效果。
為解決上述問題,文獻(xiàn)[4]以北京大興試驗區(qū)3.645 km2為例,布設(shè)了129個采樣點,對農(nóng)田濕度進(jìn)行評估。基于此,本文采用多傳感器數(shù)據(jù)融合的方法,在所測農(nóng)田的不同位置,分別放置3個土壤傳感器節(jié)點,然后使用Lora通信方式將節(jié)點采集到的濕度信息傳輸?shù)酵粋€控制中心,對數(shù)據(jù)進(jìn)行處理和評估[5]。土壤濕度傳感器在測量土壤濕度時,受到外界因素的影響,會產(chǎn)生噪聲,引起測量誤差。為了消除誤差和更準(zhǔn)確地得到農(nóng)田土壤濕度值,引入K-means 方法消除有誤差的濕度數(shù)據(jù)[6],同時為了提高K-means 的運算效率,對K-means做了進(jìn)一步改進(jìn)。基于此,本文設(shè)計了基于改進(jìn)K-means 的農(nóng)田濕度評估系統(tǒng)
基于物聯(lián)網(wǎng)的架構(gòu)模式,設(shè)計了土壤傳感器節(jié)點、控制中心和移動設(shè)備APP,其系統(tǒng)架構(gòu)見圖1[7]。當(dāng)系統(tǒng)正常工作時,首先,移動設(shè)備或控制中心將采集指令發(fā)送到土壤傳感器節(jié)點。其次,土壤傳感器節(jié)點將采集到的濕度數(shù)據(jù)通過Lora 協(xié)議傳輸?shù)娇刂浦行摹H缓螅刂浦行南扰袛嗤寥纻鞲衅魇欠裼泄收希⑹褂酶倪M(jìn)的K-means 算法對濕度數(shù)據(jù)進(jìn)行聚類、加權(quán)等操作,評估出農(nóng)田的土壤濕度。最后,控制中心將評估后的農(nóng)田濕度傳遞至移動設(shè)備。用戶可以直接根據(jù)移動端APP 顯示的濕度信息,向土壤傳感器節(jié)點發(fā)出準(zhǔn)確的灌溉指令。
控制中心與土壤傳感器節(jié)點的電路結(jié)構(gòu)分別見圖2和圖3。控制中心由電源模塊、STM32最小系統(tǒng)、Lora通信模塊和NBiot 通信模塊組成。土壤傳感器節(jié)點由電源模塊、STC89C52 最小系統(tǒng)、土壤濕度傳感器和Lora 通信模塊組成[9]。下面分別對控制中心和土壤傳感器節(jié)點的各個模塊作詳細(xì)分析。
(1)電源模塊。電源采用12 V 蓄電池,并接入LM1117芯片將12 V電壓降為5 V和3.3 V對各個模塊供電。
(2)STM32 最小系統(tǒng)。其內(nèi)核型號為cortex-A7,引腳資源多、功耗小,外部晶振頻率為8 MHz,能夠高效運行改進(jìn)的K-means算法。
(3)通信單元。控制中心的通信單元由Lora 通信模塊和NB-iot通信模塊組成,Lora通信模塊的型號為AS32-TTL-1W,通信距離為3 km,能夠自組網(wǎng),無需運營商網(wǎng)絡(luò)的支持,適用于田間通信[8]。NB-iot 通信模塊型號為WH-NB73,支持運營商網(wǎng)絡(luò)通信。在運營商網(wǎng)絡(luò)覆蓋的范圍內(nèi),控制中心就能夠?qū)⒃u估出的農(nóng)田濕度信息通過NB-iot 傳輸?shù)揭苿佣嗽O(shè)備,以便用戶隨時查詢。
(4)STC89C52 最小系統(tǒng)。STC89C52 功耗小、穩(wěn)定性高,其晶振頻率是11.059 2 MHz,適宜在田間長時間工作。
(5)土壤傳感器。型號為PR-3000-ECT-N01,采用頻域反射的原理將土壤濕度轉(zhuǎn)換為485 信號輸出到STC89C52,測量誤差小于2%。
移動端APP 由Android Studio 軟件開發(fā)設(shè)計,其界面(Graphical User Interface,GUI)見圖4。
APP 實現(xiàn)了TCP socket 網(wǎng)絡(luò)通信功能,與控制中心的NBiot進(jìn)行數(shù)據(jù)傳輸。點擊圖4中的“獲取”按鈕時,APP發(fā)送采集指令,控制中心就會依次獲取3個土壤傳感器節(jié)點采集到的農(nóng)田土壤濕度信息,然后,控制中心節(jié)點將評估后的農(nóng)田土壤濕度信息上傳到APP顯示。如果有故障節(jié)點,GUI中相應(yīng)節(jié)點就會顯示紅色,表示該節(jié)點的土壤濕度傳感器發(fā)生故障,然后報警。
K-means 是一種無監(jiān)督學(xué)習(xí)聚類算法,它將所有數(shù)據(jù)以k個點為中心進(jìn)行聚類,對最靠近它們的數(shù)據(jù)歸為一類,再通過迭代的方法,依次更新各聚類中心的值,使集群更相似,直至得到最好的聚類效果[9]。
數(shù)據(jù)集D={x1,x2,x3,…,xn},聚類數(shù)目k為該算法的輸入,經(jīng)過聚類操作,輸出集合的劃分C={C1,C2,C3,…,Ck}及更新后的k個聚類中心。
算法流程如下[10]:
(1)從數(shù)據(jù)集D中,隨機(jī)選擇k個數(shù)據(jù)作為初始的聚類中心,記為:{a1,a2,a3,…,ak}。
(2)用式(1)計算每個樣本xi(i= 1,2,3,…,n)和各個質(zhì)心aj(j= 1,2,3,…,k)的歐式距離,然后將xi歸類到距離最小的dij所對應(yīng)的類別。
(3)對Cj(j= 1,2,3,…,k)中所有的樣本點重新計算均值得到新的聚類中心μj。
(4)用公式(2)計算平方誤差標(biāo)準(zhǔn)函數(shù),檢測是否收斂,收斂則完成劃分,否則重復(fù)步驟(2)、(3)。
通過上述步驟,在農(nóng)田濕度評估時,控制中心就能夠剔除個別土壤濕度傳感器本身產(chǎn)生的隨機(jī)誤差及其他因素引起的測量誤差值。
K-means的時間復(fù)雜度為:
式中:k代表聚類數(shù)目;n代表聚類的樣本數(shù);l代表迭代次數(shù)。
該算法隨機(jī)選擇初始聚類中心會導(dǎo)致迭代次數(shù)l不確定,造成收斂速度慢、聚類效果差、運算復(fù)雜度高等問題[11]。這里在算法實現(xiàn)前采用確定初始聚類中心的方法來解決上述問題。
在實際的運用場景中,由于STM32 的運算速度較慢,要快速得到評估值,就需要減少K-means 的時間復(fù)雜度。因為土壤濕度數(shù)據(jù)是一維數(shù)據(jù),改進(jìn)后的K-means 算法流程圖見圖5,首先,遍歷整個數(shù)據(jù)集群D,得到集群中數(shù)據(jù)的最小和最大值,然后,多次采用二分法,獲取濕度數(shù)據(jù)的中值,直到獲得想要個數(shù)的聚類中心。獲取的各個聚類中心分布均勻,K-means迭代次數(shù)l就會減少,時間復(fù)雜度也隨之降低。
系統(tǒng)主流程框圖見圖6,將整個系統(tǒng)流程劃分為數(shù)據(jù)采集、故障診斷、濕度信息評估3個階段。
一個控制中心對應(yīng)3個土壤傳感器節(jié)點,土壤濕度傳感器采集到的濕度數(shù)據(jù)通過RS485 總線傳輸?shù)絊TC89C52[13],再經(jīng)由Lora 通信模塊傳輸?shù)娇刂浦行摹?刂浦行某绦蛄鞒桃妶D7。當(dāng)收到移動端APP評估命令后,改變程序中mode_flag標(biāo)志位,控制Lora模塊輪詢采集3個土壤傳感器節(jié)點的濕度數(shù)據(jù)并存入3個數(shù)組中。
在人總行和昆明中支黨委的正確領(lǐng)導(dǎo)下,全省人民銀行消保部門認(rèn)真貫徹落實總行對金融消費權(quán)益保護(hù)工作的統(tǒng)一部署,堅持金融為民理念,以金融消費者保護(hù)為抓手,以金融消費者教育為重點,各項工作取得積極進(jìn)展。人行昆明中支法律事務(wù)處自設(shè)立以來,采取多項措施暢通金融消費維權(quán)渠道,促進(jìn)金融消費權(quán)益保護(hù)工作上臺階。
控制中心和土壤傳感器節(jié)點之間的信息傳遞采用一主多從的通信方式。首先,不同土壤傳感器節(jié)點的STC89C52 給Lora 模塊設(shè)置不同的地址、信道,并對其進(jìn)行編號,方便控制中心區(qū)分不同的土壤傳感器節(jié)點;然后,設(shè)置Lora 模塊使其進(jìn)入喚醒模式。控制中心采集濕度數(shù)據(jù)時,將其Lora 模塊設(shè)置為接收模式,在接收模式下,依次設(shè)置該Lora 模塊的地址、信道與土壤傳感器節(jié)點的Lora 模塊地址、信道一致,喚醒土壤傳感器節(jié)點使其采集土壤濕度并將土壤濕度傳輸?shù)娇刂浦行腫12]。
故障診斷采用多傳感器數(shù)據(jù)融合的方法,即控制中心將采集到的濕度數(shù)據(jù)存入3個的數(shù)組,計算每個數(shù)組的均值、方差,以及兩兩均值的差值。經(jīng)過實驗驗證,在沒有極端因素影響的情況下,被測農(nóng)田不同區(qū)域的濕度差值不大,當(dāng)某組數(shù)據(jù)均值與其他2組數(shù)據(jù)均值的差值大于10%時,就可以判定相應(yīng)土壤傳感器出現(xiàn)故障。判定土壤傳感器出現(xiàn)故障后,控制中心立即使用NB-iot 向移動設(shè)備上報故障土壤傳感器編號,然后移動設(shè)備發(fā)出報警信號。移動端GUI 顯示如圖4 所示,“節(jié)點2”顯示紅色,即土壤傳感器節(jié)點2出現(xiàn)了故障。控制中心將刪除土壤傳感器節(jié)點2的數(shù)據(jù),拒絕此數(shù)據(jù)集進(jìn)入濕度信息評估階段。
控制中心使用改進(jìn)的K-means算法對采集到的3組數(shù)據(jù)進(jìn)行處理。在處理過程中,設(shè)定初始的聚類中心數(shù)k=5,運算后,舍棄5個聚類中心值的最小值和最大值,最后用式(4)計算出農(nóng)田的濕度。
式中:S代表評估后的濕度;x、y、z代表未舍棄聚類中心的最小值、中值和最大值;k1、k2、k3代表加權(quán)系數(shù),k1+k2+k3= 1。
通過多組試驗證明,當(dāng)設(shè)置k1= 0.3、k2= 0.4、k3= 0.3時得出的濕度值與農(nóng)田的平均濕度最接近,得出的評估結(jié)果最優(yōu)。
在不同時間段(晴朗、雨后等)對同一塊農(nóng)田進(jìn)行了多次田間實驗,驗證此濕度評估系統(tǒng)的準(zhǔn)確性和穩(wěn)定性。實驗過程中,將3個土壤傳感器節(jié)點分別放置在農(nóng)田的中央、東北角和西南角,同時通過人工的方式,采集此塊農(nóng)田位置分布均勻的10 份土壤,在實驗室通過烘干法計算出10 份土壤的濕度值,然后計算10 份土壤的濕度均值,將此均值與評估系統(tǒng)的輸出結(jié)果進(jìn)行比較。
由表1田間實驗結(jié)果得出。在田間實驗中,此濕度評估系統(tǒng)的評估值和采集的10 份土壤濕度的均值相對誤差小于2%,且5次實驗的均方誤差為1.004 1%。此誤差在農(nóng)業(yè)生產(chǎn)的要求范圍以內(nèi),滿足精準(zhǔn)農(nóng)業(yè)要求,證明了此系統(tǒng)評估效果良好。

表1 田間實驗結(jié)果Tab.1 Field experiment results
在驗證此系統(tǒng)的故障診斷功能時,引入誤差模擬土壤濕度傳感器發(fā)生故障。在某一個土壤傳感器節(jié)點的測量處加入少量水,使土壤濕度傳感器的測量值與其他兩個土壤濕度傳感器的測量值差值較大,然后評估此濕度評估系統(tǒng)的可靠性。單土壤濕度傳感器故障引入實驗結(jié)果見表2。
從表2 可以看出:以節(jié)點1 作為基準(zhǔn)中心點,節(jié)點1 與節(jié)點3 的差值為4.074 9%,但是節(jié)點2 與節(jié)點1 的差值和節(jié)點3的差值都大于10%,故判斷節(jié)點2 出現(xiàn)故障。控制中心刪除土壤傳感器節(jié)點2 采集的濕度數(shù)據(jù)后,系統(tǒng)的濕度評估為19.461 1%,符合要求。

表2 單土壤濕度傳感器故障實驗結(jié)果Tab.2 Experimental results of single soil moisture sensor failure
(1)改進(jìn)后的K-means 能在STM32 處理器上高效運行,拋棄土壤傳感器采集的噪聲數(shù)據(jù),在實現(xiàn)濕度評估的同時,能有效診斷土壤傳感器是否故障。
(2)系統(tǒng)的通信傳輸使用了Lora 和NB-iot 技術(shù),使用Lora 技術(shù)解決了農(nóng)田無運營商網(wǎng)絡(luò)覆蓋的問題;使用NB-iot技術(shù)將土壤濕度傳輸?shù)揭苿釉O(shè)備,方便用戶查看土壤濕度信息。
(3)田間實驗結(jié)果表明,評估系統(tǒng)的評估值和農(nóng)田土壤平均濕度的相對誤差在5%以內(nèi),滿足設(shè)計要求。
(4)本評估系統(tǒng)的誤差能夠滿足農(nóng)業(yè)要求,但還存在對于不同農(nóng)田的適應(yīng)性,評估精度還有待提高。
(5)為進(jìn)一步提高濕度評估系統(tǒng)的準(zhǔn)確性,還可以在農(nóng)田中加入更多的土壤傳感器節(jié)點。