楊斷利 李 今 陳 輝 耿浩川 王德賀 張 然
(1.河北農業大學信息科學與技術學院, 保定 071001; 2.河北農業大學動物科技學院, 保定 071000;3.辛集市動物疫病預防控制中心, 辛集 052360)
封閉蛋雞舍環境中存在多種有害氣體,主要包括氨氣、硫化氫、二氧化碳等[1]。有害氣體的存在會對蛋雞的健康和生產性能產生不同程度的危害[2-4]。有害氣體中的硫化氫容易引起雞的肺部水腫,氨氣容易引起雞眼結膜發炎,二氧化碳濃度過高容易引起雞呼吸困難[5-7]。目前,部分蛋雞舍養殖條件較差,沒有安裝對養殖環境進行有效監測和調控的設備[8-9]。部分雞舍安裝有養殖環境監控設備,但往往將傳感器測量的有害氣體濃度數據直接用于系統調控,而并未對數據進行分析和處理[10]。氣體傳感器存在的交叉敏感性問題往往導致測量結果誤差較大。
近年來,國內外對BP神經網絡算法的研究已經相對成熟,BP神經網絡以其非線性映射及并行處理的能力,常被用于解決因交叉敏感性而導致氣體傳感器測量精度不夠的問題。但是,BP神經網絡算法在訓練過程中存在易陷入局部極小值的情況,致使測量精度的提高程度往往并不理想。為了進一步提高測量精度,利用改進粒子群算法(Improved particle swarm optimization,IPSO)優化BP神經網絡模型,可明顯改善BP神經網絡易陷入局部極小值的現象。
國內對雞舍有害氣體監測系統的研究主要集中在數據采集和傳輸技術方面[11-13],利用智能算法對雞舍有害氣體數據進行處理的相關研究較少,本文設計開發蛋雞舍有害氣體監測系統,融合ZigBee無線傳輸[14-16]、傳感器、STM32技術及智能算法,對目前雞舍監控系統常用的MQ137、MQ136、MQ135、TGS2602和SGP30 5種型號傳感器采集得到的數據進行優化處理,以期為改善現有雞舍監控系統性能提供新方法。
雞舍有害氣體監測系統由3部分構成:有害氣體數據采集端、服務器端和手機APP端。數據采集端利用ZigBee節點自組網形成無線傳感器網絡,將傳感器采集得到的數據無線傳輸至協調器,協調器利用串口將數據傳送至STM32模塊,并保存至SD卡中。讀取SD卡數據,利用IPSO優化BP神經網絡模型,利用數據進行訓練,從而得到優化模型。STM32利用GPRS模塊進行遠程連接,連接到服務器后,將數據傳輸至數據庫進行保存。同時開發手機APP軟件同步服務器數據,實現傳感器數據實時顯示,并可進行閾值設置,實現自動報警等功能。雞舍有害氣體監測系統總體結構如圖1所示。
為了充分測量雞舍內部多點有害氣體濃度,系統采用8個ZigBee終端節點采集數據,1個ZigBee協調器節點接收數據。采用點對點通信方式,終端節點只能和協調器進行通信,其他任意兩節點間都不能進行通信,確保了數據傳輸的安全性和可靠性[17]。每個終端節點連接5種型號傳感器,各傳感器的原理均為傳感器的阻值變化引起電壓變化從而反映濃度變化,各傳感器參數見表1。

