“可悲的是,以進步的名義,我們污染了空氣、水、土壤和我們吃的食物”。因此,由于污染,現在監測空氣質量非常重要。為了設計空氣質量監測系統,我們需要耐用可靠的空氣質量傳感器。雖然空氣質量參數很多,但最重要的是二氧化碳和TVOC。因此,為了檢測二氧化碳和TVOC,我們使用CCS811空氣質量傳感器。
在本教程中,我們將向您展示如何使用帶有Arduino的CCS811空氣質量傳感器來檢測TVOC和CO2。此外,您還將學習將CSS811與Arduino連接。
所需材料
Arduino UNO
CCS811 空氣質量傳感器
電位器 (10k)
液晶屏 16*2
面包板
連接線
電路圖
CCS811 空氣質量傳感器
CCS811空氣質量傳感器是一款超低功耗數字氣體傳感器,它集成了MOX(金屬氧化物)氣體傳感器,可通過集成MCU(微控制器單元)檢測各種VOC(揮發性有機化合物),以進行室內空氣質量監測。MCU由ADC(模數轉換器)和I2C接口組成。它基于艾邁斯半導體獨特的微加熱板技術,可為氣體傳感器提供高度可靠的低功耗解決方案。
在我們的電路中,我們使用這種傳感器來檢測環境中可用的TVOC和CO2,并在16 * 2 LCD上顯示數據。
引腳配置
引腳編號 | 引腳名稱 | 描述 |
1 | 文 | 輸入電源(3.3V至5V) |
2 | 3V3 | 3.3V輸出引腳供外部使用 |
3 | 格德 | 地 |
4 | 自主權評估 | 這是 I2C 時鐘引腳 |
5 | 標準及校正實驗所 | I2C 數據引腳 |
6 | 喚醒 | 傳感器的喚醒引腳,應接地以便與傳感器通信 |
7 | RST | 復位引腳:接地時,傳感器自行復位 |
8 | 國際 | 這是中斷輸出引腳,用于檢測新讀數何時準備就緒或讀數何時過高或過低 |
應用
可穿戴設備
家庭和樓宇自動化
輔料
#include
#include "Adafruit_CCS811.h"
下面我們定義了用于將16 * 2 LCD與Arduino連接的引腳。
LiquidCrystal lcd(12, 13, 8, 9, 10, 11); /// REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN
Adafruit_CCS811 ccs;
下面我們設置了LCD和CCS811空氣質量傳感器,并將其校準為顯示正確的溫度,如下面的代碼所示,
void setup() {
lcd.begin(16, 2);
ccs.begin();
//calibrate temperature sensor
while(!ccs.available());
float temp = ccs.calculateTemperature();
ccs.setTempOffset(temp - 25.0);
}
在下面的代碼中,我們使用函數“ccs.available()”(函數已經在庫中定義)來檢查是否有一些數據。當我們獲得數據時,我們能夠計算溫度并將其顯示在 16*2 LCD 上。
此外,如果 CCS 可用并且 ccs.readData() 返回 false,那么我們使用函數 ccs.geteCO2() 獲得 CO2 值,使用 ccs.getTVOC() 獲取 TVOC 值,如下面的代碼所示。 因此,我們收到了使用CCS811空氣質量傳感器的空氣質量參數值。
void loop() {
if(ccs.available()){
float temp = ccs.calculateTemperature();
if(!ccs.readData()){
int co2 = ccs.geteCO2();
int tvoc = ccs.getTVOC();
lcd.setCursor(0, 0);
lcd.print(String ("CO2:")+ String (co2)+String(" PPM"));
lcd.setCursor(0, 1);
lcd.print(String ("TVOC:")+ String (tvoc)+String(" PPB "));
lcd.print(String("T:"+String (int(temp)))+String("C"));
delay(3000);
lcd.clear();
}
else{
lcd.print("ERROR");
while(1);
}
}
}
完整的Arduino代碼如下。代碼很簡單,所有工作都由其庫本身完成,我們使用 CCS 庫中定義的函數來獲取 CO2 和 TOVC 的值。
#include
#include "Adafruit_CCS811.h"
LiquidCrystal lcd(12, 13, 8, 9, 10, 11); /// REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN
Adafruit_CCS811 ccs;
void setup() {
lcd.begin(16, 2);
ccs.begin();
//calibrate temperature sensor
while(!ccs.available());
float temp = ccs.calculateTemperature();
ccs.setTempOffset(temp - 25.0);
}
void loop() {
if(ccs.available()){
float temp = ccs.calculateTemperature();
if(!ccs.readData()){
int co2 = ccs.geteCO2();
int tvoc = ccs.getTVOC();
lcd.setCursor(0, 0);
lcd.print(String ("CO2:")+ String (co2)+String(" PPM"));
lcd.setCursor(0, 1);
lcd.print(String ("TVOC:")+ String (tvoc)+String(" PPB "));
lcd.print(String("T:"+String (int(temp)))+String("C"));
delay(3000);
lcd.clear();
}
else{
lcd.print("ERROR");
while(1);
}
}
}
-
CO2
+關注
關注
1文章
38瀏覽量
11982 -
質量傳感器
+關注
關注
0文章
4瀏覽量
5665 -
Arduino
+關注
關注
188文章
6469瀏覽量
186960
發布評論請先 登錄
相關推薦
評論