2022-02-23 17:28:32

Домашний CO2-метр

Железо 3D Arduino

Датчик CO2

Поработав недавно на удаленке, ощутил, что в разгаре рабочего процесса, дома регулярно становится душно, и нужно что-то, заставляющее пойти и проветрить помещение. Не найдя ничего готового за разумную цену, взял и сам сделал прибор, оценивающий и отображающий качество воздуха.


Немного о духоте

Причина духоты - отсутствие нормальной приточной вентиляции. Ощущение духоты - это повышение уровня CO2 в помещении за счет нашего дыхания. Содержание CO2 обычно измеряется в PPM (parts per million, 1 % = 10 000 ppm) и влияет на человека следующим образом:

  • От 350 до 400 ppm. Концентрация углекислого газа на открытом воздухе в городских условиях: является оптимальным показателем для города;
  • От 500 до 600 ppm. Желательные показатели уровня СО2 для пребывания в помещении, при которых создаются лучшие условия для работы и отдыха;
  • От 600 до 1000 ppm. Может появиться головная боль, ухудшается концентрация внимания и работоспособность;
  • От 1000 до 1500 ppm. Появляется слабость, трудно заставить себя сосредоточиться на чём-либо, возникает сонливость, апатия, сон будет беспокойным;
  • Свыше 1500 ppm. Предельное содержание углекислого газа, при котором начинается сильная головная боль и слабость, тошнота, дальнейшее ухудшение самочувствия.

В соответствии с требованиями ГОСТ 30494-2011 нормой СО2 в помещении является 800 ppm, при этом допускается повышение концентрации двуокиси углерода до 1000-1400 ppm. Это требование для помещений первой категории, то есть жилых, в которых люди отдыхают и спят.

Таким образом, когда уровень CO2 поднимается до 1000 ppm, нужно идти и проветривать помещение.

Устройство

Свое устройство решил делать на основе ардуино, быстро и просто, есть масса дешевых датчиков на али и софта для для них в интернете. Для измерения CO2 подходит датчик MQ135, у него на плате есть светодиод, который включается при уровне CO2, установленном при помощи переменного резистора. Крайне просто и эффективно, но и весьма скучно.

Мне хотелось видеть динамику, поэтому у устройства появился экран для рисования графика. А поскольку библиотека для работы с MQ135 могла уточнять измерения в зависимости от температуры и влажности, пришлось добавить датчик DHT11.

Устройство на макетной плате

Все это просто и быстро собралось на макетной плате, с прошивкой было более сложно, но тоже все задуманное получилось.

Датчик MQ135 требует калибровки для правильной работы. Калибровка заключается в работе на свежем воздухе на протяжении 12-24 часов для получения калибровочного значения, которое далее используется для измерений. Подробнее о калибровке можно почитать в этой статье. Так в устройстве появилась кнопка и режим калибровки, который включается если зажать кнопку при подаче питания. Калибровка длится 12 часов и полученное значение сохраняется в памяти устройства.

В результате получилась штука, которая рисует график CO2, показывает температуру и влажность. Режим отображения можно переключить кнопкой на отображение крупной цифры CO2. Так же при превышении значения 1000 ppm, отображение принудительно переключается на крупную цифру и начинает мигать.

Корпус

Я старался проектировать корпус так, чтоб использовать готовые модули и соединения без пайки. Совсем без пайки обойтись не удалось, но большинство соединений между модулями обеспечиваются разъемами Dupont. Такой подход сказался на размере.

Разные корпуса

Идею я подсмотрел где-то на thingiverse и спроектировал модель под свои нужды. Корпус оказался самой сложной частью. Из-за сложности модели и неправильной ее организации, каждое даже минимальное изменение все разламывало. А таких изменений потребовалось достаточно много для подгонки. Готовую модель для печати и исходник во FreeCAD можно скачать тут.

Перечень всех компонентов

Сборка

Почти собрано

Сначала делаем общую линию питания (+), спаяв вместе 3 провода с dupont разъемами на конце. Аналогично делаем общую линию земли, но уже из 4 проводов.

Затем припаиваем два провода с разъемами к кнопке, чтоб не ошибиться лучше к ножкам, расположенным по диагонали.

Подключаем провода к дисплею: общую землю к GND, а провода от остальных 3 пинов оставляем в воздухе. Устанавливаем дисплей в корпус так, чтоб провода оказались под потолком. Тонкой отверткой фиксируем дисплей винтами М2.6х6 через отверстия в задней стенке. Между передней стенкой и платой дисплея должно оставаться расстояние 2.75 мм. (толщина экрана), поэтому затягивать винты нужно аккуратно.

Подключаем провода к датчику MQ135: общее питания к VCC, общую землю к GND, провод к пину A0 оставляем в воздухе, пин D0 не используется. Размещаем модуль в корпусе и фиксируем винтами М2.6х6. Важно проложить провода от дисплея вокруг ножек так, чтоб они не прижимались платой и датчиком, для них там достаточно места.

Переходим к нижней части. Подключаем провода к DHT11: общее питания к "+", общую землю к "-", провод от OUT оставляем в воздухе. Фиксируем датчик винтом М2.6х6.

Подгибаем ножки кнопки так, чтоб она плотно обнимала столбик как на фото выше. Провода от кнопки подключаем к пинам D9 и GND на плате Arduino.

Устанавливаем Arduino на место. Сначала фиксируем со стороны USB разъема винтами М1.4х5, затем аккуратно сжав столбики крепления друг к другу тоже винтами М1.4х5 с другой стороны (отверстия там чуть шире чем на плате, технологическая особенность из-за датчика снизу).

Теперь подключаем все оставшиеся провода. Общее питания к пину 5v на Arduino, общую землю к свободному пину GND.

Провод OUT от DHT11 к пину D2 на Arduino.

Провод A0 от MQ135 к пину A0 на Arduino. 

Провод VDD от дисплея к пину 3v3 на Arduino. Провод от SDA к пину A4, от SCK к пину A5.

Теперь получилось состояние как на фото выше. Вкладываем распечатанную кнопку в корпус и аккуратно, прижимая кнопку на нижней части к столбику, вставляем нижнюю часть в корпус. Фиксируем сборку винтами М2х8.

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