Получение данных с CCS811
CCS811 — датчик качества воздуха. Возвращает два расчётных параметра:
eCO2— эквивалентная концентрация CO₂ (ppm);TVOC— суммарные летучие органические соединения (ppb).
Примечание
Это не «настоящий» CO₂ — реального оптического датчика углекислого
газа на CCS811 нет. eCO2 рассчитывается из уровня летучих
органики (TVOC) по эмпирической модели. Цифры реагируют на дыхание
и проветривание, но абсолютная точность невысокая.
Расположение в кубсате — шина I²C, адрес 0x5A (см. Подготовка среды разработки).
Про пин WAK
У CCS811 есть пин WAK (wake): пока он HIGH — датчик в спячке и
не отвечает по I²C. На большинстве модулей китайских клонов пин
WAK уже припаян/притянут к GND, и сценарий «всегда активен»
работает по умолчанию. В нашей сборке так и есть.
Если i2c_scanner не видит 0x5A, при том что питание подведено —
первое подозрение на WAK: проверьте перемычку/провод от WAK к
GND.
Необходимые библиотеки
Adafruit CCS811 Library(Adafruit);Adafruit BusIO(зависимость).
Тестовый скетч
#include <Wire.h>
#include <Adafruit_CCS811.h>
Adafruit_CCS811 ccs;
void setup() {
Serial.begin(115200);
delay(300);
Wire.begin(); // Nano: SDA=A4, SCL=A5
Serial.println("CCS811 init (Adafruit lib)...");
if (!ccs.begin(0x5A)) {
Serial.println("CCS811 not found.");
Serial.println("Check power, GND, SDA(A4), SCL(A5), address 0x5A");
while (true) delay(1000);
}
Serial.println("CCS811 OK");
Serial.println("Warm-up: wait 2-5 minutes");
Serial.println("eCO2_ppm,TVOC_ppb");
}
void loop() {
if (!ccs.available()) {
delay(100);
return;
}
if (!ccs.readData()) {
Serial.print(ccs.geteCO2());
Serial.print(",");
Serial.println(ccs.getTVOC());
} else {
Serial.println("read_error");
}
delay(100);
}
Как запустить
Залейте скетч.
Откройте Serial Monitor на скорости 115200.
Прогрев — обязательно. Дайте датчику 2-5 минут на стабилизацию, первые значения обычно бесполезны.
Что должно быть видно
Сразу после старта:
CCS811 init (Adafruit lib)...
CCS811 OK
Warm-up: wait 2-5 minutes
eCO2_ppm,TVOC_ppb
Дальше — числа дважды в секунду:
400,0
400,0
410,1
420,3
...
Значения «как в комнате»:
Параметр |
Типично в помещении |
Что считать значимым |
|---|---|---|
|
400-1200 ppm |
> 1500 — пора проветрить; < 400 — фон |
|
0-300 ppb |
резкий скачок при дыхании в датчик, парфюме, маркере |
Про прогрев
При первом включении нового датчика даташит требует до 20 минут на conditioning — пока внутренние значения «устаканятся».
При повседневном включении достаточно 2-5 минут.
Если запустить тест на холодном датчике, первые ~30 секунд значения будут константные (
400, 0) — это нормально.
Если CCS811 not found
Проверьте, что Проверка шины I²C показывает
0x5A.Проверьте перемычку
WAK → GND(см. выше).Если адрес видится, но Adafruit-библиотека не инициализируется — попробуйте перезапитать датчик (отключить-подключить
VCC).