董威+董凡+王明華+高超+姚智韌
DOI:10.16644/j.cnki.cn33-1094/tp.2016.02.003
摘 ?要: 針對當前環(huán)境污染嚴重,構建了一個以yeelink物聯網為云服務平臺,Arduino為核心控制板,DSM501A為傳感器的實時監(jiān)測系統。利用Arduino對DSM501A粉塵傳感器的控制,將采集的數據進行處理,通過串口上傳至yeelink云平臺,便于實時、異地監(jiān)控和長時間的數據分析,實現了實時空氣質量綜合評估,是一種低成本、多功能、實時化和遠程化的污染物監(jiān)測方案。
關鍵詞: 云平臺; Arduino控制板; 粉塵傳感器; 實時遠程監(jiān)測
中圖分類號:TP702 ? ? ? ? ?文獻標志碼:A ? ? 文章編號:1006-8228(2016)02-08-03
Design of PM2.5 pollutant monitoring system based on cloud platform
Dong Wei, Dong Fan, Wang Minghua, Gao Chao, Yao Zhiren
(School of Mathematics &Computer Science, Hubei University of Arts and Sciences, Xiangyang, Hubei 441053, China)
Abstract: In view of the current serious environmental pollution, a real-time monitoring system is constructed, which uses yeelink as cloud service platform, Arduino as the core control board, and DSM501A as the sensor. Arduino is used to control DSM501A dust sensor, process the data collected and upload it to yeelink cloud platform through the serial port, so as to complete the real-time monitoring and long-time data analysis, realize the real-time air quality comprehensive evaluation.This is a kind of low cost, multifunction, real-time and remote pollutant monitoring scheme.
Key words: cloud platform; Arduino control board; dust sensor; real-time and remote monitoring
0 引言
科技進步,生活節(jié)奏加快,社會工業(yè)化的步伐越來越急,我們生活的環(huán)境也遭到嚴重破壞。最直觀的感受是藍天不是那么藍了。有研究表明,大氣中PM 2.5[1]每升高10μg/m3,人群呼吸系統疾病的死亡率從2.1%增加到3.75%[2]。本文主要介紹利用現有云平臺搭建一個pm2.5污染物實時監(jiān)測系統的設計思路。
1 系統設計
系統原理圖如圖1所示。用于采集環(huán)境顆粒物的DSM501A灰塵傳感器將采集到的信息發(fā)送給Arduino(mega328p)輸入端,DSM501A輸出的是PWM脈寬調制信號。Arduino可以完成對采集到數據的處理,可以通過串口在PC上收集,但是無法上傳至網絡,所以使用yeelink提供的串口工具進行數據上傳,在yeelink平臺上進行相應的配置后就可以在yeelink網站上遠程,異地,實時地查看傳感器數據,對空氣中pm2.5進行監(jiān)測。
[灰塵傳感器DSM501A][Arduino(mega328p)][PC][Yeelink串口工具][Yeelink平臺]
圖1 ?系統原理圖
1.1 硬件設計
1.1.1 Arduino控制板
控制板采用Arduino平臺,它是一個開放源代碼的硬件項目平臺,核心器件是一塊AVR ATmege328微控制器。該平臺包括一塊具備簡單I/O功能的電路板及一套程序開發(fā)環(huán)境軟件。Arduino具有類似 JAVA、C語言的開發(fā)環(huán)境??梢钥焖偈褂肁rduino語言與Flash或Processing等軟件完成互動作品。Arduino它在各種基于傳感器的系統原型設計方面得到了廣泛應用,其硬件設計采用CC BY-SA3.0協議,軟件采用類似C++的高級語言[3-4]。
1.1.2 灰塵傳感器DSM501A
DSM501A特點是PWM脈寬調制輸出,內置加熱器可實現自動吸入空氣,采用粒子計數原理,可靈敏檢測直徑為1μm以上的粒子。其結構如圖2所示。
<E:\方正創(chuàng)藝5.1\Fit201602\圖\dw圖2.tif>
圖2 ?DSM501A結構原理及引腳圖
輸出腳Vout2為普通輸出腳位,靈敏度已預設,最小粒子檢測能力為1μm;輸出腳Vout1為可調輸出腳位,靈敏度可以通過控制腳來調整,默認為Vout2的2.5倍,即最小粒子檢測能力為2.5μm;通過在控制腳和GND之間加一個電阻可調整Vout1的最小粒子檢出水平。當所接電阻為100KΩ時,Vout1輸出為半敏感(2μm以上);當接入27 KΩ電阻時,Vout1輸出與Vout2同等敏感(1μm以上)。該傳感器輸出為PWM調制方波,以低脈沖率來表示粒子數量水平[5]。輸出原理如圖3所示。
圖3 ?輸出原理
1.2 軟件設計
1.2.1 Ardunio數據采集
Ardunio程序中有著固定的規(guī)范。每個Ardunio程序只有一個setup()和一個loop()函數,setup()函數里面定義相關初始化數據。當setup()函數執(zhí)行完成就執(zhí)行l(wèi)oop()函數內的代碼,這個函數內的代碼會一直循環(huán)下去。
DSM501A傳感器有兩個數據輸出引腳,將2號腳接Ardunio的任意數字輸入引腳,將5號引腳接到Ardunio的GND引腳,將3號引腳接Ardunio的5v引腳。
通過Ardunio集成開發(fā)環(huán)境可以編寫數據采集程序,燒錄到Ardunio板中,部分程序代碼如下:
void loop()
{
duration=pulseIn(pin, LOW);
lowpulseoccupancy=lowpulseoccupancy+duration;
if ((millis()-starttime)>sampletime_ms)
{
ratio=lowpulseoccupancy/(sampletime_ms*10.0);
//Integer percentage 0=>100
concentration=1.1*pow(ratio,3)-3.8*pow(ratio,2)
+520*ratio+0.62; //using spec sheet curve
Serial.print(ratio);
Serial.print(",");
Serial.println(concentration);
lowpulseoccupancy=0;
starttime=millis();
}
}
這個程序的意義是,先采集30秒內低頻脈沖所占比例,再通過擬合函數來計算出空氣中粒子數目的濃度,最后以串口輸出。
1.2.2 yeelink配置
為了讓自己的Ardunio設備和yeelink平臺進行數據傳輸,必須在yeelink上進行相關配置。首先必須注冊一個Yeelink賬號,得到一個APIkey。通過串口轉發(fā)工具將數據發(fā)送至yeelink平臺。在yeelink上對應的部分api文檔[6]如表1、表2和表3所示。
1.3 系統運行及測試
該系統在yeelink平臺上運行了1個星期,傳感器置于室內。
收集到的數據如圖4所示。
2 結束語
本設計將Ardunio和傳感器相連,并將采集到的實時數據上傳至yeelink云平臺。通過yeelink平臺實現了對pm2.5顆粒物的遠距離、實時監(jiān)測。在該系統基礎上還可以加入其他傳感器來拓展新的功能,其具有很強的可拓展性。yeelink的開放平臺也可以接入其他社交網絡,提高了交互性。整個設計成本不高,實用性較強,可以滿足一些家庭自主監(jiān)測居家環(huán)境狀態(tài)。其中傳感器獲取數據的精度值還需進一步改進。
參考文獻(References):
[1] 楊新興.大氣顆粒物PM2.5及其危害[J].前沿科學,2012.6
(21):22-30
[2] 楊軼戩.顆粒物(PM2.5)對呼吸系統的毒性作用[J].毒理學,
2005.19(2):146-148
[3] 蔡睿妍.Arduino的原理及應用[J].電子設計工程,2012.20
(16):155-157
[4] 袁本華,董錚.基于Arduino控制板的溫室大棚測溫系統設計[J].
安徽農業(yè)科學,2012.6:35-37
[5] Baidu.灰塵粉塵傳感器DSM501A.[EB/OL].http://
wenku.baidu.com/view/e604a4cf8bd63186bcebbcc9.html?from=search
[6] Yeelink. API Documents.[EB/OL].http://www.yeelink.net/
developer/api