文章類型
開發平台
解決方案
關注主題
文章類型
開發平台
解決方案
關注主題

【Tutorial】自己的室內空氣感測器自己做!

作者:Felix Lin

空氣汙染一直都是國人長期關心的議題之一,不少醫學文獻也點出,人體若長期處於惡劣的空氣環境,對健康會所造成不小的危害。目前,除了在各地區所設立的空氣品質量測站以外,也有不少專案專注在此領域上,如:LASS-開源公益環境感測網路

然而,即便了解室外空氣品質的概況,那室內空氣品質(Indoor Air Quality、IAQ)呢?在不同地區、不同建築物、甚至不同的室內空間都會有所差異。行政院環保署頒布室內空氣品質標準,對於人體有害之氣體與空氣汙染指標訂定了規範,如二氧化碳(CO2)八小時平均值超過1000 ppm等,即是達到了空氣污染的標準。若是在辦公室、展場等公共場所超標,甚至還可以舉發開罰!

本篇則是以室內空氣品質監測為目標實作物聯網專案,利用Maker易取得的開發板與各類感測器,完成一個IAQ監測系統。

土炮 Linkit 7697 室內空氣感測器專案所需元件如下:

  • Linkit 7697 物聯網開發板
  • 亞堤Linkit 7697擴充板(或可用麵包板取代)
  • DHT22溫濕度感測器
  • PMS3003 PM2.5 感測器
  • MH-Z16 CO2 感測器
  • 小紙箱(選擇性,做外殼用)

室內溫濕度感測

室內溫濕度感測器最常使用的約莫就是DHT11/22這系列了,這系列都是數位輸出,減少類比讀數上面的誤差。而其中DHT22的精度更高,溫度誤差在±0.5℃以內,濕度誤差在±2%RH。最重要的是性價比非常優秀且容易取得。DHT22通訊介面是其專有的one wire協定,僅透過一隻腳即可進行觸發後接收其溫濕度資料。優點是接線方便容易,缺點則是此協定並不與其他廠家產品相容。

DHT22溫濕度感測器外觀與其引腳

PM2.5細懸浮微粒感測

PM2.5感測部分就承前人之果,使用較多專案採用的攀藤PMS3003(G3)這款PM2.5感測器,內部使用風扇進氣,雷射感測懸浮微粒精確度較高,甚至可量測PM10、PM2.5與PM1.0等多種懸浮粒子。當然,除了PMS3003之外也有不同類型的感測器可選擇,如:SHARP 的GP2Y1051AU0F或是Shinyei的PPD42NS等,但此類的感測使用的是引流加熱電阻與紅外線感測,雖然價格略為便宜但精準度卻都不及PMS3003。

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

PMS3003的引腳示意圖(source: amebaiot)

CO2二氧化碳感測

在室內環境中,還有一個重要的氣體指標,就是二氧化碳CO2了。若在二氧化碳濃度較高的環境下,不但容易感覺身體不適,時間久了也會對人體造成傷害。然而相較於前兩種比較常見的感測器,二氧化碳CO2感測器則較少人來做使用與感測,除了不易取得外,價格也是比較高的。

這邊所選用的是輝盛(Winsen)MH-Z16二氧化碳感測模組,其特性是高靈敏度、響應時間快、輸出線性、響應氣體單一,感測範圍為0~2000ppm,適合在一般室內空間量測。傳統的電化學氣體感測器(如MQx系列),通常都會對兩種氣體以上響應,且反應時間久需要一定時間加熱後才準確。

 

MH-Z16外觀

而MH-Z16採用NDIR(Non Dispersive Infrared,非散色紅外線)感測,最大的優點,是可以設計成僅針對單一氣體作響應,不會受到其他氣體濃度影響讀值,且對於溫濕度影響也較小,使用壽命也較長。同時,MH-Z16也有內建溫度的感測,是可以依據不同的環境溫度作溫度補償的參考,但我們已有專用的溫濕度感測器DHT22,所以就不取MH-Z16的溫度了。

MH-Z16提供的介面有PWM(Pulse Width Modulation,脈衝寬度調變)與UART兩種形式,PWM輸出會依照目前感測的不同二氧化碳濃度改變Duty Cycle,藉由轉換公式得到正確的感測值;而UART則是直接將二氧化碳濃度藉由UART傳遞。為了避免轉換誤差,則直接使用UART介面作資料傳輸。

MH-Z16引腳示意圖

硬體接線

統合以上三個感測器的通訊界面,需要使用到2組UART(PMS3003和MH-Z16)與1隻數位輸出腳(DHT22)。然而,Linkit7697 UART 除了原本上傳程式碼與除錯腳位UART0(TX:1,RX:0),僅剩下另一組原生的硬體UART1(TX:6,RX:7)。在不想要捨棄除錯資訊的情況下,就必須要使用Software Serial功能,用一般的數位腳位來模擬UART使用。

在使用Linkit7697 Software Serial時必須注意一點,就是RX腳必須為Pin 2或Pin 3這兩隻其中一隻,因為這兩隻才支援EINT(External Interrupt,外部觸發中斷)功能,順利將資料收進來。(接線的細節請參照下方的接線對照表。)

