何建強,韓美林,陳 垚
(商洛學(xué)院 電子信息與電氣工程學(xué)院,陜西 商洛 726000)
秦嶺不僅是中國南北氣候的分界線,也是重要的生態(tài)安全屏障。它具有調(diào)節(jié)氣候、涵養(yǎng)水源、涵養(yǎng)水土、維護生物多樣性等多種功能,是中國地理和中國文明的精神和自然象征。黨中央、國務(wù)院、省委、省政府高度重視秦嶺生態(tài)環(huán)境保護。習(xí)近平總書記強調(diào):“誰也不能破壞秦嶺的自然生態(tài)美”。保護好秦嶺生態(tài)環(huán)境不僅是落實新發(fā)展觀、建設(shè)生態(tài)文明、維護國家生態(tài)安全的必然要求,也是推進秦嶺“五新”戰(zhàn)略、促進人與自然和諧發(fā)展的重大舉措,具有重要的社會、經(jīng)濟、生態(tài)、文化價值,功在當(dāng)代,利在千秋[1]。
丹江發(fā)源于陜西省商洛地區(qū)西北部的秦嶺南麓,流經(jīng)陜西、河南和湖北三省,流入湖北省丹江口市丹江口水庫,在此與漢江交匯[2]。丹江總長390千米,流域面積1.73萬平方千米,占漢江流域總面積的10%,是漢江最長的支流[3]。丹江不僅是“南水北調(diào)”中線工程的重要水源地,也是商洛地區(qū)經(jīng)濟文化發(fā)展的核心區(qū)域,近年來,商洛市全面實施循環(huán)發(fā)展戰(zhàn)略,大力推進秦嶺地區(qū)生態(tài)環(huán)境保護,保護水源地,建設(shè)生態(tài)商洛,確保“一江清水供京津”。但雖隨著移民搬遷工程的推進,及經(jīng)濟社會的發(fā)展,越來越多的生活污水排放至丹江,直接影響丹江流域水質(zhì)。目前丹江流域的水質(zhì)監(jiān)測每年耗費巨大的人力、財力,并且不具備實時、智能的特點。因此,針對目前丹江流域水質(zhì)監(jiān)測方面存在的問題,本文設(shè)計了一種基于ABC-BP模型的丹江水源地水質(zhì)監(jiān)測系統(tǒng),該系統(tǒng)可通過ZigBee無線傳感器網(wǎng)絡(luò)和4G網(wǎng)絡(luò)完成水質(zhì)參數(shù)的采集和傳輸,通過ABC-BP預(yù)測模型,實現(xiàn)水質(zhì)參數(shù)pH值、DO(溶解氧)值、導(dǎo)電率、水溫等的實時顯示和預(yù)測功能[4]。該系統(tǒng)的研究與設(shè)計對丹江流域水污染的治理和防控能力有一定的提高,對秦嶺地區(qū)生態(tài)環(huán)境保護以及政府的水環(huán)境監(jiān)測與治理提供有效的基礎(chǔ)信息和有力的技術(shù)支撐,促進了商洛市智慧城市建設(shè)。
該系統(tǒng)主要由ZigBee終端監(jiān)測模塊、4G網(wǎng)絡(luò)模塊和監(jiān)測中心上位機軟件部分組成,系統(tǒng)總體結(jié)構(gòu)如圖1所示。

