Сборка точного датчика углекислого газа CO2 на ESP32 и SCD30
Содержание
Яндекс Браузер со встроенной Алисой — бесплатно
Качество воздуха в жилых помещениях напрямую влияет на самочувствие, концентрацию внимания и качество сна. Главным показателем душного воздуха является уровень углекислого газа (CO2). Обычные дешевые датчики летучих органических соединений (TVOC) или электрохимические сенсоры не умеют точно измерять концентрацию CO2, они лишь косвенно оценивают ее, выдавая огромные погрешности при контакте с бытовой химией или духами. Для точного мониторинга требуется настоящий NDIR-датчик (оптический недисперсионный инфракрасный сенсор). В этой инструкции мы соберем профессиональный комнатный детектор качества воздуха на базе высокоточного швейцарского сенсора Sensirion SCD30 и микроконтроллера ESP32, а также настроим автоматическое управление вентиляцией через Умный Дом Яндекса с Алисой.
Преимущества сенсора Sensirion SCD30
Модуль Sensirion SCD30 является одним из лучших решений на рынке для бытового и полупрофессионального применения. Его ключевые особенности:
- Двухканальная оптическая технология NDIR, компенсирующая долговременный дрейф показаний.
- Встроенный датчик температуры и относительной влажности для автоматической термокомпенсации измерений.
- Диапазон измерения от 400 до 10000 ppm с точностью ±30 ppm плюс 3% от измеряемого значения.
- Поддержка интерфейса передачи данных I2C и Modbus, что упрощает интеграцию с современными микроконтроллерами.
Для работы нам понадобится плата ESP32 (подойдет любая стандартная плата DevKit), соединительные провода и стабильный источник питания с выходным током не менее 1 Ампер при напряжении 5V, так как оптическая лампа сенсора потребляет значительный ток в моменты измерения.
Подключение компонентов по интерфейсу I2C
Сенсор SCD30 подключается к шине I2C контроллера ESP32. Назначение выводов следующее:
- VDD сенсора ➡️ Вывод 5V платы ESP32 (для питания инфракрасного излучателя).
- GND сенсора ➡️ Вывод GND платы ESP32.
- SCL (тактовые импульсы) ➡️ GPIO 22 платы ESP32.
- SDA (данные) ➡️ GPIO 21 платы ESP32.
- Выводы SEL и PWM на сенсоре оставляем неподключенными (по умолчанию выбран режим I2C).
IMPORTANT
Датчик SCD30 критичен к стабильности напряжения питания. Хотя логические уровни шины I2C составляют 3.3V и отлично согласуются с ESP32 без делителей напряжения, питание на контакт VDD должно приходить строго с линии 5V. При просадке напряжения ниже 4.5V точность измерения оптической камеры резко падает.
Для прошивки мы рекомендуем использовать среду ESPHome. В конфигурационный файл добавляется стандартный блок scd30, где указывается адрес на шине I2C (обычно 0x61).
Настройка калибровки и автоматического проветривания
После сборки датчик нуждается в первичной калибровке. В SCD30 встроена система автоматической самокалибровки (ASC). Она работает по следующему принципу: датчик считает, что минимальный уровень CO2, зафиксированный за 7 дней непрерывной работы при условии регулярного проветривания, соответствует чистому загородному воздуху с концентрацией 400 ppm.
TIP
Если вы хотите получить точные показания сразу, проведите ручную принудительную калибровку (FRC). Вынесите собранное устройство на открытый воздух на 15–20 минут, после чего отправьте команду калибровки через интерфейс ESPHome или веб-интерфейс Home Assistant, установив базовое значение 400 ppm (или 420 ppm для городских условий).
Еще одним критическим фактором является компенсация самонагрева датчика. При работе оптический элемент сенсора выделяет тепло, из-за чего встроенный температурный датчик может завышать показания на 2-3 °C, а датчик влажности — занижать относительную влажность воздуха. В ESPHome предусмотрен специальный параметр temperature_offset, который позволяет внести коррекцию. Измерьте реальную комнатную температуру поверенным термометром, найдите разницу с показаниями SCD30 и пропишите полученное смещение в конфигурации. Это значительно повысит точность работы климатической автоматики во всем доме. Также обязательно используйте качественные экранированные кабели для подключения шины I2C, если расстояние от контроллера ESP32 до сенсора SCD30 превышает 20 сантиметров. Высокочастотные наводки от модуля Wi-Fi могут искажать пакеты данных, передаваемые по шине I2C, что приведет к ошибкам инициализации датчика в логах.
Собранный датчик передает данные в систему Home Assistant, откуда они пробрасываются в приложение «Дом с Алисой». Теперь мы можем настроить сценарий управления умным бризером или приточной вентиляцией. Подробная логика интеграции вентиляционных систем описана в руководстве по автоматизации вентиляции по CO2.
Сценарии автоматизации в Умном Доме Яндекса
Рассмотрим классическую схему автоматического контроля качества воздуха:
- Условие запуска: Показания датчика CO2 превышают 800 ppm.
- Действие: Умный бризер включается на первую скорость подачи свежего воздуха.
- Условие запуска 2: Уровень CO2 поднимается выше 1200 ppm (в комнате находится несколько человек).
- Действие 2: Бризер переводится на максимальную скорость работы, а Яндекс Станция произносит: «Уровень углекислого газа превысил норму. Включаю интенсивное проветривание».
- Условие отключения: Уровень CO2 опускается ниже 600 ppm.
- Действие: Выключить бризер или перевести его в бесшумный ночной режим.
WARNING
Не устанавливайте датчик CO2 в непосредственной близости от кровати, рабочего места или вентиляционных отверстий приборов. Ваше собственное дыхание при близком расположении сенсора вызовет резкие локальные скачки показаний до 2000 ppm, что приведет к ложным срабатываниям автоматики проветривания. Оптимальное место установки — стена на высоте 1.5 метра от пола вдали от окон и дверей.
Сборка такого устройства своими руками позволяет сэкономить значительные средства по сравнению с покупкой готовых проприетарных датчиков качества воздуха, обеспечивая при этом непревзойденную точность измерения благодаря оригинальному сенсорному чипу швейцарского производства. Корпус прибора можно изготовить из дерева или пластика, предусмотрев широкие вентиляционные отверстия снизу и сверху для свободной конвекции воздуха вокруг измерительной камеры.
Инструкция по настройке
Подключение сенсора SCD30
Подключите контакты VDD, GND, SDA и SCL сенсора к соответствующим выводам ESP32.
Прошивка контроллера
Создайте конфигурационный файл ESPHome с модулем scd30 и загрузите прошивку в ESP32.
Калибровка на воздухе
Вынесите собранный датчик на улицу на 20 минут для проведения первичной калибровки (400 ppm).
Настройка автоматизации
Создайте сценарий в приложении Дом с Алисой для автоматического включения бризера по уровню CO2.