Не буду долго расписывать вред «спёртого» воздуха, нормы температуры, влажности и содержания углекислого газа в жилых помещениях, всё уже описано до меня, и значительно подробнее. Полюбопытствовать можно, например, тут или поискать ещё, в Сети достаточно информации.
В Сети уже есть несколько конструкций аналогичными функциями, но все по разным причинам меня не устроили (слабая информативность, излишества вроде 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 | |||