圖1 丹江流域水質(zhì)監(jiān)測系統(tǒng)總體結(jié)構(gòu)圖
ZigBee終端監(jiān)測模塊主要實現(xiàn)pH值、DO值、導(dǎo)電率和水溫等水質(zhì)參數(shù)的采集,該模塊主要由PH傳感器、DO傳感器、導(dǎo)電率傳感器、溫度傳感器、CC2530處理器、電源模塊及相應(yīng)的信號調(diào)理電路構(gòu)成。采集節(jié)點通過ZigBee無線傳感器網(wǎng)絡(luò)將采集到的水質(zhì)參數(shù)傳至處理器上,再通過高速率的4G移動網(wǎng)絡(luò)傳輸?shù)竭h程監(jiān)測中心。為了簡化終端模塊電路,降低節(jié)點消耗的能量,采用光伏板和備用電池相結(jié)合的方式對系統(tǒng)供電[5]。遠程監(jiān)測中心主要對數(shù)據(jù)進行分析、存儲、處理并建立水質(zhì)預(yù)測模型,實現(xiàn)對水質(zhì)參數(shù)的預(yù)測。
終端節(jié)點主要由傳感器、信號調(diào)整電路、處理器模塊、無線通信模塊和電源模塊組成[6]。數(shù)據(jù)采集節(jié)點如圖2所示。傳感器主要實現(xiàn)pH值、DO、導(dǎo)電率、水溫等水質(zhì)參數(shù)的采集,信號經(jīng)op07及LM21等構(gòu)成的信號調(diào)整電路處理后,與AD芯片(ADS8364)相連,實現(xiàn)模數(shù)轉(zhuǎn)換。 ADS8364的6個地址引腳D0~D5與CC2530的P1.0~P1.5相連,ADS8364的REST與CC2530的REST相連,由外部REST信號完成操作,保證CC2530和ADS8364時鐘的同步。利用ZigBee低功耗的優(yōu)勢,本設(shè)計采用光伏板和備用電池相結(jié)合的供電方式,通常兩節(jié)5號電池可為ZigBee模塊提供長達6個月的能量,避免斷電事故的發(fā)生。為了給CC2530提供5 V和+3.3 V電壓,通過CW7805C輸出+5 V電壓,通過ASM1117-3.3輸出+3.3 V電壓。

圖2 數(shù)據(jù)采集節(jié)點框圖
2.1.1 ZigBee模塊電路設(shè)計
CC2530芯片具有低功耗和低成本的特點,且其各方面性能優(yōu)于CC2430芯片[6],為構(gòu)建功能強大的無線傳感網(wǎng)絡(luò),本設(shè)計ZigBee模塊的核心芯片采用CC2530芯片。該芯片的基本電路如圖3所示,其中L1電感和C1-C8電容構(gòu)成去耦電路,保證CC2530芯片具有穩(wěn)定的工作電源。

圖3 CC2530的基本電路
2.1.2 無線通信模塊設(shè)計
無線通信模塊主要是實現(xiàn)ZigBee模塊相互之間的控制信息交換、數(shù)據(jù)收發(fā)等無線通信,常見的無線通信天線有柱形天線和環(huán)形天線,根據(jù)不同種類的特點,本設(shè)計選擇以 PCB 板銅箔制成的環(huán)形天線,硬件電路如圖4所示,其中黑粗線為環(huán)形天線,兩端分別與CC2530芯片的RF_P和RF_N引腳相連接。

圖4 無線通信模塊硬件電路圖
網(wǎng)關(guān)節(jié)點是整個ZigBee無線網(wǎng)絡(luò)的核心。接收終端數(shù)據(jù)采集節(jié)點發(fā)送的pH值、DO值、導(dǎo)電率、水溫等數(shù)據(jù),經(jīng)處理器處理后,通過4G無線網(wǎng)絡(luò)傳輸至監(jiān)測中心[6]。由于整個監(jiān)測網(wǎng)絡(luò)中數(shù)據(jù)處理量大,網(wǎng)關(guān)節(jié)點數(shù)量比較少,還要執(zhí)行來自遠程監(jiān)控中心的命令信息。因此,采用基于ARM11內(nèi)核的S3C6410芯片作為本設(shè)計的網(wǎng)關(guān)節(jié)點處理器[7],圖5為網(wǎng)關(guān)節(jié)點系統(tǒng)框圖。