表1 傳感器參數Tab.1 Sensor parameters
ZigBee協調器數據接收過程如圖2所示,ZigBee協調器上電,系統初始化并設定數據接收總時間,搜索信道并創建網絡,若有節點成功加入,則協調器為該節點分配網絡地址并綁定,然后進行數據的接收和存儲,同時根據數據接收總時間判斷繼續或結束。ZigBee終端節點利用5種型號傳感器對有害氣體的濃度進行采集。ZigBee終端節點數據采集過程如圖3所示,終端節點上電,系統初始化并設定數據采集間隔及采集總時間,發送加入網絡信息至協調器,若成功入網,則每隔5 min采集并發送一次數據至協調器,直至達到數據采集總時間。
采用STM32F103RCT6單片機進行數據的接收和傳輸,GPRS模塊選擇USR-GM3,ZigBee協調器和USR-GM3模塊與單片機通信方式均采用串口通信。STM32有多個串口,本次蛋雞舍有害氣體監測系統利用串口1和串口2進行開發,電路原理如圖4所示,將協調器的P0_2、P0_3引腳分別連接STM32的PA9(UART1_TX)、PA10(UART1_RX)引腳, USR-GM3模塊的TXD、RXD引腳分別連接STM32的PA3(UART2_RX)、PA2(UART2_TX)引腳,系統電壓為5 V。
STM32單片機主程序流程圖如圖5所示,初始化完成后,發送AT指令登錄服務器;登錄成功后,單片機進行數據讀取;讀取到數據后對數據進行解析,并將數據存儲至SD卡;最后發送至服務器端。發送成功后,清空標志位并返回,讀取下一個要發送的數據,繼續上述過程,直至所有數據發送完成。
2.3.1BP神經網絡
蛋雞舍有害氣體監測系統采用5種傳感器構成的陣列對雞舍中3種有害氣體進行檢測,設a1、a2和a3分別為3種有害氣體濃度,傳感器陣列對這3種有害氣體的測量輸出值di(i=1,2,3,4,5)是一個非線性方程組,表示為
(1)
式中fi(a1,a2,a3)——濃度與傳感器響應值之間的映射關系
將式(1)簡寫成
D=F(A)
其中
A=(a1,a2,a3)
D=(d1,d2,d3,d4,d5)F=(f1(·),f2(·),f3(·),f4(·),f5(·))
式中A——濃度向量
D——傳感器響應值向量
F——濃度向量與傳感器響應值向量之間的映射關系向量
可以簡單描述為
Y=H(D)
(2)
因此,為了求得Y=A,須求H=F-1,所以建立BP神經網絡求出傳感器響應輸入與真實氣體濃度輸出之間的非線性關系。
建立優化蛋雞舍內多氣體傳感器數據監測的BP神經網絡模型,如圖6所示,采用隱含層數為1的3層網絡結構,輸入層為5種型號傳感器測量數據,輸出層為3種氣體真實值,隱含層神經元個數計算式為
(3)
式中NH——隱含層神經元個數
Ni——輸入層神經元個數
N0——輸出層神經元個數
L——常數
本次實驗綜合雞舍內8個節點的數據進行BP神經網絡模型訓練,每個節點140個數據樣本,共1 120個數據樣本,隨機選用1 000個作訓練樣本,剩余120個作測試樣本。每個樣本有5個輸入, 3個輸出。通過反復實驗確定隱含層的傳遞函數為sigmoid,輸出層的傳遞函數為purelin。在定義輸入向量和輸出向量時,對樣本實驗數據進行歸一化處理,計算式為
(4)
式中xmax——同一傳感器響應值的最大值
xmin——同一傳感器響應值的最小值
YMAX——歸一化最大值,取1
YMIN——歸一化最小值,取-1
根據式(3)確定隱含層神經元個數為4~13,分別選取不同數量神經元的神經網絡輸出值與真實值進行對比,其平均相對誤差對比結果如表2所示。結果表明,神經元個數為10時,3種氣體的平均相對誤差的平均數最小。所以最終選取隱含層節點個數為10。

