《電子技術(shù)應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 基于開源硬件的在線空氣質(zhì)量監(jiān)測系統(tǒng)設計
基于開源硬件的在線空氣質(zhì)量監(jiān)測系統(tǒng)設計
2014年電子技術(shù)應用第12期
王 凡,李 博
(電子科技大學中山學院 機電工程學院,廣東 中山528402)
摘要: 以開源硬件Arduino為主控板,配合灰塵傳感器、有機物揮發(fā)氣體傳感器、溫濕度傳感器采集空氣質(zhì)量數(shù)據(jù),通過以太網(wǎng)控制器將數(shù)據(jù)上傳至物聯(lián)網(wǎng)平臺,從而實現(xiàn)了空氣質(zhì)量的在線監(jiān)測。該系統(tǒng)具有性價比高、穩(wěn)定性好、精度高等優(yōu)點,并可擴展傳感器滿足其他測量環(huán)境需求。
中圖分類號: TP23
文獻標識碼: A
文章編號: 0258-7998(2014)12-0082-04
Design of the air quality online monitoring system based on open source hardware
Wang Fan,Li Bo
School of Electromechanical Engineering, University of Electronic Science and Technology of China,
Abstract: In this paper, the system uses Arduino as the main control board. It gets air quality data form particle sensor, volatile organic compound gas sensors, temperature and humidity sensors. The system realizes the online monitoring of air quality by uploading data to the Internet of Things platform. The system has the advantages of high coat, good stability and high accuracy. The sensor system also can be easily extended.
Key words : open source hardware;air quality monitoring;sensor;Internet of Things

0 引言

  隨著人民生活水平的逐步提高,綠色健康成為人們所倡導的生活方式。但是近年來空氣質(zhì)量令人擔憂,國內(nèi)大部分城市都出現(xiàn)過嚴重的霧霾天氣??諝赓|(zhì)量消息成為人們關注的重點,也是逐漸通過網(wǎng)絡更新發(fā)布,參考文獻[1-2]中提出了針對空氣質(zhì)量監(jiān)測的專門的儀器裝置。一般情況下,雖然有專門儀器檢測空氣中的有害氣體,但普遍價格偏貴,測量耗費時間,便攜性不佳,某些儀器還需要專業(yè)人員操作,并且這些裝置的數(shù)據(jù)無法通過網(wǎng)絡在線查看。

  基于人們對健康生活的要求,需要一種人機交互簡單、攜帶方便、方便查看數(shù)據(jù)的空氣質(zhì)量監(jiān)測裝置,本文提出一種小巧方便的基于開源硬件的在線空氣質(zhì)量監(jiān)測系統(tǒng)。以開源硬件Arduino為核心,采用灰塵傳感器、有機物揮發(fā)氣體傳感器以及溫濕度傳感器作為數(shù)據(jù)采集,通過LCD模塊實現(xiàn)現(xiàn)場數(shù)據(jù)的顯示,并且通過以太網(wǎng)模塊將數(shù)據(jù)上傳至開放物聯(lián)網(wǎng)接入平臺,從而實現(xiàn)通過網(wǎng)頁或者手機端對空氣質(zhì)量數(shù)據(jù)的實時查看。

1 系統(tǒng)硬件設計

  本系統(tǒng)采用開源硬件Arduino為系統(tǒng)核心,配合DSM501灰塵傳感器、MS1100有機物揮發(fā)氣體傳感器、DHT22溫濕度傳感器、 ENC28J60以太網(wǎng)控制器、1602字符型液晶模塊實現(xiàn)了整個硬件系統(tǒng)的搭建。其硬件構(gòu)成如圖1所示。

001.jpg

  1.1 Arduino主控板

  Arduino是源自意大利的一個教學用開源硬件項目,其硬件系統(tǒng)是高度模塊化的,通過USB接口與計算機連接,包括14通道數(shù)字輸入/輸出,其中包括6通道PWM輸出、6通道10位ADC模擬輸入/輸出通道,電源電壓主要有5 V和3.3 V[3]。

  Arduino主控板采用ATMEGA328P-PU微處理控制器。ATmega328P是一款8位的AVR處理器,具有功耗低、性能高的特點。在核心控制板的外圍,有開關量輸入輸出模塊、各種模擬量傳感器輸入模塊、總線類傳感器的輸入模塊,還有網(wǎng)絡通信模塊。Arduino系統(tǒng)是基于單片機開發(fā)的,已有大量應用通用和標準的電子元器件,包括硬件和軟件在內(nèi)的整個設計,代碼均采用開源方式發(fā)布[4]。并且Arduino還提供了自己的開發(fā)語言,IDE開發(fā)環(huán)境支持Windows、Linux、Mac OS等主流操作系統(tǒng)。

  Arduino的硬件和軟件都是開源的,這就意味著任何人都可以自由地獲取代碼、圖表、設計。利用開源的設計方案,任何人也可以制作克隆板,并且可以根據(jù)自己的需求精簡系統(tǒng)控制成本。這種開放的精神促進了Arduino的蓬勃發(fā)展,有著大量的愛好者為其開發(fā)新的擴展板,并維護著豐富的第三方庫。

  1.2 灰塵傳感器

  空氣中的懸浮顆粒濃度是現(xiàn)今環(huán)境下影響空氣質(zhì)量的重要指標,灰塵傳感器的主要工作原理為在暗室中的空氣灰塵物質(zhì)被激光照射后,灰塵的濃度與光線散射強度成正比關系,通過光電感應傳感器即可將光強轉(zhuǎn)化為電流。

  本設計選用DSM501灰塵傳感器,該傳感器的測量精度可達到1 ?滋m,并可自動吸入空氣。其具體原理結(jié)構(gòu)如圖2所示。