圖5 網(wǎng)關(guān)節(jié)點系統(tǒng)框圖
由于S3C6410處理器內(nèi)存較小,在程序運行過程中容易出現(xiàn)內(nèi)存不足現(xiàn)象,因此,本系統(tǒng)的程序代碼采用AM29LV160D型號芯片存儲,采用HY57V641620 HG型號芯片作為擴展存儲器[6]。為了降低程序讀寫過程中的延遲時間,將程序存入擴展存儲器中執(zhí)行。擴展電路如圖6所示。圖中nSCS0是片選網(wǎng)絡(luò)標號,nOE是讀允許網(wǎng)絡(luò)標號,nSWE是寫允許網(wǎng)絡(luò)標號,DATA0~DATA15是輸入與輸出的數(shù)據(jù)網(wǎng)絡(luò)標號[6]。它們分別與S3C6410的XM1CSN0[PINL23]、XM0OEN[PINL4]、XM1WEN[PINM19]、XM0DATA0~XM0DATA15相連接[6]。

圖6 存儲器擴展電路圖
HY57V641620HG中的BA1和BA0分別與S3C6410的XM1ADDR0[PINH24]和XM1ADDR1[PINJ24]引腳相連接。行地址選通信號線nSRAS、列地址選通信號線nSCS0、寫允許信號nSWE和讀允許信號線nOE分別與S3C6410的XM1RASN[PINL44]、XM1CASN[PINL24]、XM1WEN[PINM19]和XM0OEN[PINL42]引腳相連接[6]。
數(shù)據(jù)采集節(jié)點上電開始工作后,硬件設(shè)備初始化并加入網(wǎng)絡(luò)。入網(wǎng)成功后,采集pH值、DO、導(dǎo)電率、水溫等數(shù)據(jù)并將數(shù)據(jù)傳輸至下個節(jié)點。此后程序開始循環(huán)調(diào)用sendDATA()函數(shù),并進入發(fā)送信息狀態(tài)。傳輸完一次數(shù)據(jù)后,判斷是否繼續(xù)有采集任務(wù),無采集命令時,處于休眠工作模式[8],直至下次采集任務(wù)到來時進入工作狀態(tài)。程序流程如圖7所示。

圖7 ZigBee終端信息采集節(jié)點程序流程圖
網(wǎng)關(guān)節(jié)點上電后,硬件設(shè)備和協(xié)議棧分別初始化并建立WSN網(wǎng)絡(luò),在接收到終端節(jié)點發(fā)送的加入網(wǎng)絡(luò)信標后,判斷是否允許該節(jié)點加入網(wǎng)絡(luò)[9-11]。如果允許加入網(wǎng)絡(luò),則為其分配網(wǎng)絡(luò)地址,接收傳輸?shù)膒H值、含氧量、導(dǎo)電率、水溫等水質(zhì)參數(shù)數(shù)據(jù),向4G模塊發(fā)送數(shù)據(jù)。若沒有收到入網(wǎng)信標,則調(diào)用aplFormNetwork()來建立網(wǎng)絡(luò),并判定地址空間是否已滿,如果有空閑地址則自動為子節(jié)點分配16位地址,并允許其加入網(wǎng)絡(luò)。網(wǎng)關(guān)節(jié)點程序流程如圖8所示[12-14]。

圖8 網(wǎng)關(guān)節(jié)點程序流程圖
監(jiān)測中心上位機軟件系統(tǒng)是在C/S模式架構(gòu)下,采用JAVA語言進行編寫,選用關(guān)系型數(shù)據(jù)庫MySQL 5.7作為數(shù)據(jù)庫管理系統(tǒng)。系統(tǒng)整體架構(gòu)分為3層,每一層之間是相互獨立且具有一定的聯(lián)系,從最底層到最高層分別是基礎(chǔ)數(shù)據(jù)層、功能服務(wù)層和用戶層。水質(zhì)監(jiān)測軟件系統(tǒng)架構(gòu)如圖9所示,可實現(xiàn)水質(zhì)參數(shù)的實時顯示、歷史數(shù)據(jù)查詢、數(shù)據(jù)導(dǎo)出,數(shù)據(jù)分析和參數(shù)預(yù)警等功能[15]。

