Рубрики
Схемы на Arduino

Измерение TVOC и CO2 с помощью Arduino и датчика качества воздуха CCS811

Научно-технический прогресса и последующий за ним рост промышленного производства привели к увеличению загрязнения окружающей среды, в том числе и воздуха. Поэтому контроль качества воздуха является одной из актуальных задач в современном мире. При этом наиболее актуален контроль таких показателей как TVOC (Total Volatile Organic Compounds – общее количество летучих органических соединений) и CO2 (углекислый газ).

В данной статье мы рассмотрим подключение датчика качества воздуха CCS811 к плате Arduino и мониторинг с его помощью содержания TVOC и CO2 (углекислого газа) в окружающем воздухе. Также на нашем сайте можно прочитать статью про мониторинг качества воздуха с помощью датчика MQ135 и платы Arduino.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Датчик качества воздуха (Air Quality Sensor) CCS811 (купить на AliExpress).
  3. Потенциометр 10 кОм (купить на AliExpress).
  4. ЖК дисплей 16х2 (купить на AliExpress).
  5. Макетная плата.
  6. Соединительные провода.

Работа схемы

Схема подключения датчика качества воздуха CCS811 к плате Arduino представлена на следующем рисунке.

Как видите, она достаточно проста и ее можно разместить на макетной плате. Контроль качества воздуха в схеме осуществляется с помощью датчика CCS811, а результаты контроля отображаются на экране ЖК дисплея 16х2.

Датчик качества воздуха CCS811

Данный датчик представляет собой цифровой датчик газа с низким энергопотреблением, который включает в себя датчик газа типа MOX (metal oxide) для обнаружения широкого диапазона VOCs (Volatile Organic Compounds — летучих органических соединений) внутри помещений и блок микроконтроллера (MCU, Micro-controller Unit). Блок микроконтроллера состоит из АЦП (аналого-цифрового преобразователя) и интерфейса I2C.

Распиновка датчика качества воздуха CCS811 представлена в следующей таблице.

№ контакта Название контакта Описание
1 Vin питающее напряжение (от 3.3 до 5 В)
2 3V3 выходное напряжение 3.3 В для внешнего использования
3 Gnd земля
4 SDA контакт синхронизации для интерфейса I2C
5 SCL контакт данных для интерфейса I2C
6 WAKE контакт «пробуждения» датчика, должен быть замкнут на землю чтобы с датчиком можно было осуществлять информационный обмен
7 RST контакт сброса, если замкнут на землю, то датчик может сбрасывать сам себя
8 INT контакт входа внешнего прерывания

Исходный код программы для Arduino

Полный код программы приведен в конце статьи, сначала рассмотрим его наиболее важные фрагменты.

Вначале программы необходимо подключить библиотеки для работы с ЖК дисплеем и датчиком качества воздуха CCS811. Скачать библиотеку для работы с датчиком CCS811 можно по следующей ссылке.

Далее сообщим плате Arduino к каким ее контактам подключен ЖК дисплей и создадим объект для работы с датчиком CCS811.

Затем инициализируем ЖК дисплей и датчик CCS811 и откалибруем датчик чтобы он показывал правильную температуру.

В следующем участке кода мы используем функцию “ccs.available()” чтобы проверить не поступают ли какие либо данные от датчика. Если поступают, то рассчитываем температуру.

Далее, если датчик CCS доступен и функция ccs.readData() возвращает ложь (false), мы считываем значение CO2 с помощью функции ccs.geteCO2() и значение TVOC с помощью функции ccs.getTVOC(). Таким образом мы получаем информацию о качестве воздуха с помощью датчика CCS811, которую отображаем потом на экране ЖК дисплея.

Далее представлен полный код программы.

6 ответов к “Измерение TVOC и CO2 с помощью Arduino и датчика качества воздуха CCS811”

ccs.setTempOffset(temp — 25.0) — 25 это текущая температура окружающего воздуха?

В большинстве случаев да, но команда ccs.setTempOffset может и не использоваться — в сети есть примеры программ где эта команда не используется при подключении датчика к Ардуино. Команда ccs.setTempOffset используется для калибровки датчика и в большинстве случаев помогает повысить точность измерений. Более подробно можете посмотреть по адресу adafruit.github.io/Adafruit_CCS811/html/class_adafruit___c_c_s811.html

в монитор последовательного порта выводит показания а в LCD не получается. Также пробовал через i2c lcd — результат тот-же. Кстати у вас на рисунке-схеме подключения ошибка: перепутаны местами SCL и SDA

Спасибо за внимательность. Значит, у вас проблема с ЖК дисплеем. Целесообразно его сменить или использовать OLED дисплей с SPI интерфейсом.

Причин может быть много почему электронные схемы не работают. Попробуйте добавить вывод информации о работе программы (в ее ключевых местах) в монитор последовательного порта. Так вы с большой вероятностью можете локализовать место где у вас происходит ошибка

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *