有幾個模塊 電子傳感器 對於您的 DIY 項目非常有趣,從那些可以測量輻射的項目到一些測量空氣質量的設備,甚至是氣體探測器。 在本文中,我們將深入研究一個用於 測量空氣質量,並找出您周圍環境中的空氣是否相當乾淨或是否有任何類型的高度污染。
這些類型的元素被某些人使用 空氣淨化系統 知道何時應該自動激活它們以過濾空氣,或在許多其他應用程序中測量城市的污染等。 在這裡您可以了解這個設備是什麼,如何使用它,以及如何將它與 你的arduino板.
測量空氣質量和二氧化碳的傳感器
有幾種類型的 用於測量空氣質量的氣體探測器或傳感器. CCS811 是最實惠和最受歡迎的一款,它可以內置到模塊中,以便與 Arduino 一起使用。 借助該設備,可以測量室內空氣的質量,並了解空氣質量是否良好,或者是否被二氧化碳或二氧化碳、一氧化碳或一氧化碳以及揮發性化合物或揮發性有機化合物等污染過多如乙醇、胺或芳香烴。
多虧一點 多氣裝置. 顆粒物的測量範圍可以從 400 到 8192 ppm(CO2 的百萬分之一,或 VOC 化合物的 0 到 1187 ppb(十億分之一)。但是,您應該了解您所購買的傳感器的具體型號的詳細信息使用製造商提供的數據表。
與其他化學傳感器一樣,在這種情況下需要預熱。 換句話說,它應該在至少 20 分鐘(如果位置發生變化,最多 48 小時)之前啟動,以便讀數是真實的,並且 測量穩定. 否則,第一次測量可能是完全錯誤的。
模塊不僅包括 CCS811,它們還集成了 ADC 轉換器、執行計算的內部處理器和通過 I2C 總線傳輸的通信元件,這樣 Arduino 等板可以在獲得某些值時解釋它們或執行一些操作。
除了電源電壓範圍為 1.8 到 3.3v 之外,了解該模塊的引腳分配也很重要,儘管有些模塊可以實現適配器,以便您可以將它們連接到 Arduino 的 5V 輸出。 另外,也方便你知道你有 5種測量模式:
- 連續測量
- 每 0.250 秒測量一次
- 每 1 秒測量一次
- 每 10 秒測量一次
- 每 60 秒測量一次
您 根據您的需要進行調整. 請記住,連續測量模式是消耗最多的一種,而低頻模式則消耗較少,60s 是最節省的一種。 因此,如果要使用電池供電,您可能需要將模式設置為 10 或 60,這樣它就不會很快耗盡。
關於 引腳:
- VDC:電源
- GND:地
- I2C:通信
- SCL
- SDA
- WAK (WakeUp):連接到 GND 時喚醒模塊
- RST:如果連接到 GND 則復位
- INT:在某些模式下用於檢測傳感器是否進行新檢測或超過某些閾值
哪裡買
如果你想得到一個 空氣質量測量模塊 與 Arduino 兼容並且價格便宜,您可以在一些專門銷售電子產品的商店或亞馬遜等大型平台上找到它。 以下是一些購買建議:
如何將傳感器與 Arduino 集成以測量空氣質量
現在 將模塊與您的電路板集成以測量空氣質量 Arduino UNO 並開始嘗試它,您可以像這樣連接它:
- VCC 可以連接到 Arduino 的 5V。 *如果它接受那個電壓,如果它需要更低的電壓,你應該使用正確的電壓,以免損壞它。 如果沒有,您可以使用 Arduino 3v3。
- GND 連接到 GND。
- SCL 是模擬輸入連接,例如 A5。
- SDA 將轉到另一個模擬輸入連接,例如 A4。
- 本例中的 WAK 也將連接到 GND。
- 對於這個例子,其他的不是必需的。
至於 Arduino IDE的代碼,您可以使用 Adafruit 開發的 CCS811 庫 你可以從這裡下載和安裝 在您的 Arduino IDE 中,使用以下代碼,您可以使用傳感器進行第一次讀數以測量空氣質量:
#include "Adafruit_CCS811.h" Adafruit_CCS811 ccs; void setup() { Serial.begin(9600); Serial.println("CCS811 test"); if(!ccs.begin()){ Serial.println("¡Fallo al iniciar el sensor! Por favor, revisa las conexiones."); while(1); } //Espera a que el sensor esté listo. while(!ccs.available()); } void loop() { if(ccs.available()){ if(!ccs.readData()){ Serial.println(ccs.calculateTemperature();); Serial.print("ºC, CO2: "); Serial.print(ccs.geteCO2()); Serial.print("ppm, TVOC: "); Serial.println(ccs.getTVOC()); } else{ Serial.println("¡ERROR!"); while(1); } } delay(500); }