Не буду долго расписывать вред «спёртого» воздуха, нормы температуры, влажности и содержания углекислого газа в жилых помещениях, всё уже описано до меня, и значительно подробнее. Полюбопытствовать можно, например, тут или поискать ещё, в Сети достаточно информации.
В Сети уже есть несколько конструкций аналогичными функциями, но все по разным причинам меня не устроили (слабая информативность, излишества вроде wifi, приардуинивание «на соплях», связь с датчиком по pwm и так далее), поэтому, сделал свой вариант.
Устройство чисто утилитарное, создавалось для постоянного использования в комнате, где спит ребёнок, с возможностью отключить от сети и использовать в другом помещении при необходимости.
В конструкции также заложена возможность подключения вентилятора или сервопривода форточки/окна, для автоматического проветривания помещения при превышении порога содержания CO2.
Использованы датчики:
DHT-22 (AM2302) – влажность и температура
BMP180 – атмосферное давление
MH-Z19 – уровень CO2, датчик дорогой (~15$ на AliExpress), но точный и дающий достоверные данные
Дисплей – китайский «ILI9341» с SPI, без тачскрина, подойдёт любой диагонали из этой серии, я использовал 2.8` — недорого и читабельно.
Микроконтроллер ATmega128, просто потому, что дешевый, их есть под рукой и не стесняет по месту во flash.
Схема:
Основной экран(он же единственный в этой конструкции):
Добавлю, что текстовая информация о качестве воздуха(«Свежий воздух» на скриншоте выше) взята из данных таблицы «норм» по датчику MH-Z19, вот этой:
и выводится соответственно измеренному уровню углекислого газа.
Этапы сборки:
Готовый прибор:
В программе есть ряд параметров, которые настраиваются 1 раз под конкретную роль устройства, они находятся в начале кода в main.c и откомментированы. Исходники приложены к статье, написаны под Atmel Studio 7, каждый может сам переделать убрать/добавить функционал «под себя» в любых некоммерческих целях, свободного места во флэше МК ещё очень много.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
R1 | Резистор | 2-20R | 1 | |||
R2, R5, R9 | Резистор | 300R | 3 | |||
R3, R10 | Резистор | 1M | 2 | |||
R4 | Резистор | 750R | 1 | |||
R6 | Резистор | 7.5 кОм | 1 | |||
R7, R8 | Резистор | 10 кОм | 2 | |||
C1, C4 | Танталовый конденсатор | 10uF 10v | 2 | |||
C2 | Танталовый конденсатор | 150uF 10v | 1 | |||
C3, C5, C7 | Керамический конденсатор | 100nF | 3 | |||
C6 | Керамический конденсатор | 1uF | 1 | |||
C8, C9 | Керамический конденсатор | 10-18pF | 2 | |||
ZQ1 | Пьезодинамик | 1 | ||||
QZ1 | Кварцевый резонатор | 32.768kHz | 1 | |||
QZ2 | Кварцевый резонатор | 12MHz | 1 | |||
D1, D7 | Выпрямительный диод | 1N4007 | 2 | |||
D2, D3 | Диод Шоттки | SS14 | 2 | |||
D4, D5, D6 | Светодиод 3мм | 3 | ||||
Q1, Q2 | MOSFET-транзистор | 2N7002 | 2 | |||
U1 | МК AVR 8-бит | ATmega128A | 1 | |||
LCD1 | LCD-дисплей | ILI9341 | 1 | Без тачскрина, с SPI, диагональ любая | ||
U2 | Датчик | BMP180 | 1 | |||
U3 | Датчик | MH-Z19 | 1 | |||
U5 | Датчик | DHT-22 | 1 | |||
U4 | Линейный регулятор | AMS1117-3.3 | 1 | |||
U6 | Контроллер заряда LI-Po | LTC4054-4,2 | 1 | |||
B1 | Вентилятор | 1 | ||||
K1 | Реле | 5v | 1 | |||