【知識教學文】自己的空氣感測器自己做!

文章推薦指數: 80 %
投票人數:10人

硬體接線. 統合以上三個感測器的通訊界面,需要使用到2組UART(PMS3003和MH-Z16)與1隻數位輸出腳(DHT22)。

然而Linkit7697 UART(另開新視窗)除了原本上傳程式碼與除 ... 跳到主要內容區 ::: >基地動態>產業文章 產業文章 【知識教學文】自己的空氣感測器自己做! 發佈日期:2018-09-21 瀏覽人數:1653 空氣汙染一直都是國人長期關心的議題之一,不少醫學文獻也點出,長期處於惡劣的空氣環境對健康所造成的危害匪淺。

目前除了能在各地區所設立的空氣品質量測站獲取空氣品質資訊以外,也有不少專案專注在此領域上(如LASS(另開新視窗))。

然而即便了解室外空氣品質的概況,但室內空氣品質(IndoorAirQuality,IAQ)對於不同地區、不同建築物、甚至不同的室內空間都會有所差異。

行政院環保署也有頒布室內空氣品質標準,對於人體有害之氣體與空氣汙染指標訂定了規範,如二氧化碳(CO2)八小時平均值超過1000ppm,2.5微米之細懸浮微粒(PM2.5)二十四小時平均值超過35ug/m3等,即是達到了空氣污染的標準。

若是在辦公室、展場等公共場所超標,甚至還可以舉發開罰! 本篇則是以室內空氣品質監測為目標實作物聯網專案,利用Maker易取得的開發板與各類感測器,完成一個IAQ監測系統。

土炮Linkit7697室內空氣感測器專案所需元件列表如下: Linkit7697物聯網開發板(另開新視窗) 亞堤Linkit7697擴充板(或可用麵包板取代) DHT22溫濕度感測器(另開新視窗) PMS3003PM2.5感測器(另開新視窗) MH-Z16CO2感測器(另開新視窗) 小紙箱(選擇性,做外殼用)   室內溫濕度感測 室內溫濕度感測器最常使用的約莫就是DHT11/22這系列了,這系列都是數位輸出,減少類比讀數上面的誤差。

而其中DHT22的精度更高,溫度誤差在±0.5℃以內,濕度誤差在±2%RH。

最重要的是性價比非常優秀且容易取得。

DHT22通訊介面是其專有的onewire協定,僅透過一隻腳即可進行觸發後接收其溫濕度資料,優點是接線方便容易,缺點則是此協定並不與其他廠家產品相容。

DHT22溫濕度感測器外觀與其引腳   PM2.5細懸浮微粒感測 PM2.5感測部分就承前人之果,使用較多專案採用的攀藤PMS3003(G3)這款PM2.5感測器,內部使用風扇進氣,雷射感測懸浮微粒精確度較高,甚至可量測PM10、PM2.5與PM1.0等多種懸浮粒子。

當然除了PMS3003之外也有不同類型的感測器可選擇,如SHARP的GP2Y1051AU0F或是Shinyei的PPD42NS等,但此類的感測使用的是引流加熱電阻與紅外線感測,相比之下雖然價格略為便宜但精準度卻都不及PMS3003。

PMS3003提供的通訊界面是UART(UniversalAsynchronousReceiver/Transmitter,非同步串列傳輸),會依序將PM1.0、PM2.5與PM10的數據傳遞出來。

PMS3003的引腳示意圖(source: amebaiot(另開新視窗))   CO2二氧化碳感測 在室內環境中還有一個重要的氣體指標,就是二氧化碳CO2了。

若在二氧化碳濃度較高的環境下,不但容易感覺身體不適,時間久了也會對人體造成傷害。

然而相較於前兩種比較常見的感測器,二氧化碳CO2感測器則較少人來做使用與感測,主要原因除了不易取得外,價格也是比較高的。

這邊所選用的是輝盛(Winsen)MH-Z16二氧化碳感測模組,其特性是高靈敏度、響應時間快、輸出線性、響應氣體單一,感測範圍為0~2000ppm,適合在一般室內空間量測。

傳統的電化學氣體感測器(如MQx系列),通常都會對兩種氣體以上響應,且反應時間久需要一定時間加熱後才準確。

而MH-Z16採用NDIR(NonDispersiveInfrared,非散色紅外線)感測,最大的優點是可以設計成僅針對單一氣體作響應,不會受到其他氣體濃度影響讀值,且對於溫濕度影響也較小,使用壽命也較長。

同時MH-Z16也有內建溫度的感測,主要用意是可以依據不同的環境溫度作溫度補償的參考,但我們已有專用的溫濕度感測器DHT22,所以就不取MH-Z16的溫度了。

MH-Z16提供的介面有PWM(PulseWidthModulation,脈衝寬度調變)與UART兩種形式,PWM輸出會依照目前感測的不同二氧化碳濃度改變DutyCycle,藉由轉換公式得到正確的感測值;而UART則是直接將二氧化碳濃度藉由UART傳遞。

這邊我們為了避免轉換誤差,則直接使用UART介面作資料傳輸。

MH-Z16外觀   MH-Z16引腳示意圖   硬體接線 統合以上三個感測器的通訊界面,需要使用到2組UART(PMS3003和MH-Z16)與1隻數位輸出腳(DHT22)。

然而Linkit7697UART(另開新視窗)除了原本上傳程式碼與除錯腳位UART0(TX:1,RX:0),僅剩下另一組原生的硬體UART1(TX:6,RX:7)。

在不想要捨棄除錯資訊的情況下,就必須要使用SoftwareSerial(另開新視窗)功能,用一般的數位腳位來模擬UART使用。

在使用Linkit7697SoftwareSerial時必須注意一點,就是RX腳必須為Pin2或Pin3這兩隻其中一隻,因為這兩隻才支援EINT(ExternalInterrupt,外部觸發中斷)功能,順利將資料收進來。

(接線的細節請參照下方的接線對照表。

) DHT22接線對照表 PMS3003接線對照表 MH-Z16接線對照表 Arduino程式碼 此程式碼皆可於github(另開新視窗)上的檔案庫(repository)取得,下載到電腦後即可進行編譯。

編譯程式碼之前須要先安裝相依第三方Arduino函式庫(library),清單如下: SimpleDHT(測試版本1.0.6) PMSLibrary(測試版本1.0.0) 程式碼重點提示: Line13~15:定義了CO2、PM2.5與溫濕度的功能,如果沒有其中特定的硬體,可以把後面的1改為0,將該感測器功能關閉。

Line17~21:定義了感測器的接線到Linkit7697的pin腳位,如果接線的方式有所不同,這裡需要跟著修改。

Line28~29:所要放置場域的Wi-FiSSID與密碼,務必修改。

Line31~32:定義MCS的裝置ID與裝置KEY,每個裝置都會有唯一的ID跟KEY值,務必要修改成自己建立的測試裝置。

下一個段論會說明如何建立。

MCS物聯網平台設定 接下來要把感測器數據上傳到雲端之前,必須要先建立好物聯網平台的設定,這邊使用MCS(MiediatekCloudSandbox)為例子。

一個好的物聯網平台除了可以穩定的儲存長期資料,查詢歷史紀錄,並且可以訂定警戒門檻值(threshold),在超出設定範圍時即時發送推播訊息。

本專案總共會感測的空氣指標分別是:溫度、濕度、二氧化碳與細懸浮微粒。

在MCS上建立原型(Prototype)後,依序建立這幾個資料通道,注意通道ID與數值類型如果錯了可能就會造成無法正確顯示。

完成原型設定之後建立一個測試裝置,將測試裝至的MCSID與KEY貼到程式中即可完成測試裝置的連接。

若資料順利上傳到MCS,在測試裝置的頁面會看到數值的更新,以及下方的最後資料點時間也會隨之更新。

建立MCS原型(prototype)   資料通道(datachannel)對應表 建立測試裝置   各資料通道的歷史折線圖   土炮外殼 外殼部分現階段因為還沒有強度與佈署的考量,暫不使用3D列印外殼。

考量為了試作的方便與材料容易取得,我們拿了生活中隨手可得的小紙盒,簡單的切割後作為外殼使用。

筆者因為方便取得MiniPlanRobotShield的包裝小紙盒,而各位Maker也可以自行尋找家中大小合適的紙盒來作改造。

先將所有零組件擺放在紙盒中,自行配置好適宜的擺放位置,因為諸如PMS3003與MH-Z16感測元件需要有外部的氣流,所以要對其風扇或感測部件進行開孔,此外Linkit7697的USB插孔與按鍵開關等必要的介面也要一併開孔。

完成開孔後則將所有元件擺放至紙盒內,再使用熱熔膠加以固定,這樣就可以牢牢固定住了! 使用MiniplanRobotShield包裝紙盒作外殼   擺放零組件調整合適的位子   挖孔後將需要露出的感測器放置於外部   完成後的外觀   結論 本篇雖然僅是一個簡單的物聯網感測器專案,但除了可以量測本身所處的室內空間實際的空氣品質外,還可以學習到如何串接整個物聯網架構,對於物聯網的入門者或是學習者希望能有一些幫助。

當然,各位都是Maker,以上的步驟各位可以依照實際的情況進行改造或是置換。

Havefunandenjoy!   歡迎加入AIoT/AR/VR主題論壇 (作者:AIoT/AR/VR主題論壇版主Felix;責任編輯:葉佳錚) 返回



請為這篇文章評分?