Обзор датчика качества воздуха CCS811, CO2, TVOC
В этой статье расскажу о датчике CCS811, данный датчик представляет собой газовый сенсор, с помощью которого можно осуществить мониторинг качества воздуха в помещение.
Технические параметры:
► Диапазон измеряемой концентрации eCO2: 400…8192 ppm;
► Диапазон измеряемых величин TVOC: 0…1187 ppb;
► Диапазон рабочих температур: -40…+85 °C;
► Интерфейс: I2C (400 кГц);
► Напряжение питания: 1,8…3,3 В;
► Период опроса: 0,25/ 1/10/ 60 с;
► Потребляемая мощность (1,8 В): 0,034 мВт (Mode 0); 46 мВт (Mode 1 и 4); 7 мВт (Mode 2); 1,2 мВт (Mode 3);
► Габариты: 14 х 20 x 3 мм;
► Вес: 1 грамм.
Описание датчика качества воздуха CCS811
Модуль собран на небольшой плате, габариты которой всего 14 мм на 20 мм. В центр установлен датчик CCS811 (производитель AMS) в корпусе LGA, 2.7 x 4.0 мм, так же, на модуле установлена минимальная обвязка, такие как резисторы для подтяжки шины I2C, конденсаторы и так далее.
Теперь расскажу о самом чипе CCS811, состоит он из двух основных блоков: датчика MOX (Metal Oxide Semiconductor) и микроконтроллера (MCU), который в свою очередь содержит АЦП (аналого-цифровой преобразователь) и интерфейс I2C. Данный датчик способен измерять TVOC (уровень загрязнения атмосферного воздуха) в диапазоне в диапазоне 0…1187 ppb и eCO2 (концентрация углекислого газа в диапазоне 400…8192 ppm.
Что такое TVOC:
Аббревиатура TVOC (VOC) volatile organic compounds показывает сколько летучих органических веществ в воздухе, выделяемые из новых продуктов и строительных материалов (ковры, мебель, краски и растворители, а также чистящие средства. По сути, это быстрый способ оценки качества воздуха в помещении, на рисунке ниже приведен некоторые уровни TVOC и рекомендации к ним.
Назначение контактов:
► Vcc — Источник питания для модуля, 3.3В;
► GND — Заземление модуля;
► SCL — Последовательная тактовая линия, используемая для обеспечения тактового импульса для связи;
► SDA — Последовательный адрес данных, используемый для передачи данных через связь;
► WAK — активный низкий уровень;
► INT — Прерывание, активный низкий уровень;
► RST — Сброс, активный низкий уровень;
► ADD — Выбор адреса устройства (к одной линии I2C можно подключить два CCS811),
Подключение датчика качества воздуха CCS811, CO2, TVOC
Необходимые детали:
► Контроллер NodeMCU v.2 (ESP8266) x 1 шт.
► Датчик качества воздуха CCS811, CO2, TVOC x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
Подключение:
Чтобы подключить модуль CCS811 с NodeMCU, необходимо пять проводов. Первым делом подключаем вывод 3.3 В модуля CCS811 к выводу 3.3 В NodeMCU и GND к выводу GND NodeMCU, затем подключаем выводы шину I2C, SDA к выводу D2 и SCL к выводу D1 платы NodeMCU, последним подключаем вывод WAK к GND. Для удобства, приведу схему подключения ниже.
Установка библиотек:
Для работы с датчиком CCS811 необходимо установить библиотеку «SparkFun CCS811 Arduino library», для этого перейдите в Скетч —> Подключить библиотеку —> Управление библиотеками.
В строке поиска введите «CCS811», найдите библиотеку «SparkFun CCS811 Arduino library» и установите данную библиотеку.
Так же, не забываем что необходимо установить NodeMCU в среду разработки Arduino IDE, для этого воспользуйтесь этой статьей. После установки библиотек перезапустите, среду разработки Arduino IDE.
Программа:
Теперь, у нас все готово, копируем скетч в Arduino IDE или скачайте готовый файл и загружаем его в NodeMCU, незабываем указать свои данные сети.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include <Wire.h> // Подключаем библиотеку Wire #include "SparkFunCCS811.h" // Подключаем библиотеку SparkFunCCS811 #define CCS811_ADDR 0x5A // Указываем адрес устройства I2C, по умолчанию 0x5B, второй адрес устройства 0x5B CCS811 mySensor(CCS811_ADDR); // Создаем объект void setup() { Serial.begin(115200); // Создаем последовательную связь Serial.println("CCS811 Basic Example"); // Отправка сообщения Wire.begin(); // Инициализация связь I2C // Инициализация CCS811, в противном случаи печатаем сообщение об ошибки if (mySensor.begin() == false) { Serial.print("CCS811 error. Please check wiring. Freezing..."); while (1); } } void loop() { if (mySensor.dataAvailable()) // Проверка, есть ли новые данные { mySensor.readAlgorithmResults(); // Чтение данных с датчика Serial.print("CO2["); // Печать текста Serial.print(mySensor.getCO2()); // Отправка данных CO2 Serial.print("] tVOC["); // Печать текста Serial.print(mySensor.getTVOC()); // Отправка данных TVOC Serial.print("] millis["); // Печать текста Serial.print(millis()); // Отправка данных о времени запуска программы Serial.print("]"); // Отправка текста Serial.println(); // Новая строка } delay(10); // Пауза } |
Загрузите скетч и откройте «Последовательный монитор» из Arduino IDE.
Описание скетча:
Скетч начинается с включения библиотеки Wire.h и SparkFunCCS811.h и определения количества строк и столбцов на клавиатуре, которую вы хотите использовать. Далее указываем адрес устройства, по умолчанию это 0x5B, второй адрес 0x5A
1 2 3 4 |
#include <Wire.h> #include "SparkFunCCS811.h" #define CCS811_ADDR 0x5B CCS811 mySensor(CCS811_ADDR); |
В setup, создаем последовательную связь на скорости 115200 и инициализируем I2C
1 2 3 |
Serial.begin(115200); Serial.println("CCS811 Basic Example"); Wire.begin(); |
Далее, инициализируем датчик CCS811, если инициализация прошла успешно то программа продолжается, если нет, зацикливаем программу и отправляем сообщение об ошибки.
1 2 3 4 5 |
if (mySensor.begin() == false) { Serial.print("CCS811 error. Please check wiring. Freezing..."); while (1); } |
В loop, функцией «mySensor.dataAvailable» проверяем поступили ли данные. Если данные есть, функцией mySensor.readAlgorithmResults считываем их и отправляем в последовательный порт данные о CO2 и TVOC.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
f (mySensor.dataAvailable()) { mySensor.readAlgorithmResults(); Serial.print("CO2["); Serial.print(mySensor.getCO2()); Serial.print("] tVOC["); Serial.print(mySensor.getTVOC()); Serial.print("] millis["); Serial.print(millis()); Serial.print("]"); Serial.println(); } delay(10); } |
Ссылки
Библиотека SparkFun CCS811 Arduino 2.0.0
Купить на Aliexpress
Плата NodeMCU V2
Комплект проводов DuPont, 2,54 мм, 20 см
Датчик качества воздуха CCS811, CO2, TVOC
Купить в Самаре и области
Плата NodeMCU V2
Провода DuPont, 2,54 мм, 20 см
Датчик качества воздуха CCS811, CO2, TVOC
Автор, куда отправляются данные о качестве воздуха, на воздух? Я так предполагаю по вайфаю на смартфон, если так то как они будут отображаться?