圖9 水質(zhì)監(jiān)測系統(tǒng)架構(gòu)圖
基礎(chǔ)數(shù)據(jù)層包括三部分。第一部分是實時數(shù)據(jù)的采集與整理;第二部分是數(shù)據(jù)存儲,將整理完畢的實時數(shù)據(jù),存儲于MySQL 5.7數(shù)據(jù)庫中,可以永久性的使用,并定期維護;第三部分建立數(shù)據(jù)訪問接口,該接口通常稱為DAO(Date Access Object)層,即數(shù)據(jù)訪問對象。該層是必不可少的,為上一層提供操作數(shù)據(jù)的通道。
功能服務(wù)層主要有基礎(chǔ)數(shù)據(jù)更新模塊、實時數(shù)據(jù)展現(xiàn)模塊、數(shù)據(jù)清洗模塊、數(shù)據(jù)預(yù)測模塊、預(yù)測誤差分析模塊、用戶管理模塊、系統(tǒng)設(shè)置模塊、輔助模塊等。
用戶層是與用戶直接相關(guān)的部分。用戶層是用戶與系統(tǒng)進行交互的接口。用戶可以輸入相關(guān)數(shù)據(jù)或者點擊相關(guān)操作,實現(xiàn)需要的功能。
由于水源地水質(zhì)參數(shù)復(fù)雜多樣,神經(jīng)網(wǎng)絡(luò)具有模糊信息處理的優(yōu)點,可通過水質(zhì)參數(shù)之間的模糊關(guān)系建立輸出和輸入之間的非線性模型,預(yù)測容氧量值,圖10為利用神經(jīng)網(wǎng)絡(luò)預(yù)測水質(zhì)參數(shù)的建模流程[9]。

圖10 BP神經(jīng)網(wǎng)絡(luò)水質(zhì)參數(shù)預(yù)測模型
根據(jù)實際的水質(zhì)數(shù)據(jù)把溫度、PH值、DO、導(dǎo)電率這4個參數(shù)作為神經(jīng)網(wǎng)絡(luò)的輸入,將DO值作為輸出。通過建模、訓(xùn)練,實現(xiàn)對DO值的預(yù)測,并進行誤差分析。
為了提高預(yù)測數(shù)據(jù)的準確性,利用式(1)對數(shù)據(jù)進行歸一化處理,將數(shù)據(jù)轉(zhuǎn)換到[-1,1]范圍:
(1)
式(1)中,x表示采集的水質(zhì)數(shù)據(jù),y表示經(jīng)過歸一化變換的之后的數(shù)據(jù),可減小結(jié)果與實際值之間的偏差。
4.1.1 BP神經(jīng)網(wǎng)絡(luò)建模
1)網(wǎng)絡(luò)結(jié)構(gòu)的確定。在BP網(wǎng)絡(luò)模型中,確定了神經(jīng)網(wǎng)絡(luò)的輸入和輸出之后,為使仿真誤差和網(wǎng)絡(luò)性能都達到最佳,隱含層神經(jīng)元個數(shù)通過經(jīng)驗公式(2)來確定[10],常用的公式為:
(2)
式中,n、i、o分別表示隱層神經(jīng)元個數(shù)、輸入神經(jīng)元個數(shù)和輸出神經(jīng)元個數(shù),m的值一般在1~10中隨機選取。
2)參數(shù)設(shè)置。根據(jù)選取的輸入?yún)?shù)和輸出參數(shù)值,隱含層神經(jīng)元個數(shù)由公式(2)計算出為8。結(jié)果通過Sigmoid函數(shù)公式(3)映射到(0,1)之間輸入下一層。
(3)
得到如圖11所示的3層結(jié)構(gòu)。