002.jpg

  在灰塵傳感器內(nèi)部通過設置加熱板使氣流上升從而促進外部空氣流入模塊內(nèi)部,如有灰塵等粒子通過時,在透鏡的放大作用下阻斷發(fā)光二極管光源使得光電傳感器檢測不到光線,從而實現(xiàn)粒子計數(shù)。如果光電傳感器檢測不到光線,輸出低電平信號,反之輸出高電平信號,形成如圖3所示的PMW脈沖寬度調(diào)制信號。通過計算一定時間內(nèi)低電平脈沖的比例,參照特征曲線,即可以計算出空氣中的粒子數(shù)以及PM2.5的參數(shù)。

003.jpg

  1.3 揮發(fā)性有機化合物氣體傳感器

  揮發(fā)性有機化合物是指能參加大氣光化學反應的有機化合物。這種化合物對人體健康有著非常重大的影響,達到一定濃度時會直接傷害人體內(nèi)臟以及大腦與神經(jīng)系統(tǒng),所以是空氣質(zhì)量監(jiān)測的重要參數(shù)。

  MS1100采用了半導體式的揮發(fā)性有機化合物氣體傳感器,可直接輸出電平數(shù)據(jù)或者模擬信號,本設計中采用模擬信號輸出至Arduino。

  1.4 溫濕度傳感器

  為了提高測試的精確度,減少使用代碼校準,本設計使用了DHT22溫濕度傳感器。DHT22傳感器采用電容式感濕原件與NTC測溫元件并含有一個小型的8位單片機。傳感器在檢測信號處理過程中調(diào)用儲存在OTP內(nèi)存中的校準參數(shù),以單線制串行接口輸出已校準信號。

  DHT22與Arduino之間采用的進行通信和同步的數(shù)據(jù)格式為單總線型,在每次5 ms左右的通信時間內(nèi),發(fā)送數(shù)據(jù)量為40 bit,其中濕度數(shù)據(jù)為16 bit,溫度數(shù)據(jù)為16 bit,校驗和為8 bit。當Arduino發(fā)送一次開始信號后,本為節(jié)能模式的DHT22變?yōu)楦咚倌J?,Arduino發(fā)送完開始信號后,進入拉高等待狀態(tài),而DHT22收到Arduino發(fā)出的開始信號后則首先發(fā)出響應信號,在一段拉高時延后送出40 bit數(shù)據(jù),隨后開始新的一次數(shù)據(jù)采集。故Arduino收到的并不是實時的數(shù)據(jù),所以一般在程序中還需要刷新后再獲取數(shù)據(jù)。DHT22與Arduino通信的具體過程如圖4所示。

004.jpg

  1.5 以太網(wǎng)控制器

  相對于傳統(tǒng)的空氣質(zhì)量檢測裝置,本設計的重點是數(shù)據(jù)的網(wǎng)絡化,即如何在線查看空氣質(zhì)量情況。Arduino官方的以太網(wǎng)模塊為Wiznet W5100,對于Arduino的IDE所提供的Ethernet庫也是基于這個芯片。但是還有一種廣泛使用的以太網(wǎng)微型控制器,這種控制器體積更小,價格相對便宜,有著廣泛的第三方庫支持,ENC28J60與W5100的比較如圖5所示。不過W5100芯片集成了成熟的TCP/IP協(xié)議棧,節(jié)省了MCU資源。在本設計中考慮到成本與體積問題,采用了ENC28J60芯片。

