Простая домашняя метеостанция

Давно хотел узнать насколько чистый воздух у меня в доме. Знаю, что в сети достаточно много схем и решений по поводу контроля домашнего микроклимата, например эта. Но по ряду причин не стал повторять данные схемные решения, одними из таких причин было: громоздкость конструкции, значительно большие размеры корпуса и платы, использование хотя и дешевых, но сложных для повторения новичками микроконтроллеров.

В основу моей схемы положен микроконтроллер на базе Arduino, а именно Arduino Pro-Mini; 3.3v; 8MHz (223 руб.). Дешевый микроконтроллер, малых размеров, который с успехом справляется с поставленными задачами, а именно: измерение температуры, влажности, атмосферного давления, измерение уровня eCO2 в воздухе, а также построение суточных графиков изменения этих параметров с выводом на дисплей, и контроль превышения уровня eCO2 в воздухе с сигнализацией об этом. 

Схема построена на основе готовых плат, выписанных, конечно с АлиЭкспресс, которые объединены на одной общей плате. Такое схемное решение значительно упрощает повторение «Метеостанции» даже начинающим радиолюбителем.

Принципиальная схема

Для получения информации использованы датчики:

BMP280 (~50 руб.) датчик измеряет температуру, влажность и атмосферное давление, питание датчика 3,3v ;

CCS811  (~600 руб.) датчик применяется для обнаружения в воздухе помещения окиси углерода (CO) и широкого спектра летучих органических соединений, интеллектуальный алгоритм вычисляет значения TVOC / eCO2, питание датчика 3,3v .

Оба датчика «общаются» с МК по шине I2C.

Вывод информации производится на TFT ЖК дисплей 3,5 дюйма на базе чипа ILI9488 с размером экрана 480х320 точек. Интерфейс общения с МК — SPI, питание — 3.3v. Сразу скажу, что без большой переделки прошивки, можно использовать любой дисплей с размерами экрана 480х320, придется только заменить библиотеку работы с дисплеем на другом чипе.


   

Итак, так как для питания дисплея и датчиков необходимо 3.3v, то это и послужило решающим фактором выбора МК на базе Arduino Pro-Mini 3.3v, чтобы не применять сложные схемы или микросхемы согласования уровня 5v-3.3v.

Для «проветривания» датчиков, то есть, для того, чтобы они выдавали реальные показания, применяется вентилятор охлаждения от ноутбука с питанием 5v; 2,25W (бесплатно, снят с донора). Данный вентилятор очень удачно вписался на плату, имеет малые размеры и очень тихо работает. Хотя можно использовать и любой другой с питанием от 5v.

В качестве извещателя о превышении уровня eCO2 применен активный пьезоизлучатель с питанием 5v (9 руб.). Так как логика МК работает на 3.3v, а потребление вентилятора составляет (по замерам, без токоограничивающего резистора) 0,35А, то для управления вентилятором и пьезоизлучателем применена микросхема ULN2803 (8 руб.), у меня она не в DIP корпусе, а в SO (просто были такие в наличии). Применение данной микросхемы сильно упрощает управление нагрузками, и, хотя, она и рассчитана на работу с 5v логикой, прекрасно работает и с 3.3 вольтовой. Микросхема имеет малые размеры, очень просто встраивается в схему без дополнительной обвязки, кроме резисторов, ограничивающих ток на нагрузку. Кроме этого, у микросхемы остается свободными еще 6 портов, что позволяет применить ее для расширения возможностей устройства, например, для управления проветриванием и т. д. Для питания МК, дисплея и датчиков применен DC-DC преобразователь MINI-360, просто потому, что был. При повторении схемы, не забудьте выставить на нем выходное напряжение в пределах 3.3-3.6v. На преобразователь подается напряжение 5v, оно же используется для питания вентилятора и извещателя. Вместо него можно использовать линейный стабилизатор LM1117-3.3 или подобный. Общее максимальное потребление схемы — 0,17A (при работе вентилятора), в ждущем режиме – 0,07А. В «Метеостанции» нет часов, просто не вижу необходимости в их наличии, нет кнопок управления по той же причине. Все компоненты смонтированы на макетной 2-х сторонней плате размерами 8х12см (100 руб.), поскольку соединения элементов все очень простые и их немного, плата под проект не рисовалась. На верхней стороне платы смонтированы: МК, дисплей, DC-DC преобразователь, пьезоизлучатель и микросхема ULN2803; на нижней стороне — оба датчика и вентилятор.

      

Такое расположение элементов позволяет минимизировать влияние радиоэлементов на датчики. Общая толщина платы с установленными элементами — 35мм. Таким образом, общая стоимость проекта (без корпуса и БП 5v) — 1629 руб. Корпус приобретен за 390 руб., итого с корпусом — 2019 руб.

Экран устройства разделен на 4 части, по количеству измеряемых параметров. В левой части отображаются текущие значения измеренных параметров, в правой части строится график изменения значений. По центру каждого графика (кроме последнего) проходит зеленая линия, с указанием над ней «нормального» для каждого параметра значения (для температуры, например, это 18 градусов С), для графика eCO2 — красная линия, показывающая максимально допустимое значение загрязненности воздуха (1500 ppm). Сверху справа указывается предыдущее измеренное значение, снизу справа — значение 24 часа назад (кроме eCO2). Измерения параметров производятся каждые 10 минут в течение суток, т. е. 144 раза в сутки, график строится на основе этих 144 показаний. Алгоритм работы — после последнего измерения «Метеостанция» находится в простое 8 минут, затем в течение 1 минуты «продувает» датчики, ждет еще 1 минуту, проводит опрос датчиков, выводит текущие показания на экран, перестраивает график, обновляет предыдущие и суточные показания на экране. Опрос датчика CCS811 производится 10 раз, усредненное значение оценивается на ПДК, в случае, если значение больше или равно 1000, оно  выводится на экран на красном фоне, если значение еще и больше 1500, то звучит одиночный сигнал, если же значение более 2000 — сигнал звучит в течение 10 секунд. Далее алгоритм повторяется.

Исходный текст скетча приложен к статье, по пунктам даны комментарии, для контроля работы датчиков в тексте оставлены за комментированные строки вывода показаний датчиков в монитор порта. Единственная настройка, которую необходимо сделать в программе — это указать в параметре #define SEALEVELPRESSURE_HPA (1016.8) значение давления в Гпа на высоте (вашего города над уровнем моря), для г.Котлас это 1016,8 ГПа, значение можно найти в интернете.

Фотографию готового устройства можно видеть ниже:

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Arduino Pro-Mini 1 3,3 v
LCD-дисплей ILI9488 1 Без тачскрина, SPI, 320×480
Датчик BME280 1 Питание 3,3v
Датчик CCS811 1 Питание 3,3v
DC-DC преобразователь Mini-360 1 5v —> 3,3v Или LM1117-3.3
Составной транзистор ULN2803 1
R1 Резистор 10 Ом 1
R2 Резистор 22 Ом 1
R3 Резистор 100 Ом 1
ZQ1 Пьезоизлучатель 1 Активный, 5v
M1 Вентилятор 1 Любой, 5v