DHT22接線對照表

Linkit7697

DHT22

Pin 5

SDA

任意 GND

GND

任意 5V

VCC

PMS3003接線對照表

Linkit7697

PMS3003

Pin 6

TX

Pin 7

RX

任意 GND

GND

任意 5V

VCC

MH-Z16接線對照表

Linkit7697

MH-Z16

Pin 4

TX

Pin 3

RX

任意 GND

GND

任意 3.3V

VCC

Arduino程式碼

此程式碼皆可於github上的檔案庫(repository)取得,下載到電腦後即可進行編譯。編譯程式碼之前須要先安裝相依第三方Arduino函式庫(library),清單如下:

  • SimpleDHT (測試版本 1.0.6)
  • PMS Library (測試版本 1.0.0)

程式碼重點提示:

  • Line13~15:定義了CO2、PM2.5與溫濕度的功能,如果沒有其中特定的硬體,可以把後面的1改為0,將該感測器功能關閉。
  • Line 17~21:定義了感測器的接線到Linkit 7697的pin腳位,如果接線的方式有所不同,這裡需要跟著修改。
  • Line 28~29:所要放置場域的Wi-Fi SSID與密碼,務必修改。
  • Line 31~32:定義MCS的裝置ID與裝置KEY,每個裝置都會有唯一的ID跟KEY值,務必要修改成自己建立的測試裝置。下一個段論會說明如何建立。

MCS物聯網平台設定

接下來,要把感測器數據上傳到雲端之前,必須要先建立好物聯網平台的設定。這邊使用MCS(Miediatek Cloud Sandbox)為例子。一個好的物聯網平台,除了可以穩定的儲存長期資料、查詢歷史紀錄,並且可以訂定警戒門檻值(threshold),在超出設定範圍時即時發送推播訊息。

本專案總共會感測的空氣指標分別是:溫度、濕度、二氧化碳與細懸浮微粒。在MCS上建立原型(Prototype)後,依序建立這幾個資料通道,注意通道ID與數值類型,如果錯了可能就會造成無法正確顯示。完成原型設定之後建立一個測試裝置,將測試裝至的MCS ID與KEY貼到程式中即可完成測試裝置的連接。

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

建立MCS原型(prototype)

資料通道(data channel)對應表

空氣指標 名稱 通道ID 數值類型 單位
溫度 任意 temperature Float 攝氏
濕度 任意 humidity Float 百分比
二氧化碳 任意 co2 Integer ppm
細懸浮微粒 任意 pm25 Integer ug/m3

建立測試裝置

各資料通道的歷史折線圖

土炮外殼

外殼部分現階段因為還沒有強度與佈署的考量,暫不使用3D列印外殼。考量為了試作的方便與材料容易取得,我們拿了生活中隨手可得的小紙盒,簡單的切割後作為外殼使用。

先將所有零組件擺放在紙盒中,自行配置好適宜的擺放位置,如PMS3003與MH-Z16感測元件需要有外部的氣流,所以要對其風扇或感測部件進行開孔。此外,Linkit 7697的USB插孔與按鍵開關等,必要的介面也要一併開孔。完成開孔後,則將所有元件擺放至紙盒內,再使用熱熔膠加以固定,這樣就可以牢牢固定住了!

擺放零組件調整合適的位子

挖孔後將需要露出的感測器放置於外部

完成後的外觀

結論

本篇雖然僅是一個簡單的物聯網感測器專案,但除了可以量測本身所處的室內空間實際的空氣品質外,還可以學習到如何串接整個物聯網架構,對於物聯網的入門者或是學習者希望能有一些幫助。當然,各位都是Maker,以上的步驟各位可以依照實際的情況進行改造或是置換。

(本文轉載自南科AI_ROBOT自造基地原文連結;責任編輯:葉于甄)

Lin Felix

Lin Felix

長期出沒在南部地區的Maker社群,致力於推廣從實作中學習的精神。熱愛胡搞瞎搞,喜歡嘗試新事物。現職為亞堤教育團隊講師與創客閣樓召集人。
Lin Felix

上一篇: | 下一篇:

468 ad

3 Comments

  1. 您好,請問若要偵測某特定氣體【非常見之二氧化碳…等】適用同一個偵測零件嗎?還是需要更換?謝謝

    Post a Reply
    • Lin您好:
      有關於技術的問題,我們已經將您的問題轉告給作者囉~
      再麻煩您等等了
      謝謝您:)

      MakerPRO 編輯部

      Post a Reply
    • 哈囉Lin 您好:
      作者這邊提供了答復喲:「需要依據所需要偵測的氣體,去做感測器的選用喔!以本篇來說二氧化碳感測器只對二氧化碳敏感,如需其他氣體的感測,如一氧化碳、甲醛等,就須跟換不同的感測器喔。」

      Post a Reply

我想回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

成城共創股份有限公司版權所有、轉載必究.Copyright(c) 2017 MakerPRO