Trong hướng dẫn này, mình sẽ kết nối Cảm biến khí CO2 & TVOC CCS811 với Arduino & đo CO2 & TVOC trong không khí. CCS811 là cảm biến khí kỹ thuật số có khả năng cảm biến nhiều loại Hợp chất hữu cơ dễ bay hơi (TVOC) & carbon dioxide tương đương (eCO2) với mức oxit kim loại (MOX) . Do đó, chúng ta có thể sử dụng cảm biến này để xác định chất lượng không khí xem không khí có trong lành để thở hay không. Bạn cũng có thể kiểm tra Cảm biến chất lượng không khí SPG30 tương tự như CCS811.
Thành phần cần thiết
Liên kết mua Cảm biến khí CCS811 cùng với tất cả các thành phần cần thiết khác được đưa ra bên dưới.
SN | Tên thành phần | Số lượng |
---|---|---|
1 | Arduino Nano | 1 |
2 | Cảm biến CO2 TVOC CCS811 | 1 |
3 | Màn hình OLED I2C 0,96" | 1 |
4 | Dây kết nối | 10 |
5 | Breadboard | 1 |
Mô-đun cảm biến khí chất lượng không khí CCS811
Tổng quan
Cảm biến CCS811 |
Bảng mạch phân tích cảm biến chất lượng không khí CCS811 là một cảm biến khí kỹ thuật số có thể cảm nhận nhiều loại hợp chất hữu cơ dễ bay hơi (TVOC) cùng với mức carbon dioxide (eCO2) và oxit kim loại (MOX) tương đương . Cảm biến có thể được sử dụng để giám sát chất lượng không khí trong nhà . Hệ thống có thể được sử dụng với một bộ vi điều khiển (MCU), bao gồm bộ chuyển đổi Analog-to-Digital (ADC) và giao diện I²C .
Bạn có thể kết nối CCS811 với Arduino hoặc bất kỳ bộ vi điều khiển nào khác, bạn sẽ nhận được giá trị Tổng hợp chất hữu cơ dễ bay hơi (TVOC) và giá trị carbon dioxide tương đương (eCO2). CCS811 hỗ trợ các thuật toán thông minh để xử lý các phép đo cảm biến thô để đưa ra giá trị TVOC hoặc mức CO2 tương đương (eCO2). Cảm biến có thể hỗ trợ nhiều chế độ đo như chế độ tiêu thụ điện năng thấp & chế độ nhàn rỗi để kéo dài tuổi thọ pin trong các ứng dụng di động.
Cảm biến này đo nồng độ eCO2 trong phạm vi từ 400 đến 8192 phần triệu (ppm) và nồng độ TVOC trong phạm vi từ 0 đến 1187 phần tỷ (ppb) . Ngoài ra, nó còn có thể phát hiện Rượu, Anđehit, Xeton, Axit hữu cơ, Amin, Hydrocacbon béo và thơm. Bạn có thể xem qua Bảng dữ liệu CCS811 để tìm hiểu thêm về kiến trúc và cấu tạo của nó.
Đặc điểm của cảm biến
- MCU tích hợp
- Điện áp hoạt động: 1.8V đến 3.6V
- Giao tiếp I²C tiêu chuẩn với Địa chỉ I2C là 0x5A hoặc 0X5B
- Tiêu thụ điện thấp nên có thể sử dụng pin
- Gói LGA 2,7mm x 4,0mm x 1,1mm
- Số lượng thành phần thấp
- Nền tảng công nghệ đã được chứng minh, nhỏ gọn và tiết kiệm
- Phạm vi đo eCO2: 400 đến 8192ppm
- Phạm vi đo TVOC: 0 đến 1187ppb
- Nhiều chế độ lái để đo lường sau mỗi 1 giây, 10 giây, 60 giây hoặc sau mỗi 250ms
- Khả năng tương thích của Arduino và CircuitPython
- ADC 12 bit tích hợp để đọc cảm biến và chuyển đổi số hóa
- Kiểm soát đặt lại / ngắt
Cấu hình chân CCS811
- VCC – Đây là chân nguồn. Cảm biến sử dụng 3,3V để cấp nguồn cho bo mạch.
- GND – Đất chung cho nguồn và logic.
- SCL – Đây là chân xung nhịp I2C được kéo đến VCC thông qua điện trở 10K.
- SDA – Đây là chân dữ liệu I2C được kéo đến VCC thông qua điện trở 10K.
- WAKE – Đây là chân đánh thức cho cảm biến. Nó cần được kéo đến GND để giao tiếp với cảm biến. Kéo đường này lên cao hoặc VCC sẽ đưa cảm biến vào chế độ ngủ.
- INT – Đây là chân đầu ra ngắt. Đây là logic 3V và người ta có thể sử dụng nó để phát hiện khi nào một giá trị đọc mới đã sẵn sàng hoặc khi giá trị đọc quá cao hoặc quá thấp.
- RST – Đây là chân Reset. Khi được kéo xuống GND, cảm biến sẽ tự đặt lại.
- ADD – Bit chọn địa chỉ đơn để cho phép chọn địa chỉ thay thế. Khi ADDR ở mức thấp, địa chỉ I²C 7 bit là thập phân 90/hex 0x5A. Khi ADDR ở mức cao, địa chỉ I²C 7 bit là thập phân 91/hex 0x5B.
Hướng dẫn sử dụng cảm biến khí CCS811 với Arduino?
Bây giờ chúng ta hãy kết nối Cảm biến khí chất lượng không khí CCS811 với Arduino và đo CO2 & TVOC. Để thực hiện, hãy kết nối theo sơ đồ mạch dưới đây.
Sơ đồ kết nối CCS811 với Arduino |
Kết nối chân Vin & GND của CCS811 với chân 3.3V & GND của Arduino. Không cấp nguồn cho cảm biến bằng 5V vì cảm biến chỉ có thể hỗ trợ tối đa 3.6V . Kết nối chân SDA & SCL của cảm biến với chân Arduino A4 & A5 tương ứng. Kết nối chân WAKE của CCS811 với GND. Không để chân WAKE trống vì bộ điều khiển sẽ không đọc được Địa chỉ I2C.
Cài đặt thư viện Arduino CCS811
Thư viện CCS811 được sử dụng để giao tiếp CCS811 Sensor với Arduino. Thư viện được viết bởi cả Adafruit và Sparkfun. Bạn có thể sử dụng bất kỳ thư viện nào. Liên kết tải xuống cho cả hai thư viện được cung cấp bên dưới.
- Tải xuống: Thư viện CCS811 Adafruit
- Tải xuống: Thư viện CCS811 Sparkfun
Bạn cũng có thể tải xuống các thư viện này từ trình quản lý thư viện. Cả hai thư viện này đều có sẵn trong Arduino Library Manager.
Code CCS811 Arduino Giao tiếp cơ bản, hiển thị lên Serial monitor
Mặc dù bạn có thể sử dụng bất kỳ thư viện nào để lấy giá trị của CO2 & TVOC , mình đã sử dụng thư viện Adafruit. Code được đưa ra bên dưới. Địa chỉ I2C mặc định của CCS811 là 0x5A trong khi một số CCS811 có Địa chỉ I2C là 0X5B . Bạn có thể sửa đổi Địa chỉ I2C trong tệp thư viện.
#include "Adafruit_CCS811.h"
Adafruit_CCS811 ccs;
void setup() {
Serial.begin(115200);
Serial.println("CCS811 test");
if(!ccs.begin()){
Serial.println("Failed to start sensor! Please check your wiring.");
while(1);
}
// Wait for the sensor to be ready
while(!ccs.available());
}
Sau khi nạp chương trình, hãy mở màn hình serial. Nếu kết nối đúng, bạn sẽ thấy Serial Monitor hiển thị giá trị CO2 & TVOC đã đo được. Trong không khí sạch và không gian trong nhà thông thường, màn hình serial của bạn sẽ trông giống như thế này:
Nên chạy CCS811 trong 20 phút mỗi lần trước khi tạo ra các số đọc chính xác. Để kiểm tra hoạt động của cảm biến, bạn có thể đưa khói hoặc một ít nước hoa hoặc chất khử trùng tay bay hơi hoặc chỉ cần thổi khí vào cảm biến. Lúc này, cả giá trị CO2 và TVOC đều sẽ tăng cao.
CCS811 với Arduino hiển thị OLED I2C
Bạn có thể thêm màn hình OLED bổ sung vào mạch trên. Và sử dụng thư viện OLED, bạn có thể hiển thị giá trị CO2 & TVOC trên Màn hình OLED.
Sơ đồ mạch kết nối Màn hình OLED với Arduino & Cảm biến CCS811 như hình bên dưới.
Sơ đồ kết nối CCS811 với Arduino và OLED LCD |
Kết nối giữa Arduino & CCS811 vẫn giữ nguyên. Vì Màn hình OLED là Mô-đun I2C, hãy kết nối chân SDA & SCL của nó với A4 & A5 của Arduino. Kết nối chân VCC với 3,3V & GND với GND.
Code CCS811 Arduino hiển thị giá trị lên màn hình OLED I2C
Code CCS811 Arduino OLED được đưa ra bên dưới. Bạn cần thêm 2 thư viện bổ sung cho Màn hình OLED. Tải xuống các thư viện từ liên kết sau và thêm vào thư mục Thư viện Arduino.
- Tải xuống: Thư viện Adafruit SSD1306
- Tải xuống: Thư viện Adafruit GFX
Bạn cũng có thể tải xuống các thư viện này từ trình quản lý thư viện. Cả hai thư viện này đều có sẵn trong Arduino Library Manager.
#include "Adafruit_CCS811.h"
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_CCS811 ccs;
void setup()
{
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64)
delay(500);
display.clearDisplay();
display.setCursor(25, 15);
display.setTextSize(1);
display.setTextColor(WHITE);
display.println("CCS811 Sensor");
display.setCursor(25, 35);
display.setTextSize(1);
display.print("Initializing");
display.display();
Serial.println("CCS811 test");
if (!ccs.begin())
{
Serial.println("Failed to start sensor! Please check your wiring.");
while (1);
}
// Wait for the sensor to be ready
while (!ccs.available());
}
void loop()
{
if (ccs.available())
{
if (!ccs.readData())
{
Serial.print("CO2: ");
Serial.print(ccs.geteCO2());
Serial.print("ppm, TVOC: ");
Serial.println(ccs.getTVOC());
display.clearDisplay();
display.setTextSize(1);
display.setCursor(20, 0);
display.print("Air Quality");
display.setTextSize(2);
display.setCursor(0, 20);
display.print("CO2:");
display.print(ccs.geteCO2());
display.setTextSize(1);
display.print(" ppm");
display.setTextSize(2);
display.setCursor(0, 45);
display.print("TVOC:");
display.print(ccs.getTVOC());
display.display();
}
else
{
Serial.println("ERROR!");
display.clearDisplay();
display.setTextSize(2);
display.setCursor(0, 5);
display.print("ERROR!");
while (1);
}
}
delay(1000);
}
Màn hình OLED sẽ bắt đầu hiển thị giá trị CO2 & TVOC ngay sau khi mã được tải lên. Bạn có thể đưa khí lại gần cảm biến để kiểm tra.
Nhận xét