005.jpg

  ENC28J60是一款常見的帶SPI接口的以太網(wǎng)控制器,符合IEEE802.3規(guī)范,采用包過濾機制以對傳入數(shù)據(jù)包進行限制,集成MAC和10BASE-T端口。ENC28J60通過內(nèi)部的直接存儲模塊實現(xiàn)對數(shù)據(jù)的快速吞吐并且可以對IP校驗和進行硬件支持。

  1.6 LCD顯示模塊

  雖然在線空氣質(zhì)量監(jiān)測系統(tǒng)的所有傳感器數(shù)據(jù)都可以通過網(wǎng)頁或者客戶端實時查看。但是在網(wǎng)絡故障的情況下,還有著本地查看的需求。在本設計中采用了LCD1602模塊。該模塊價格低廉,采用點陣式LCD,可以顯示數(shù)字、英文字符、符號。一共可以顯示16×2個字符,基本滿足本設計需要。

2 開放物聯(lián)網(wǎng)接入平臺

  物聯(lián)網(wǎng)作為近些年的信息技術(shù)的重要組成部分,其包含了兩層意思。一方面,物聯(lián)網(wǎng)只是傳統(tǒng)互聯(lián)網(wǎng)的延伸和擴展,其核心部分還是互聯(lián)網(wǎng);另一方面,物聯(lián)網(wǎng)把傳統(tǒng)互聯(lián)網(wǎng)的終端從電腦、手機等延伸到了任何可以進行信息通信的物品。

  物聯(lián)網(wǎng)雖然發(fā)展迅速,但是卻沒有統(tǒng)一的融合管理平臺。因此涌現(xiàn)出了眾多物聯(lián)網(wǎng)的接入平臺,可以使用戶不再關注部署和運營互聯(lián)網(wǎng),而是可以利用工具包直接處理傳感器數(shù)據(jù),支持用戶使用多種協(xié)議方式上傳符合標準格式的傳感器數(shù)據(jù),并且通過socket還能實現(xiàn)對傳感器設備的反向控制。

  本設計中選擇了Yeelink開放物聯(lián)網(wǎng)接入平臺。除了上述功能,Yeelink還實現(xiàn)了儀表盤交互、事件觸發(fā)、移動APP、社交等眾多功能,使整個系統(tǒng)有著強大的擴展性。

