湯祥虎 秦會(huì)斌 董勝奎
摘要:以STM32單片機(jī)為控制中心,運(yùn)用多種傳感器,設(shè)計(jì)了集室內(nèi)空氣質(zhì)量檢測、顯示與報(bào)警功能的空氣質(zhì)量檢測系統(tǒng)。該系統(tǒng)利用傳感器對(duì)空氣中的PM2.5、有害氣體、空氣溫濕度等多種參數(shù)進(jìn)行檢測,通過WiFi模塊將數(shù)據(jù)上傳到手機(jī)等移動(dòng)設(shè)備,空氣質(zhì)量達(dá)到警戒線時(shí)將觸發(fā)系統(tǒng)報(bào)警。該系統(tǒng)可靠性高、成本低,檢測方便快捷。
關(guān)鍵詞:STM32;傳感器;空氣質(zhì)量檢測;WiFi
DOIDOI:10.11907/rjdk.171587
中圖分類號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):16727800(2017)010013203
0引言
隨著經(jīng)濟(jì)的高速發(fā)展,環(huán)境污染問題也越來越嚴(yán)重,尤其是空氣污染。2013年 “霧霾”成為年度關(guān)鍵詞,更加引發(fā)了人們對(duì)空氣質(zhì)量的擔(dān)憂??諝庵械奈廴疚镏饕晌腩w粒、懸浮顆粒物、一氧化碳和二氧化硫等[1]??諝馐侨祟惿娴幕A(chǔ),空氣質(zhì)量影響人們的身體健康??諝馕廴緯?huì)引發(fā)多種疾病,包括呼吸道疾病、慢性支氣管炎和慢性肺病等[2]。人們大部分時(shí)間在室內(nèi),室內(nèi)空氣質(zhì)量更讓人關(guān)注,為此,設(shè)計(jì)了基于STM32的室內(nèi)空氣質(zhì)量檢測系統(tǒng)。系統(tǒng)以STM32為核心控制器,通過多個(gè)傳感器模塊對(duì)空氣中的一些重要參數(shù)進(jìn)行檢測,并通過WiFi模塊將檢測到的數(shù)據(jù)上傳到手機(jī)等移動(dòng)設(shè)備上,人們可隨時(shí)知曉室內(nèi)空氣質(zhì)量情況。
1系統(tǒng)總體設(shè)計(jì)
系統(tǒng)集數(shù)據(jù)檢測、顯示與報(bào)警于一體,主要包括控制模塊、WiFi模塊、Android終端設(shè)備。
控制模塊是整個(gè)系統(tǒng)的核心,包括STM32處理器、傳感器、供電系統(tǒng)以及報(bào)警系統(tǒng),主要工作是數(shù)據(jù)的采集,并為系統(tǒng)提供電源[3]。傳感器獲取空氣質(zhì)量的參數(shù)信息,STM32把獲得的信息發(fā)送給WiFi模塊。當(dāng)參數(shù)超過一定值時(shí),STM32控制報(bào)警系統(tǒng)報(bào)警。
WiFi模塊的主要功能是負(fù)責(zé)無線終端設(shè)備接入和數(shù)據(jù)傳輸。
Android終端設(shè)備包括智能手機(jī)、平板電腦等智能終端,它的主要功能是顯示室內(nèi)空氣參數(shù),接收用戶命令并發(fā)送到處理器。
2系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)硬件設(shè)計(jì)如圖1所示。
2.1控制芯片選擇
主控芯片采用意法半導(dǎo)體的STM32F103C8T6,該器件擁有128K字節(jié)的閃存和20k字節(jié)的SRAM,2個(gè)12位的ADC,3個(gè)通用16位定時(shí)器,1個(gè)高級(jí)定時(shí)器,3個(gè)USART接口,1個(gè)USB接口,2個(gè)SPI接口和1個(gè)CAN總線接口。該芯片性價(jià)比、可靠性和穩(wěn)定性高,程序易于移植。
STM32通過控制各種傳感器,獲得空氣質(zhì)量參數(shù),并將數(shù)據(jù)發(fā)送給WiFi模塊。
2.2灰塵傳感器
灰塵傳感器采用GP2Y1051AU0F[2],該傳感器原理如圖2所示。
GP2Y1051AU0F傳感器由發(fā)光二極管LED和光電子躍遷材料晶體管對(duì)角布置,能檢測到空氣中的灰塵散射光,特別是能有效檢測非常細(xì)的粒子。該傳感器會(huì)根據(jù)灰塵濃度的不同輸出不同的電壓值,通過得到的電壓值轉(zhuǎn)換為灰塵顆粒濃度。
GP2Y1051AU0F與主控芯片可采用AD采樣和串口通信兩種方式,本文選擇串口進(jìn)行通信。串口輸出值即為灰塵濃度轉(zhuǎn)換后的電壓值。灰塵濃度與采集得到的電壓值成線性關(guān)系,通過電壓值很容易得到空氣中的灰塵濃度,如圖3所示。
2.3有害氣體傳感器
TGS2602傳感器是檢測有害氣體的傳感器,對(duì)低濃度有氣味氣體有很高的靈敏度,如氨氣、硫化氫,對(duì)低濃度的VOCs(揮發(fā)性有機(jī)物)也有很高的靈敏度,如甲苯[4]。該傳感器由傳感芯片和加熱器組成。檢測氣體時(shí),傳感器的電導(dǎo)率隨空氣中的被測氣體濃度增加而增加。
TGS2602有加熱電壓VH和線路電壓VC。加熱電壓加在與傳感器集成的加熱器上,以保持傳感器在一個(gè)特定的最佳溫度。線路電壓用來與負(fù)載RL測量電壓VOUT,VOUT值隨空氣中的有害氣體濃度的變化而變化,這樣得到空氣中有害氣體的濃度[5]。
2.4溫濕度傳感器
溫濕度傳感器DHT11是常用的一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器[6]。該傳感器抗干擾能力強(qiáng)、校準(zhǔn)精確,具有極高的可靠性和穩(wěn)定性,電路如圖5所示。DHT11采用簡化的單總線通信,系統(tǒng)數(shù)據(jù)傳輸、控制均由單總線完成。
2.5WiFi模塊
WiFi模塊選取ATK-ESP8266。該模塊是ALIENTEK推出的一款高性能串口-無線模塊,采用串口與MCU通信,內(nèi)置TCP/IP協(xié)議棧,能實(shí)現(xiàn)串口與WiFi之間的轉(zhuǎn)換。該模塊只需簡單的串口配置就可傳輸數(shù)據(jù)。
3軟件設(shè)計(jì)
3.1MCU控制程序設(shè)計(jì)
系統(tǒng)啟動(dòng)后,首先初始化。初始化寄存器、中斷、定時(shí)器與各傳感器。初始化后啟動(dòng)各個(gè)傳感器進(jìn)行檢測,得到的數(shù)據(jù)發(fā)送給WiFi模塊,WiFi模塊將數(shù)據(jù)發(fā)送到手機(jī)等移動(dòng)設(shè)備上。當(dāng)檢測到氣體質(zhì)量嚴(yán)重到一定程度時(shí),觸發(fā)報(bào)警模塊報(bào)警。程序流程如圖6左側(cè)所示。
單片機(jī)還要接收移動(dòng)客戶端發(fā)來的查詢和控制命令。這里通過中斷完成,當(dāng)WiFiI模塊接收到來自移動(dòng)端發(fā)來的命令后,通過串口發(fā)送到STM32,這時(shí)產(chǎn)生一個(gè)中斷,在中斷函數(shù)中完成命令,流程如圖6右側(cè)所示。
系統(tǒng)主函數(shù)部分程序如下:
SysInit();
while(1)
{
pm2_5=Get_Data_Pm25();
povc=Get_Data_povc();
If(Data_is_ok(pm2_5,povc))
Send_data(pm2_5,povc);
else
Alert(pm2_5,povc);endprint
Delay();
}
在處理中斷過程中,要用到嵌套向量中斷控制器NVIC。在STM32系統(tǒng)中,搶占式優(yōu)先級(jí)(NVIC_IRQChannelPreemptionPriority)和響應(yīng)優(yōu)先級(jí)(NVIC_IRQChannelSubPriority)共同構(gòu)成了一個(gè)中斷優(yōu)先級(jí)??赏ㄟ^嵌套中斷向量控制器(NVIC)來分配先占優(yōu)先級(jí)和次占優(yōu)先級(jí)數(shù)量:
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0
通過上段代碼就可將中斷的搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)都設(shè)置為0。
3.2Android客戶端設(shè)計(jì)
手機(jī)客戶端程序由登陸模塊和通信模塊組成。
在登陸模塊中使用Android系統(tǒng)提供的SQLite數(shù)據(jù)庫。Android提供了一個(gè)名為SQLiteDatabase的類,該類封裝了一些操作數(shù)據(jù)庫的API,使用該類可進(jìn)行數(shù)據(jù)的添加(Create)、查詢(Retrieve)、更新(Update)和刪除(Delete)等操作。利用該數(shù)據(jù)庫創(chuàng)建名為“user.db”的代碼:openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)。其中path為存放數(shù)據(jù)庫路徑,第2項(xiàng)通常置為null。利用Android提供的API可對(duì)表和數(shù)據(jù)方便地操作。
在通信模塊,為了實(shí)現(xiàn)數(shù)據(jù)傳輸,采用Socket通信,它是基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信協(xié)議。基于TCP/IP的Socket類型主要有流套接字和數(shù)據(jù)包套接字。流套接字提供了可靠的字節(jié)流服務(wù),在通信之前要先建立連接,速度比較慢。數(shù)據(jù)報(bào)套接字使用UDP協(xié)議,面向無連接的數(shù)據(jù)傳輸,速度比較快。
客戶端工作流程如圖7所示。
客戶端程序主要代碼如下:
socketAddress=new InetSocketAddress(strIP,SERVER_PORT);
socket = new Socket();
socket.connect(socketAddress, SERVER_PORT);
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream()
該程序創(chuàng)建套接字并連接服務(wù)器。其中,strIP是服務(wù)器的IP地址,SERVER_PORT是服務(wù)器的端口號(hào),連接好后即可與服務(wù)器進(jìn)行通信。
4實(shí)驗(yàn)結(jié)果
將測試系統(tǒng)放在室內(nèi),打開之后通過手機(jī)客戶端固定間隔時(shí)間查看PM2.5濃度和POVC濃度,結(jié)果如圖8和圖9所示。
5結(jié)語
本文設(shè)計(jì)的室內(nèi)空氣質(zhì)量檢測系統(tǒng)能檢測室內(nèi)空氣中PM2.5、有害氣體濃度及室內(nèi)溫濕度,及時(shí)發(fā)送到Android客戶端顯示,并能對(duì)嚴(yán)重污染空氣發(fā)出警報(bào)。系統(tǒng)可靠性高、成本低,能滿足人們對(duì)空氣質(zhì)量檢測的需要。
系統(tǒng)還有不足之處,如該系統(tǒng)只對(duì)空氣質(zhì)量起到檢測作用,無法對(duì)室內(nèi)空氣作凈化處理,這是需要改進(jìn)的地方。
參考文獻(xiàn):
\[1\]許元,牛熠,肖達(dá)根.一種空氣質(zhì)量檢測系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2016(2):7778.
[2]劉少軍,王瑜瑜.基于單片機(jī)控制的空氣質(zhì)量檢測系統(tǒng)的設(shè)計(jì)[J].機(jī)械與電子,2015(1):5356.
[3]陳雙葉,徐文政,丁雙春,等.智能家居室內(nèi)空氣質(zhì)量檢測、評(píng)價(jià)與監(jiān)控系統(tǒng)設(shè)計(jì)[J].信息通信技術(shù),2016(3):4956.
[4]袁緒,宋康,查長海,等.基于STC12C5A60S2的空氣質(zhì)量檢測系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2015(6):132135.
[5]文曉剛,劉銳,蔡強(qiáng),等.一種可同時(shí)檢測揮發(fā)性氯代烷烴和氯代烯烴的電子鼻的研制[J].環(huán)境科學(xué),2012(11):40124017.
[6]韓丹翱,王菲.DHT11數(shù)字式溫濕度傳感器的應(yīng)用性研究[J].電子設(shè)計(jì)工程,2013(13):8385.
責(zé)任編輯(責(zé)任編輯:杜能鋼)endprint