鮑 春, 謝 濤, 楊 飛, 于重重
(北京工商大學(xué) 計算機(jī)與信息工程學(xué)院,北京 100048)
城市污水管道是維持城市運(yùn)轉(zhuǎn)正常的重要部分,承擔(dān)著工業(yè)廢水和生活污水的輸送和處理作用。一直以來,污水管道里產(chǎn)生的易燃易爆且有毒氣體,如甲烷(CH4)、硫化氫(H2S)、氨氣(NH3)等都是威脅城市居民的安全隱患,而污水管道監(jiān)測環(huán)境惡劣,現(xiàn)場監(jiān)測難度大,因此,污水管道氣體遠(yuǎn)程監(jiān)測就成為了一項(xiàng)亟待解決的重要課題[1]。
針對污水管道氣體監(jiān)測問題,張娜提出了基于通用分組無線業(yè)務(wù)(general packet radio service,GPRS)網(wǎng)絡(luò)的管道可燃?xì)怏w監(jiān)測系統(tǒng),但是其沒有解決運(yùn)算速度慢和運(yùn)算精度低的問題。高致慧等提出基于現(xiàn)場可編程門陣列(field programmable gate array,FPGA)在線氣體監(jiān)測系統(tǒng),但是該系統(tǒng)只適用于現(xiàn)場氣體監(jiān)測,沒有解決遠(yuǎn)程監(jiān)測問題[2]。
本文提出了一種基于窄帶物聯(lián)網(wǎng)(narrow band Internet of things,NB-IoT)的污水管道混合氣體遠(yuǎn)程監(jiān)測系統(tǒng),通過FPGA組成的傳感器陣列采集氣體數(shù)據(jù),使得測量的實(shí)時性更好。利用FPGA并行結(jié)構(gòu)實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)算法,從而提高了測量的精度。同時,該裝置嵌入了Linux操作系統(tǒng),操作界面友好,最后,將采集的氣體數(shù)據(jù)通過NB-IoT組網(wǎng)傳送至云端,實(shí)現(xiàn)遠(yuǎn)程實(shí)時監(jiān)測。
管道氣體的主要成分為CH4,H2S和NH3,因此,在檢測管道氣體時,先將混合氣體經(jīng)過氣泵抽入預(yù)先設(shè)計的密閉氣室中,抽取的混合氣體要經(jīng)過氣體傳感器陣列,該陣列分別由CH4,H2S和NH3傳感器組成。氣體數(shù)據(jù)經(jīng)過FPGA和ARM組成的采集裝置,由NB-IoT模塊連接基站傳至云平臺,用戶通過訪問云平臺獲得采集數(shù)據(jù),系統(tǒng)整體架構(gòu)如圖1所示。
系統(tǒng)硬件設(shè)計部分主要包括NB-IoT模塊設(shè)計、FPGA采集硬件設(shè)計以及ARM電路設(shè)計。系統(tǒng)硬件設(shè)計如圖2所示,以下將分成三個部分對監(jiān)測系統(tǒng)進(jìn)行介紹。
圖2 系統(tǒng)硬件設(shè)計
本系統(tǒng)選用的NB-IoT芯片為移遠(yuǎn)公司的BC95—B5模塊,BC95是最早期推出的一種NB-IoT模塊,其尺寸小,功耗低,功能強(qiáng),極大的滿足終端小設(shè)備的設(shè)計需求。采用LCC封裝,內(nèi)嵌網(wǎng)絡(luò)協(xié)議,超低功耗的同時,具有超高的靈敏度。本設(shè)計基于BC95無線NB模塊,其具備電源指示燈1路,網(wǎng)絡(luò)狀態(tài)指示燈1路,Micro SIM卡座1個。模塊引出8個管腳用于和主控板對接,工作溫度-40~+85 ℃,支持AT指令配置,數(shù)據(jù)傳輸100 bps。
BC95模塊的電路設(shè)計如圖3所示,模塊共有94個引腳,其中,54個為LCC引腳,其余40個為LGA引腳。供電范圍為3.1~4.2 V。SIM卡由電信運(yùn)營商提供,并配有唯一的IMEI碼[3~6]。
圖3 BC95模塊硬件設(shè)計
本系統(tǒng)采用Altera公司生產(chǎn)的Cyclone IV系列EP4CE30F23C8N型號的芯片。該芯片共有532個管腳,集成了28 848個邏輯單元,66個18×18 位乘法器,也可配置成為132個9×9位的乘法器;最多可具備4個增強(qiáng)型鎖相環(huán)(phase-locked loop,PLL);包含了高達(dá) 30個全局時鐘(global clock,GCLK)網(wǎng)絡(luò)以及高達(dá)8個PLL(每個PLL上均有五個輸出端),以提供可靠的時鐘管理;I/O 支持可編程總線保持、可編程上拉電阻、可編程延遲、可編程驅(qū)動能力。
AD模塊選用了AD7626芯片來進(jìn)行傳感器數(shù)據(jù)的模數(shù)轉(zhuǎn)換,由于大部分傳感器的測量數(shù)據(jù)都為模擬量,所以,進(jìn)入FPGA計算的數(shù)據(jù)都要經(jīng)過AD模塊進(jìn)行轉(zhuǎn)換。AD7672是16位逐次逼近寄存器(SAR)架構(gòu)式ADC,能夠以10MSPS無延遲采樣,不存在流水線式ADC常有的“流水線延遲”,有良好的線性度。其內(nèi)部集成了一個轉(zhuǎn)換時鐘和一個內(nèi)部緩沖基準(zhǔn)源。本系統(tǒng)所用的A/D轉(zhuǎn)換和FPGA之間的連接如圖4所示,其中,進(jìn)入AD7626芯片的傳感器數(shù)據(jù)為DATA1_P和DATA1_N,在CNV的上升沿,AD7626對IN+和IN-引腳之間的電壓差進(jìn)行采樣[7,8]。在采樣過程中,所有的轉(zhuǎn)換結(jié)果通過LVDS自時鐘串行接口或回波時鐘串行接口都可獲得,本系統(tǒng)通過回?fù)軙r鐘獲得轉(zhuǎn)換后的數(shù)據(jù)。
圖4 采集部分硬件設(shè)計
由于FPGA作為ARM的外設(shè)掛載在嵌入式系統(tǒng)的總線上,因此硬件連接相對簡單,其連接框圖如圖5所示。其中RD為讀數(shù)據(jù),CS為片選,WE為寫數(shù)據(jù),DATA為數(shù)據(jù)線,ADDR為地址線,EXINT為外部中斷,MCLK為時鐘信號。
圖5 ARM+FPGA架構(gòu)
當(dāng)CS低電平有效、WE低電平有效、RD高電平無效時,ARM對FPGA進(jìn)行寫操作,根據(jù)ARM地址總線上傳送的地址,F(xiàn)PGA向自身雙RAM口對應(yīng)單元寫入ARM數(shù)據(jù)總線上的數(shù)據(jù)。當(dāng)CS低電平有效、WE高電平無效、RD低電平有效時,ARM對FPGA進(jìn)行讀操作,根據(jù)FPGA地址總線的傳送的地址,ARM讀入FPGA上對應(yīng)地址單元的數(shù)據(jù)[9]。
系統(tǒng)軟件設(shè)計包括NB-IoT軟件設(shè)計和采集部分軟件設(shè)計,在NB-IoT軟件設(shè)計部分介紹了NB模塊的初始化配置,采集部分主要包括FPGA在和AD模塊之間的信息交換以及FPGA神經(jīng)網(wǎng)絡(luò)的簡單介紹。系統(tǒng)軟件設(shè)計整體流程圖如圖6所示。
圖6 系統(tǒng)軟件設(shè)計整體流程
NB-IoT的軟件設(shè)計主要為NB-IoT的初始化入網(wǎng)設(shè)置過程,在本文中,通過發(fā)一系列AT指令來設(shè)置NB模塊,以下為終端設(shè)置步驟。
1)終端上電,發(fā)送“AT+NRB”,復(fù)位終端。
2)發(fā)送“AT+CFUN=0”,關(guān)閉功能開關(guān)。
3)發(fā)送“AT+NTSETID=1,設(shè)備ID”,此ID即為模塊中SIM卡的IMEI號。
4)發(fā)送“AT+NCDP=IP,PORT”,設(shè)置對接云平臺的地址。
5)發(fā)送“AT+CFUN=1”,開啟功能開關(guān)。
6)發(fā)送“AT+NBAND=頻段”,設(shè)置頻段。
7)發(fā)送“AT+CGDCONT=1,IP,APN”設(shè)置核心網(wǎng)的APN。
8)發(fā)送“AT+CGATT=1”,終端入網(wǎng)。
9)發(fā)送“AT+CGPADDR”,查詢終端獲取核心網(wǎng)分配的IP地址。
傳感器陣列數(shù)據(jù)經(jīng)AD轉(zhuǎn)換后成為FPGA可以處理的數(shù)字量,F(xiàn)PGA與AD芯片之間通過串行外圍接口(serial peripheral interface,SPI)協(xié)議進(jìn)行數(shù)據(jù)通信。通過實(shí)現(xiàn)FPGA平臺的SPI通信接口,實(shí)現(xiàn)數(shù)據(jù)的接收。SPI總線的特點(diǎn)有全雙工通信、主從模式、片選使能、四線接線等優(yōu)點(diǎn),通信易于控制。
本系統(tǒng)所設(shè)計的數(shù)據(jù)模/數(shù)轉(zhuǎn)換(analog-to-digital conversion,ADC)電路采用AD7626,該ADC有大量片內(nèi)寄存器用于對ADC的配置和控制。如通信寄存器,與ADC所有的通信操作前都應(yīng)該和通信寄存器的寫操作開始,通過對通訊寄存器的配置,決定后續(xù)操作是讀還是寫。同時還有狀態(tài)寄存器,來判斷ADC讀取狀態(tài);模式寄存器設(shè)置連續(xù)轉(zhuǎn)換、單次轉(zhuǎn)換或者待機(jī)模式;數(shù)據(jù)寄存器存儲ADC的轉(zhuǎn)換結(jié)果,完成讀操作后,RDY位/引腳被置1。AD7626軟件設(shè)計流程圖如圖7所示[10,11]。
圖7 AD模塊軟件設(shè)計
由于氣體傳感器在檢測混合氣體中對應(yīng)的特定氣體時,會出現(xiàn)交叉敏感現(xiàn)象,即在測量某一種氣體濃度時,會受到其他氣體的影響,使得傳感器的性能不穩(wěn)定,且測量精度低。為了消除這種影響,本系統(tǒng)采用了在FPGA上部署B(yǎng)P神經(jīng)網(wǎng)絡(luò)算法,利用多傳感器數(shù)據(jù)來訓(xùn)練神經(jīng)網(wǎng)絡(luò),使得FPGA采集的數(shù)據(jù)更加可靠和精確。采用定點(diǎn)計算的方法,將神經(jīng)網(wǎng)絡(luò)運(yùn)算中浮點(diǎn)數(shù)用定點(diǎn)計算公式表示,運(yùn)用大量片上資源來換取并行計算的快速性。采用分段擬合的方法,將擬合區(qū)間分為若干段,利用細(xì)間距線性函數(shù)擬合激活函數(shù)。
本系統(tǒng)開發(fā)了獨(dú)立的上位機(jī)軟件,如圖8所示,用戶可以輸入用戶名和密碼登陸軟件系統(tǒng),輸入NB-IoT模塊中SIM卡的IMSI號作為用戶ID,即可獲得此裝置所在的管段信息,該軟件提供數(shù)據(jù)包下載和查詢功能,用戶設(shè)置報警閾值,可得到氣體狀態(tài)。本實(shí)驗(yàn)在實(shí)驗(yàn)室的配氣裝置下,配置NH3體積分?jǐn)?shù)為20×10-6,H2S為0.8×10-6,CH4為200×10-6,氣體傳感器采集信息后,用戶登陸該軟件,所得到的數(shù)據(jù)如圖8所示。
圖8 上位機(jī)界面
本實(shí)驗(yàn)通過氣體配置裝置,在傳感器端配置10組氣體濃度,經(jīng)過本文設(shè)計的氣體監(jiān)測裝置,其采集濃度表1所示。其中,濃度值為配氣濃度,實(shí)測值為本系統(tǒng)采集濃度。
表1 配氣濃度與遠(yuǎn)程采集濃度數(shù)據(jù)表 10-6
由表中數(shù)據(jù)可知,測量CH4的平均誤差為1.64×10-6,H2S的平均誤差為0.02×10-6,NH3的平均誤差為0.67,其測試精度高,在數(shù)據(jù)遠(yuǎn)傳過程中無丟包現(xiàn)象。
通過實(shí)驗(yàn)證明,本文所設(shè)計的氣體采集裝置不僅采集誤差小,而且上位機(jī)操作界面友好,解決了污水管道混合氣體監(jiān)測精度低、操作難度大等問題。