表2 不同隱含層神經元數的神經網絡輸出值與真實值 平均相對誤差Tab.2 Average relative error between the output value and the real value of the neural network with different hidden layers
2.3.2粒子群原理及改進
(1)粒子群原理
KENNEDY等[18]于1995年提出了粒子群優化算法。該算法因其簡單易懂、容易求得網絡全局的最優解,已經被廣泛應用于很多領域[19-23]。本實驗利用它優化BP神經網絡存在的收斂速度慢、局部極小等問題。該算法中粒子依據自身以及其他粒子移動經驗來改變并調節自身移動,適應度函數決定粒子質量[18]。所有粒子調整依據為
vi+1=ωvi+c1r1(pbest[i]-xi)+c2r2(gbest[i]-xi)
(5)
xi+1=xi+vi
(6)
式中c1、c2——學習因子,常數,通常取2
ω——慣性權重
r1、r2——0~1間的隨機數
pbest[i]——粒子個體經歷過的“最好”位置
gbest[i]——群體經歷過的“最好”位置
vi——粒子當前速度
xi——粒子當前位置
(2) 學習因子和慣性權重改進
本實驗設計粒子在初始搜索時有大的個體認知,小的群體認知。在結束時,有小的個體認知和大的群體認知。研究動態調整慣性權重ω策略時,發現權重ω較大時,搜索時易于跳出局部極小,權重ω較小時,算法收斂良好,因此本次實驗最終采取權重線性遞減策略實現前期搜索中的全局作用,后期搜索的局部作用。c1、c2、ω計算式為
(7)
c2=4-c1
(8)
(9)
式中mj——最大迭代次數
mi——當前迭代次數
cs——c1初始值,取4
ce——c1最終值,取1
ωs——權重ω初始值,取0.9
ωe——權重ω最終值,取0.4
由圖7可知,改進后粒子群適應度收斂速度更快,不易陷入局部極小值。
經重復實驗最終確定迭代次數為終止條件并設置為30,種群規模設置為20。然后進行種群初始化,以給定訓練樣本集的神經網絡輸出均方誤差作為神經網絡訓練問題的適應度函數,迭代尋優更新,最終根據判斷條件終止。將IPSO算法作用于BP神經網絡,圖8為IPSO優化BP神經網絡流程圖。
服務器端程序采用Java Mina框架。如圖9所示,在主類MinaServer中分別開啟STM32硬件端監聽端口3001和手機APP端監聽端口3000,并分別綁定SensorHandler處理類和AppHandler處理類。硬件端登錄成功后,服務器端利用SensorHandler處理類進行數據標識DATA1的判斷,若為DATA1則將數據存入數據庫,否則發送心跳回復給硬件端。若一段時間后仍未接收到數據證明硬件端與服務器斷連,則結束。手機APP軟件登錄成功后,在AppHandler類的messageReceived方法中,利用JSONObject解析APP發送的JSON格式的數據,然后通過receivejson.getInt(“TYPE”)獲取TYPE類型,在switch(TYPE)中判斷類型值然后執行對應代碼,并發送數據給手機APP。判斷是否成功發送數據,若發送成功,則繼續監聽并解析收到的數據,否則延時一段時間再次發送,若仍未發送成功則證明服務器與手機APP斷連,則結束。
手機APP設計時采用一個Activity管理多個Fragment的方式,這種方式的優點是界面切換方便[24],在每一個Fragment類中,首先重寫onCreateView方法,應用該方法調用LayoutInflater對象的inflate方法,用來設置顯示界面和定義控件,利用View.findViewById方法將控件的ID傳入,即可獲得布局控件的實例對象,在代碼中可動態管理控件的位置、文本和顏色信息。如圖10所示,主活動MainActivity管理歡迎、登錄、修改密碼、注冊賬號和主界面,主界面中關聯我的界面和設備界面,設備界面下關聯開關界面和傳感器界面。手機APP主要開發界面如圖11所示。
2020年8月8日在河北省保定市某封閉式養雞場雞舍進行測試實驗。雞舍內部尺寸為長27 m,寬7 m,檐高2.3 m,頂高2.7 m,2列雞籠,每列雞籠共3層,飼養2 500只雞。為了充分地掌握雞群各點氣體濃度信息,如圖1所示在每列雞籠上均勻布置4個采集節點,共8個采集節點,8個采集節點分別布置在雞籠下雞糞傳送帶上方約5 cm處。1個協調器采集節點置于一側雞籠的中間位置。由于雞舍中有害氣體主要是糞便發酵產生的[25],并且由于北方夏季高溫高濕的條件相較于其他3個季節更易促使糞便發酵,從而導致有害氣體濃度相較其他3個季節變化更快、濃度更高,所以在本次實驗中,測量季節選定為夏季。為了降溫,夏季白天雞舍一直處于通風狀態,通風時間段為08:00—20:00。為了檢驗系統能否正常工作,系統安裝時間為18:00,在18:00—20:00通風時間段內,系統測量到的氨氣質量濃度保持在1.60 mg/m3左右,硫化氫質量濃度保持在0.15 mg/m3左右,二氧化碳質量濃度保持在1 334 mg/m3左右,系統工作正常。由于在通風時間段,氣體濃度沒有大的變化且較低,所以主要選擇在不通風的時間段進行數據采集。在風機停止工作的20:00至次日08:00共進行了12 h的數據采集,采集工作順利完成。在數據采集期間,傳感器每隔5 min進行一次采集,為了將傳感器測量值與有害氣體真實值進行對比,采用保時安BH-90A型精密手持測量儀對各節點的數據進行采集,將手持儀采集到的數據作為真實值。考慮到人員頻繁進入雞舍會使雞產生應激反應,并且氣體濃度在30 min內的變化相對穩定,因此間隔30 min依次對8個采集節點利用手持儀進行測量。雞舍內布置的8個節點共采集數據1 120個,達到了實驗預期,證實了該系統的可行性。
經統計分析采集的1 120個數據樣本,可以看出各傳感器的測量值與真實值誤差較大,如表3所示。

表3 各傳感器測量值與真實值誤差對比Tab.3 Comparison of error range between measured and true values of each sensor
分別利用BP神經網絡模型和IPSO優化BP神經網絡模型對1 000個樣本訓練完成后,保存網絡,并利用120個測試樣本進行測試,為了能在圖中清晰地展現結果,隨機選取20個測試樣本數據作圖,測試結果如圖12所示。可以看出,利用BP神經網絡模型處理后的數據比傳感器測量數據接近真實值, IPSO優化BP神經網絡模型處理后的數據,相比于BP神經網絡模型處理后的數據更進一步接近真實值。
為了更客觀地對模型進行評價,利用平均相對誤差百分比和擬合優度兩種評價指標對兩種模型的處理結果進行對比。表4為120個測試樣本在BP神經網絡模型和IPSO優化BP神經網絡模型下平均相對誤差和決定系數的對比結果,從表4可以看出,利用IPSO優化BP模型優化雞舍內有害氣體數據,平均相對誤差和擬合優度均優于BP神經網絡模型。經IPSO優化BP神經網絡后二氧化碳、氨氣、硫化氫的平均相對誤差為5.32%、8.78%和7.20%,優化效果良好。

表4 2種模型處理結果對比Tab.4 Comparison of processing results of two models
由表5可以看出,各傳感器數據精度均有提高,其中SGP30型、MQ135型、MQ137型、MQ136型和TGS2602型傳感器精度分別提高了12.94、29.4、21.05、30.45、29.83個百分點。實驗結果表明,基于IPSO優化BP神經網絡模型將傳感器測得的數據進行優化處理,提高了有害氣體數據精度,改善了傳感器之間的交叉敏感問題。

表5 各傳感器測量數據優化前后精度對比Tab.5 Comparison of measurement accuracy of each sensor before and after optimization %
以封閉蛋雞舍有害氣體精確監測為目的,設計并實現了結合ZigBee技術、STM32技術及IPSO優化BP神經網絡智能算法的有害氣體精確監測系統。系統實現了氣體數據采集和存儲、GPRS模塊遠程上傳、手機APP端實時顯示及數據超出閾值進行振動報警等功能。針對氣體傳感器因存在交叉干擾而導致雞舍有害氣體數據精度較低的問題,采用IPSO優化BP神經網絡模型優化氣體傳感器測得的數據,有效提高了數據精度。實驗結果表明,監測系統運行良好,實現了系統設計的功能,同時,利用IPSO優化BP神經網絡模型處理后,3種有害氣體的平均測量精度均不小于91.23%,能夠滿足對雞舍有害氣體精確監測的要求。該系統方便可靠、容易部署,且可移植性強,為禽舍養殖環境精確監測提供了有效手段。