圖11 神經(jīng)網(wǎng)絡(luò)3層結(jié)構(gòu)
4.1.2 仿真分析
以DO值數(shù)據(jù)為樣本,利用丹江流域商洛市商州區(qū)段2019年11月水質(zhì)實測DO值數(shù)據(jù)100組,前80組作為訓(xùn)練樣本,其余為檢驗樣本。
設(shè)定BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)最大迭代次數(shù)為1 500次,精度為0.001。通過Matlab程序隨機產(chǎn)生初始的權(quán)值和閾值,logsig作為隱含層傳輸函數(shù),purelin作為輸出層傳輸函數(shù),采用trainglm作為訓(xùn)練函數(shù),BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型學(xué)習(xí)數(shù)據(jù)預(yù)處理[11-12]:
[p11,minp1,maxp1,t11,mint1,maxt1]=premnmx(p1,t1);
完成訓(xùn)練后結(jié)果如下:
輸入層到隱層權(quán)值和閾值:
隱層到輸入層權(quán)值和閾值:
B2=[1.4794]
BP神經(jīng)網(wǎng)絡(luò)仿真預(yù)測輸出與實際值的比較如圖12所示,由圖中可看出預(yù)測值和實際值走勢基本一致,可用來對輸出進行預(yù)測。但還存在一定的誤差,計算得最大誤差為0.05,最小誤差為0,總誤差值為0.49,平均誤差為0.025。

圖12 BP神經(jīng)網(wǎng)絡(luò)預(yù)測值與實際值比較
4.2.1 ABC-BP預(yù)測模型建立
ABC-BP預(yù)測模型主要是采用ABC算法對BP神經(jīng)網(wǎng)絡(luò)中各層的權(quán)值和閾值進行優(yōu)化,將通過ABC算法求得最優(yōu)解轉(zhuǎn)換為BP神經(jīng)網(wǎng)絡(luò)各層的權(quán)值和閾值,提升BP神經(jīng)網(wǎng)絡(luò)預(yù)測的精確度,使其預(yù)測輸出速度更快、更準確[13]。ABC-BP的基本流程如圖13所示。

圖13 ABC-BP 算法流程
具體步驟如下:
1)創(chuàng)建一個 BP 神經(jīng)網(wǎng)絡(luò);
2)對種群及算法中最大循環(huán)搜索次數(shù)MCN、limit和初始種群Ns進行初始化,Ns中所有解都為一個D維向量,該向量Xi(i=1,…,Ns)表示連接權(quán)值和閥值,維數(shù)D滿足公式(4):
D=i×n+n+n×o+o
(4)
式中,n、i和o分別表示隱層神經(jīng)元、輸入神經(jīng)元和輸出神經(jīng)元的數(shù)量。
3)雇傭蜂按照公式(5)搜索新解,按照公式(6)求解各個解的適應(yīng)度值,采用貪婪法選擇新解;
Vij=Xij+rand(-1,1)(Xij-Xkj)
(5)
(6)
式中,i和fi分別表示第i個食物源和當(dāng)前目標函數(shù)值,k∈{1,2,…,Ns}和j∈{1,2,…,D}是隨機值,且k≠i。
4)跟隨蜂依據(jù)公式(7)計算收益率,按照收益率搜索新解并選擇新解,式中f(x)為適應(yīng)度值。
(7)
5)對解的更新失敗次數(shù)和limit值進行比較,若limit的值小于更新失敗次數(shù),通過公式(3)產(chǎn)生新解進行替換,并保存最優(yōu)解;
6)判斷循環(huán)次數(shù)(MCN)是否達到最大,若達到最大值則結(jié)束,否則返回步驟3);
7)將所得最優(yōu)解轉(zhuǎn)換為BP神經(jīng)網(wǎng)絡(luò)各層的權(quán)值和閾值,然后對BP神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練。
4.2.2 仿真分析
同樣利用丹江流域商洛市商州區(qū)段2019年11月水質(zhì)實測DO值數(shù)據(jù)100組為樣本,前80組作為訓(xùn)練樣本,其余數(shù)據(jù)作為檢驗樣本。
ABC-BP算法參數(shù)設(shè)置:為兼顧最優(yōu)解和算法搜索時間本文選取蜂群的數(shù)量為200,Ns=Ne=No=100。解的維數(shù)D通過公式(4)計算可得D=49,limit設(shè)定為100,最大循環(huán)次數(shù)MCN為110[14]。
得到輸入層到隱層權(quán)值閾值:
W1=

