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