3 系統(tǒng)整合設計

  Arduino語言建立在C/C++基礎上,類似基礎的C語言,Arduino語言把AVR單片機相關的一些參數(shù)設置都函數(shù)化,使用戶不用去了解底層,而專心于解決問題[5]。

  本設計采用灰塵傳感器、有機物揮發(fā)氣體傳感器、溫濕度傳感器對室內(nèi)環(huán)境進行監(jiān)測,并將監(jiān)測信號發(fā)送至Arduino控制板;Arduino對數(shù)據(jù)進行處理之后通過LCD進行顯示,并通過以太網(wǎng)控制器模塊將數(shù)據(jù)上傳至物聯(lián)網(wǎng)平臺。

  Arduino程序必須包括setup()和loop()兩個函數(shù),其中setup()函數(shù)只在程序開始時使用,這個函數(shù)可以在主循環(huán)開始前為程序設定一些通用的規(guī)則,如初始化變量、管腳模式、調(diào)用庫函數(shù)等。loop()在setup()函數(shù)之后,即初始化之后,每一條loop()函數(shù)中的代碼都要執(zhí)行,并且按順序逐個執(zhí)行,直到函數(shù)的最后。然后loop()函數(shù)再次開始從頂部執(zhí)行,一直循環(huán)下去,主要使用它來運轉(zhuǎn)Arduino。

  3.1 傳感器數(shù)據(jù)處理

  DSM501灰塵傳感器將測量的數(shù)據(jù)轉(zhuǎn)化為PWM信號,但是該信號并不代表實際的空氣中的微型顆粒濃度,所以還需要對得到的低脈沖信號進行轉(zhuǎn)化。其中低脈沖率為總的低脈沖時間與單位采樣時間的比值。根據(jù)DSM501的特性曲線可以得到對應的粒子數(shù)為:

  Y=0.1776X3+0.24X2+94.003X(1)

  其中Y為粒子數(shù),X為低脈沖百分率。

  PM1.0的計算實現(xiàn)代碼為:

  float dsmTemp0=(sumTimeofLow10*100.0)/dsmStatTimes10;

  float dsmTemp10=0.1776*pow(dsmTemp0,3) - 0.24*pow

  (dsmTemp0,2) + 94.003*dsmTemp0;

  PM2.5的計算實現(xiàn)代碼為:

  dsmTemp0=(sumTimeofLow25*100.0)/dsmStatTimes25;

  dsmTemp25=0.1776*pow(dsmTemp0,3) - 0.24*pow

  (dsmTemp0,2) + 94.003*dsmTemp0;

  dsmTemp25=dsmTemp10-dsmTemp25;

  為了減小外部環(huán)境的干擾,本設計對計算得到的粒子數(shù)進行數(shù)字濾波處理。常用的濾波算法很多,但是由于系統(tǒng)資源有限,在設計中采用了算法簡單、運算速度快的遞推平均濾波算法。

  遞推平均濾波屬于平滑濾波,它將N個測量值放入暫存隊列區(qū)域,當獲取新的數(shù)據(jù)時,新測量的數(shù)據(jù)會插入隊尾并同時舍棄隊首的數(shù)據(jù),之后對新得到的N個數(shù)據(jù)做算術(shù)平均值。采用這種方式做N次的濾波運算比普通的算術(shù)平均值計算方法快N-1倍,其具體算法為:

  y(k)=[x(k)+x(k-1)+x(k-2)+…+x(k-N+1)]/N(2)

  其中y(k)為經(jīng)過平均濾波處理后的數(shù)據(jù),x(n)為第n次測量后得到的數(shù)據(jù)。

  Arduino的實現(xiàn)關鍵代碼為:

  uint16_t filteringDsm(uint8_t l,uint16_t _dsmData){

  filtSum[l] =filtSum[l]- filtDsm[l][filtI[l]];

  filtSum[l] =filtSum[l]+ _dsmData;

  filtDsm[l][filtI[l]] = _dsmData;

  filtI[l]=filtI[l]+1;

  if (filtI[l] >= FILT_N) filtI[l] = 0;

  return filtSum[l]/FILT_N;}

  其中N設置為10,數(shù)組元素的初始值均為0。

  3.2 數(shù)據(jù)在線監(jiān)測集成

  物聯(lián)網(wǎng)的構(gòu)架一般分為三個層次。最底層為可以采集、測量數(shù)據(jù)及被控制的儀器或設備,在本設計中為各種傳感器;上一層為將底層采集數(shù)據(jù)發(fā)給云端服務器或?qū)⒖刂菩盘柊l(fā)給底層的設備,在本設計中為Arduino控制板配合ENC28J60以太網(wǎng)控制器。該層的設備一方面要能與底層測量設備進行通信,另一方面要具備網(wǎng)絡功能;最上層為云端服務器,云端服務器可以存儲與分析數(shù)據(jù),并且用戶可以通過各種終端設備訪問數(shù)據(jù)庫,以實現(xiàn)基于數(shù)據(jù)的各種應用。

  物聯(lián)網(wǎng)平臺一般采用開放的API將傳感器及測量設備接入平臺。當用戶在物聯(lián)網(wǎng)平臺注冊后將會得到一個APIKey。在用戶管理界面還能添加新的設備與傳感器ID,物聯(lián)網(wǎng)平臺通過這些參數(shù)將傳感器的數(shù)據(jù)存儲到對應的云端數(shù)據(jù)庫之中。

  根據(jù)不同的物聯(lián)網(wǎng)平臺進行相應的數(shù)據(jù)格式化之后,通過ENC28J60傳感器的Ethercard庫的Stash函數(shù)實現(xiàn)數(shù)據(jù)的上傳。

  當傳感器數(shù)據(jù)成功上傳至云端服務器后,即可通過網(wǎng)頁查看實時數(shù)據(jù),實現(xiàn)對空氣質(zhì)量的在線監(jiān)測。

4 總結(jié)

  經(jīng)實驗證明,基于開源硬件的在線空氣質(zhì)量監(jiān)測系統(tǒng)運行穩(wěn)定。本文采用灰塵傳感器、有機物揮發(fā)氣體傳感器、溫濕度傳感器、Arduino控制板、LCD液晶顯示模塊、以太網(wǎng)控制模塊等共同構(gòu)建了監(jiān)測系統(tǒng)。該系統(tǒng)一方面可以通過LCD模塊在本地實時查看空氣質(zhì)量狀態(tài),另一方面可以通過網(wǎng)絡進行遠程查看。該系統(tǒng)小巧緊湊,操作方便,適合現(xiàn)代人們生活需求,具有市場潛力和開發(fā)價值。

  參考文獻

  [1] 鄧桂昌.室內(nèi)便攜式智能空氣品質(zhì)監(jiān)測儀的研究與設計[D].長春:吉林大學,2009.

  [2] 杜娟.便攜式現(xiàn)場甲醛檢測儀的設計[D].鄭州:鄭州大學, 2010.

  [3] OXER J,BLEMINGS H.Practical Arduino:cool projects foropen source hardware[M].New York:SpringerVerlag,2009:1-10.

  [4] 楊繼志,楊宇環(huán).基于Arduino的網(wǎng)絡互動產(chǎn)品創(chuàng)新設計[J].機電產(chǎn)品開發(fā)與創(chuàng)新,2012,25(1):99-100,60.

  [5] 蔡睿妍.Arduino的原理及應用[J].電子設計工程,2012,(16):155-157.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。