謝 怡,陳向東,張傳武,丁 星
(1.西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 611756;2.西南民族大學(xué) 電氣信息工程學(xué)院,四川 成都 610041)
隨著我國經(jīng)濟(jì)的發(fā)展,人們對(duì)居住環(huán)境和工作環(huán)境都提出了更高的要求[1]。人們使用各種新奇的裝修材料改變自己的室內(nèi)環(huán)境,卻忽視了它們帶來的室內(nèi)污染物對(duì)身體造成的巨大傷害?!睹裼媒ㄖこ淌覂?nèi)環(huán)境污染控制規(guī)范》GB-50325—2010明確規(guī)定了5種對(duì)人體危害較大的室內(nèi)污染物:甲醛、氨、TVOC、氡、苯,并對(duì)其濃度限值做出了明確規(guī)定。
不少學(xué)者對(duì)甲醛的精確檢測和室內(nèi)空氣質(zhì)量等級(jí)分類展開了一定的研究,但都有各自的局限性。文獻(xiàn)[2]中設(shè)計(jì)的抗乙醇?xì)怏w干擾的甲醛檢測系統(tǒng)僅對(duì)數(shù)據(jù)進(jìn)行了簡單擬合,未考慮甲醛和乙醇?xì)怏w混合時(shí)甲醛傳感器的檢測值并非簡單的疊加關(guān)系;文獻(xiàn)[3]中設(shè)計(jì)的室內(nèi)空氣質(zhì)量檢測系統(tǒng)對(duì)室內(nèi)常見指標(biāo),如TVOC、甲醛、溫濕度等進(jìn)行了檢測,但并未做出等級(jí)評(píng)價(jià),用戶查看數(shù)據(jù)時(shí)不夠直觀。
針對(duì)上述問題,本文設(shè)計(jì)了基于Zynq的多傳感器室內(nèi)空氣質(zhì)量檢測與分析系統(tǒng),主要針對(duì)甲醛、氨氣、TVOC三種污染氣體。用戶可以通過檢測終端隨時(shí)對(duì)室內(nèi)的溫濕度和污染氣體含量進(jìn)行檢測,通過Android APP實(shí)時(shí)查看當(dāng)前環(huán)境中的污染氣體含量以及室內(nèi)環(huán)境等級(jí)。檢測終端采集的甲醛傳感器數(shù)據(jù)經(jīng)抗干擾算法處理后,檢測精度得到了提高。
本系統(tǒng)共分為2個(gè)模塊,分別是檢測終端和Android APP客戶端[4],如圖1所示。檢測終端基于Zynq實(shí)現(xiàn)對(duì)室內(nèi)甲醛等污染氣體和溫濕度數(shù)據(jù)的采集和處理,處理后的污染氣體含量數(shù)據(jù)通過藍(lán)牙傳輸。Android APP客戶端主要實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)顯示和用戶管理[5]。
圖1 系統(tǒng)整體架構(gòu)
系統(tǒng)主要工作流程:
(1)系統(tǒng)上電啟動(dòng),待傳感器預(yù)熱完畢后,將其帶到檢測地點(diǎn);
(2)傳感器數(shù)據(jù)經(jīng)甲醛抗干擾算法和BP神經(jīng)網(wǎng)絡(luò)進(jìn)行處理,將處理后的傳感器數(shù)據(jù)打包,通過藍(lán)牙發(fā)送[6];
(3)打開Android APP,連接藍(lán)牙后開始檢測,用戶可通過APP查看當(dāng)前環(huán)境的溫濕度和污染氣體(甲醛、氨氣、TVOC等)含量,以及環(huán)境污染等級(jí),用戶也可以通過檢測終端的OLED屏幕查看室內(nèi)空氣質(zhì)量等級(jí)和甲醛數(shù)據(jù)。
檢測終端主要包括傳感器信息采集模塊、藍(lán)牙發(fā)送模塊以及數(shù)據(jù)處理算法模塊。
檢測終端包括甲醛、氨氣等5個(gè)傳感器,其中甲醛、溫濕度、TVOC傳感器通信方式均為UART串口通信,而氨氣和酒精傳感器的檢測數(shù)據(jù)為電壓值,為了方便數(shù)據(jù)處理,本系統(tǒng)采用Arduino單片機(jī)內(nèi)置的ADC讀取其檢測的電壓值,然后通過UART串口協(xié)議發(fā)送至Zynq。以甲醛傳感器數(shù)據(jù)讀取為例,甲醛傳感器的通信方式為主動(dòng)上傳式,通信命令行格式見表1所列。
表1 甲醛傳感器通信命令格式
甲醛模塊仿真波形如圖2所示。模塊添加了數(shù)據(jù)幀頭檢測功能,只有在接收到0xFF時(shí)模塊才開始工作,否則將保持原有狀態(tài),以有效過濾部分錯(cuò)誤數(shù)據(jù)。
圖2 甲醛模塊數(shù)據(jù)接收仿真圖
數(shù)據(jù)發(fā)送選用HC-08藍(lán)牙串口通信模塊,藍(lán)牙通信的主要特點(diǎn)是功耗低、延時(shí)低、成本低,完全符合本系統(tǒng)的要求。檢測終端向Android APP發(fā)送數(shù)據(jù)的數(shù)據(jù)封裝格式見表2所列。
表2 發(fā)送數(shù)據(jù)封裝格式
數(shù)據(jù)處理算法模塊主要包括2部分,分別是甲醛抗干擾模塊和空氣質(zhì)量等級(jí)分類模塊。
甲醛抗干擾模塊采用KNN算法,以抑制酒精對(duì)甲醛傳感器的影響[7];空氣質(zhì)量等級(jí)分類模塊采用BP神經(jīng)網(wǎng)絡(luò),選用甲醛、氨氣、TVOC和溫濕度等信息,對(duì)當(dāng)前室內(nèi)環(huán)境的空氣質(zhì)量進(jìn)行分類。
本系統(tǒng)的Android APP端集成了用戶登錄、空氣質(zhì)量檢測、數(shù)據(jù)查詢等功能,其軟件設(shè)計(jì)架構(gòu)如圖3所示。
圖3 Android APP端軟件設(shè)計(jì)架構(gòu)
本系統(tǒng)抗干擾算法和空氣質(zhì)量分類算法流程分別如圖4、圖5所示。研究發(fā)現(xiàn),酒精對(duì)甲醛傳感器的檢測會(huì)產(chǎn)生巨大影響,為提高甲醛檢測精度,系統(tǒng)首先對(duì)采集的甲醛傳感器數(shù)據(jù)進(jìn)行抗酒精干擾處理,處理后的甲醛數(shù)據(jù)及氨氣、TVOC、溫濕度信息輸入用于空氣質(zhì)量分類的BP神經(jīng)網(wǎng)絡(luò),得到當(dāng)前環(huán)境的空氣質(zhì)量等級(jí),將數(shù)據(jù)按照格式打包后發(fā)送至Android APP,方便用戶查看。
圖4 抗干擾算法流程
圖5 室內(nèi)空氣質(zhì)量分類算法流程
本文采用Xilinx Zynq 7000系列芯片作為系統(tǒng)的硬件平臺(tái)。Zynq的突出特點(diǎn)是將ARM Cortex-A9處理器和現(xiàn)場可編程門陣列(Field Programmable Gate Array, FPGA)邏輯部件相結(jié)合。可將Zynq分為處理器系統(tǒng)(Processing System,PS)和可編程邏輯(Programmable Logic, PL)兩部分[8]??紤]到算法計(jì)算的復(fù)雜度,本文將KNN算法部署在PS部分,方便數(shù)據(jù)排序和挑選;BP神經(jīng)網(wǎng)絡(luò)通過PL部分實(shí)現(xiàn),通過PL部分的加法器和乘法器實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的高速運(yùn)算。
本系統(tǒng)采用的電化學(xué)甲醛傳感器模組ZE-08具有高靈敏度、高分辨率、低功耗和使用壽命長等優(yōu)點(diǎn)。但該甲醛傳感器極易受到酒精氣體的干擾,交叉敏感系數(shù)達(dá)50%,且酒精屬于家中常見物品,易揮發(fā),導(dǎo)致甲醛檢測結(jié)果受到影響。
本文以英國PPM公司生產(chǎn)的PPM-400 ST型甲醛檢測儀的檢測值作為標(biāo)準(zhǔn)值,采用K近鄰(KNN)算法對(duì)甲醛和酒精傳感器的數(shù)據(jù)進(jìn)行處理,以有效降低酒精對(duì)甲醛傳感器的干擾,提升甲醛傳感器的精度。
4.1.1 數(shù)據(jù)分析
實(shí)驗(yàn)一:試驗(yàn)箱內(nèi)僅通入甲醛氣體;
實(shí)驗(yàn)二:試驗(yàn)箱內(nèi)僅通入酒精氣體;
實(shí)驗(yàn)三:實(shí)驗(yàn)箱內(nèi)同時(shí)通入甲醛和酒精氣體。
記錄甲醛傳感器、酒精傳感器和PPM-400 ST甲醛檢測儀的響應(yīng)情況,如圖6所示。
圖6 傳感器響應(yīng)曲線
本文通過使用5種算法對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練,以均方根誤差(RMSE)作為評(píng)判標(biāo)準(zhǔn)。通過表3可以看出,KNN算法的效果最優(yōu),均方根誤差為0.016 2,所以本文選用KNN作為抗干擾算法。
表3 訓(xùn)練數(shù)據(jù)在不同算法下的RMSE對(duì)比
4.1.2 KNN算法訓(xùn)練過程
K近鄰(KNN)算法是一種基本分類和回歸算法,本文主要應(yīng)用了回歸問題的KNN算法。
KNN算法計(jì)算回歸問題時(shí),需計(jì)算樣本的K個(gè)最近鄰居,將這些鄰居某個(gè)屬性的平均值賦給該樣本,就可以得到該樣本對(duì)應(yīng)屬性的值,達(dá)到回歸計(jì)算的目的[9]。本文中數(shù)據(jù)的屬性為{甲醛傳感器,酒精傳感器,PPM-400 ST檢測值},模型輸入為{甲醛傳感器,酒精傳感器},輸出為PPM-400 ST的檢測值。KNN算法流程如下[10]:
(1)測試數(shù)據(jù)歸一化,計(jì)算訓(xùn)練數(shù)據(jù)到測試數(shù)據(jù)集中各樣本的距離;
(2)將距離按升序排列;
(3)找出最小的K個(gè)值對(duì)應(yīng)的PPM-400 ST檢測值并求平均值;
(4)將平均值作為測試數(shù)據(jù)的預(yù)測輸出。
本文采用歐氏距離作為計(jì)算標(biāo)準(zhǔn)。
KNN算法常用的3種距離計(jì)算公式如下[11]。設(shè)樣本實(shí)例特征向量所屬的特征空間X為n維的實(shí)數(shù)向量空間Rn,xi,xj∈X,其中:
xi,xj的閔可夫斯基距離Lp定義為:
式中,p≥1,可根據(jù)實(shí)際數(shù)據(jù)實(shí)例進(jìn)行選取。當(dāng)p=1時(shí),稱為曼哈頓距離(Manhattan distance),即:
當(dāng)p=2時(shí),稱為歐幾里得距離(Euclidean distance),即:
當(dāng)p→∞時(shí),稱為切比雪夫距離(Chebyshev distance),即:
本文選取p=2,即歐氏距離作為計(jì)算標(biāo)準(zhǔn)。
4.1.3 KNN算法驗(yàn)證
KNN算法在訓(xùn)練時(shí),不同的K值對(duì)預(yù)測結(jié)果有較大的影響,因此我們通過代入不同的K值對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,得到不同的均方根誤差,如圖7所示。
圖7 不同K值的均方根誤差
當(dāng)K=3時(shí),均方根誤差最小,RMSE為0.016 2,真實(shí)值與KNN預(yù)測值對(duì)比如圖8所示。
圖8 當(dāng)K=3時(shí)預(yù)測結(jié)果與真實(shí)值結(jié)果對(duì)比
室內(nèi)空氣質(zhì)量的評(píng)價(jià)分為客觀評(píng)價(jià)和主觀評(píng)價(jià)??陀^評(píng)價(jià)指通過對(duì)比當(dāng)前環(huán)境中的污染物濃度和各種規(guī)范中規(guī)定的濃度來判斷室內(nèi)空氣質(zhì)量;主觀評(píng)價(jià)是對(duì)居住人員采取問卷調(diào)查的方式了解其滿意度,從而判斷室內(nèi)環(huán)境質(zhì)量[12]。
這兩種評(píng)價(jià)方法各有優(yōu)劣,本文將兩種評(píng)價(jià)方式相結(jié)合,采取綜合評(píng)價(jià)的方法將室內(nèi)空氣質(zhì)量分為5類,A表示清潔,B表示未污染,C表示輕污染,D表示中污染,E表示重污染。
4.2.1 室內(nèi)空氣質(zhì)量等級(jí)分類算法選擇
本文選取了4種常見的分類算法,通過MATLAB對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練,然后選取最優(yōu)結(jié)果。訓(xùn)練準(zhǔn)確率見表4所列。
表4 不同分類算法的預(yù)測準(zhǔn)確率
綜合計(jì)算的復(fù)雜度,本文最終選取BP神經(jīng)網(wǎng)絡(luò)[13]作為室內(nèi)空氣質(zhì)量等級(jí)分類的算法。
4.2.2 BP神經(jīng)網(wǎng)絡(luò)算法設(shè)計(jì)
神經(jīng)元的一般模型如圖9所示。
圖9 神經(jīng)元的一般模型
神經(jīng)元的輸出可表示為:
式中:y為神經(jīng)元的輸出;f為激活函數(shù)(本文選用sigmoid函數(shù));ωi為權(quán)重;b為閾值;xi為神經(jīng)元的輸入[14]。
本文根據(jù)實(shí)際情況,設(shè)計(jì)實(shí)現(xiàn)了一個(gè)3層BP神經(jīng)網(wǎng)絡(luò),如圖10所示[15]。
圖10 BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
圖10中,X1,X2,X3,X4,X5分別是甲醛、氨氣、TVOC、溫度和濕度5個(gè)維度的信息,輸出為神經(jīng)網(wǎng)絡(luò)分類的結(jié)果。
4.2.3 BP神經(jīng)網(wǎng)絡(luò)算法驗(yàn)證
對(duì)于輸入層,由于沒有任何計(jì)算,所以采用寄存器打拍輸出的方式,直接將輸入值輸出到隱層神經(jīng)元。
隱含層和輸出層的RTL結(jié)構(gòu)如圖11和圖12所示[16]。
圖11 隱含層RTL結(jié)構(gòu)
圖12 輸出層RTL結(jié)構(gòu)
為了降低功耗,在不影響B(tài)P神經(jīng)網(wǎng)絡(luò)正常計(jì)算的情況下,添加了如圖13所示的cal_control計(jì)算控制模塊。
圖13 神經(jīng)元計(jì)算控制模塊
表5為添加計(jì)算控制模塊前后的功耗,由表中數(shù)據(jù)可知,添加計(jì)算控制模塊后,功耗降低了52%。
表5 添加計(jì)算機(jī)控制模塊前后的功耗
由于BP神經(jīng)網(wǎng)絡(luò)采用一個(gè)神經(jīng)元輸出,輸出的值反歸一化后處于0至6之間,本文對(duì)不同取整方法的結(jié)果進(jìn)行對(duì)比,結(jié)果見表6所列。
表6 不同取整方式的準(zhǔn)確率
綜合取整為大于5時(shí)向下取整,小于5時(shí)四舍五入。最終選取綜合取整的方式對(duì)BP神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果進(jìn)行處理[17],BP神經(jīng)網(wǎng)絡(luò)預(yù)測值和實(shí)測值結(jié)果對(duì)比如圖14所示,實(shí)測值為結(jié)合了客觀評(píng)價(jià)和主觀評(píng)價(jià)人工標(biāo)定的綜合結(jié)果,1~5分別對(duì)應(yīng)A~E等級(jí)。
圖14 預(yù)測值和實(shí)測值結(jié)果對(duì)比
對(duì)系統(tǒng)進(jìn)行完整的功能測試。Android APP部分截圖如圖15、圖16所示,OLED顯示如圖17所示。
圖15 用戶登錄界面
圖16 檢測界面
圖17 OLED顯示界面
(1)打開檢測終端,待傳感器預(yù)熱完畢后,OLED屏幕顯示當(dāng)前環(huán)境中的甲醛濃度和室內(nèi)空氣等級(jí)。
(2)用戶打開Android APP,完成登錄后點(diǎn)擊“搜索”按鈕搜索設(shè)備,連接成功后界面如圖17所示。
(3)連接成功后,Android APP接收到來自檢測端發(fā)送的數(shù)據(jù),動(dòng)態(tài)顯示各指標(biāo)。
基于Zynq的多傳感器甲醛檢測系統(tǒng)能滿足日常生活中對(duì)室內(nèi)常見污染氣體的檢測,并對(duì)其進(jìn)行分類,用戶可通過Android APP對(duì)室內(nèi)環(huán)境的各指標(biāo)進(jìn)行實(shí)時(shí)查看。通過抗干擾算法和分類算法的植入,讓系統(tǒng)檢測的準(zhǔn)確性和智能性得到巨大提升;在不影響計(jì)算結(jié)果的前提下,通過添加BP神經(jīng)網(wǎng)絡(luò)隱層神經(jīng)元計(jì)算控制模塊,大幅降低系統(tǒng)功耗。