隱層到輸入層權(quán)值閾值:
B2=[3.9467e-06]
圖14是ABC-BP算法和BP算法的仿真結(jié)果,從圖中可以明顯地看出ABC-BP算法得到的仿真結(jié)果更加精確,誤差更小。計算可得,最大誤差值為0.05,誤差最小值為0,平均誤差0.013,總誤差量值為0.279。與BP神經(jīng)網(wǎng)絡(luò)算法相比誤差減少了45.8%。圖15是ABC-BP算法和BP神經(jīng)網(wǎng)絡(luò)算法輸出的誤差百分比,從圖中可以看出優(yōu)化后的算法大大降低了預(yù)測誤差。

圖14 ABC-BP算法和BP算法的仿真結(jié)果對比

圖15 ABC-BP算法和BP算法輸出的誤差百分比比較
為驗證基于ABC-BP模型的丹江水源地水質(zhì)監(jiān)測系統(tǒng)的可靠性,本文對丹江流域流經(jīng)商洛市商州區(qū)的某段進行了數(shù)據(jù)采集、傳輸、顯示和預(yù)測等方面的測試,監(jiān)測時間為15天,數(shù)據(jù)采集和傳輸頻率為1次/小時。
測試中,CC2530的波特率設(shè)置為57 600 bps,系統(tǒng)測試數(shù)據(jù)監(jiān)測軟件界面如圖16所示,上位機軟件系統(tǒng)可以獲取數(shù)據(jù)并顯示,可進行數(shù)據(jù)可視化顯示,表明上位機軟件系統(tǒng)滿足設(shè)計要求。通過對測試時間段測試數(shù)據(jù)和ABC-BP算法的預(yù)測數(shù)據(jù)與有線設(shè)備人工測試的數(shù)據(jù)進行對比,數(shù)據(jù)采集、傳輸和預(yù)測誤差均在合理范圍內(nèi),由于水質(zhì)參數(shù)變化相對較慢,因此對數(shù)據(jù)采集的速率的要求不高,能夠滿足在線監(jiān)測的要求。因此,基于ABC-BP模型的丹江水源地水質(zhì)監(jiān)測系統(tǒng)軟硬件設(shè)計可行,能夠正常工作。

圖16 系統(tǒng)測試數(shù)據(jù)監(jiān)測界面
本文基于無線傳感器網(wǎng)絡(luò)實現(xiàn)了丹江流域水源地水質(zhì)的在線監(jiān)測。利用ZigBee無線傳感網(wǎng)絡(luò)對各個水源地水質(zhì)數(shù)據(jù)進行采集,通過4G移動網(wǎng)絡(luò)進行數(shù)據(jù)傳輸,監(jiān)測中心系統(tǒng)軟件實現(xiàn)對數(shù)據(jù)的顯示、分析、處理和預(yù)測。在完成各部分的軟硬件設(shè)計后,以丹江流域源頭商洛市商州區(qū)段作為測試點,進行了測試,該系統(tǒng)能夠準確地完成數(shù)據(jù)的傳輸、處理、分析、顯示和預(yù)測,并且系統(tǒng)運行穩(wěn)定可靠。因此,該監(jiān)測系統(tǒng)的設(shè)計與實現(xiàn),對促進智慧商洛、生態(tài)商洛的發(fā)展,保護丹江水源地,確保“一江清水送京津”具有十分重要的價值。