Станция контроля микроклимата – “Умная фоторамка”

В жилом доме, квартире или офисе формируется свой микроклимат. Многие живые биообъекты, такие как человек при дыхании выдыхают углекислый газ, он же выделяется в процессе горения в газовой плите. Кроме того, несгоревшие остатки бытового газа остаются в воздухе. Если проветривание долго не осуществляется, воздух начинает отравлять людей. Поэтому нужно иметь средства для контроля уровня газов в воздухе. Можно покупать устройства умного дома за бешенные деньги, а лучше сделать самостоятельно!

Прототип системы: “Станция контроля микроклимата”

Станция контроля микроклимата

DIY проект

Решил рассказать об одной интересной измерительной системе, которую можно сделать своими руками. Это не совсем мой проект (т.н. Часы-метеостанция на Ардуино), я его подглядел в интернете у Alex Gyver, он получил распространение и многие его повторяли. Идея в том, чтобы совместить часы с различными измерениями микроклимата и углекислого газа. Вести мониторинг в режиме реального времени. Предупреждать о выходе содержания угл.газа за пределы нормы цветовым индикатором.

Скажу сразу, результаты измерений меня поразили! Концентрации опасных газов бывает зашкаливали! Эта станция стала постоянным помощником в доме.

Я решил немного модифицировать систему и добавил туда датчик контроля опасных газов MQ-135, пьезопищалку для звукового предупреждения об опасном содержании газа в помещении. Также доработал программное обеспечение для работы с новыми датчиком и звуком, ну и добавил возможность мониторинга дополнительных параметров.
В итоге система может на главном экране показывать дату, время, день недели, температуру и влажность воздуха, атм. давление, предсказывать осадки, измерять концентрацию углекислого газа и опасных газов.
При нажатии на сенсорную кнопку выводит последовательно графики изменений всех параметров за час и за день.
Цветовыми индикаторами показывается содержание углекислого газа. Зеленым – нормальное содержание, синим – превышение и красным – критическое превышение.
Если текущее содержание опасных газов превышает порог – пищалка издает небольшой сигнал, предупреждая об опасной ситуации. Этой функции очень не хватало в оригинальном проекте!
Еще также, как и в оригинальном проекте яркость подсветки экрана меняется в зависимости от освещенности в помещении. Была введена еще динамическая корректировка яркости свечения цветовых индикаторов.

Нам потребуется

  1. Ардуино NANO
  2. Дисплей LCD2004 c I2C модулем
  3. RGB светодиод (достаточно 1 шт)
  4. Пьезодинамик со встроенным генератором
  5. Модуль с датчика MQ-135
  6. Модуль часов реального времени DS3231
  7. Модуль датчика температуры, давления, влажности BMP280
  8. Датчик CO2 MH-Z19
  9. Сенсорная кнопка TTP223
  10. Фоторезистор
  11. Резистор 10 кОм
  12. Резистор 220 Ом (на каждый светодиод)
  13. Блок питания 5В (мин 1 А)

Схема подключения элементов:

Станция контроля микроклимата - "Умная фоторамка"

Датчик углекислого газа, подключенный по последовательному интерфейсу UART к контроллеру Ардуино NANO.
Ардуино программируется при необходимости по USB.
Датчик контроля микроклимата (давление, температура и влажность). Подключен по I2C к Ардуино.
Датчик опасных газов MQ-135, подключается к АЦП микроконтроллера.
Модуль часов реального времени, питается ионистором.
на корпусе устанавливается датчик освещенности (фоторезистор). По сигналу освещенности микроконтроллер управляет яркостью подсветки. Нужно припаять ШИМ вывод к одной ножке джампера модуля I2C экрана (та, что ближе к верхней грани).
Хотелось управлять светодиодами по отдельности, но из-за подключения функции контроля яркости просто не хватило выводов.
Переключение режимов производится с помощью сенсорной кнопки, приклеенной на скотч сверху корпуса.
Зуммер, программно связан с датчиком опасных газов. Этот тандем может предотвратить утечку бытового газа, разбудит человека во время сна, что может даже спасти жизнь!
В разъем подключается блок питания на 5 В 1А, дающий питание напрямую Ардуино и всем модулям.

Программа для Ардуино

Скачать программу данного проекта можно по ссылке.

Блок настроек программы представлен ниже:

// ------------------------- НАСТРОЙКИ --------------------
#define RESET_CLOCK 0     // сброс часов на время загрузки прошивки (для модуля с несъёмной батарейкой). Не забудь поставить 0 и прошить ещё раз!
#define SENS_TIME 30000   // время обновления показаний сенсоров на экране, миллисекунд
#define LED_MODE 0        // тип RGB светодиода: 0 - главный катод, 1 - главный анод
// управление яркостью
#define BRIGHT_CONTROL 1      // 0/1 - запретить/разрешить управление яркостью (при отключении яркость всегда будет макс.)
#define BRIGHT_THRESHOLD 40  // величина сигнала, ниже которой яркость переключится на минимум (0-1023)
#define LED_BRIGHT_MAX 10    // макс яркость светодиода СО2 (0 - 255)
#define LED_BRIGHT_MIN 1     // мин яркость светодиода СО2 (0 - 255)
#define LCD_BRIGHT_MAX 255    // макс яркость подсветки дисплея (0 - 255)
#define LCD_BRIGHT_MIN 10     // мин яркость подсветки дисплея (0 - 255)

#define BLUE_YELLOW 0     // жёлтый цвет вместо синего (1 да, 0 нет) но из за особенностей подключения жёлтый не такой яркий
#define DISP_MODE 1       // в правом верхнем углу отображать: 0 - год, 1 - день недели, 2 - секунды
#define WEEK_LANG 1       // язык дня недели: 0 - английский, 1 - русский (транслит)
#define DEBUG 0           // вывод на дисплей лог инициализации датчиков при запуске. Для дисплея 1602 не работает! Но дублируется через порт!
#define PRESSURE 1        // 0 - график давления, 1 - график прогноза дождя (вместо давления). Не забудь поправить пределы гроафика
#define CO2_SENSOR 1      // включить или выключить поддержку/вывод с датчика СО2 (1 вкл, 0 выкл)
#define DISPLAY_TYPE 1    // тип дисплея: 1 - 2004 (большой), 0 - 1602 (маленький)
#define DISPLAY_ADDR 0x27 // адрес платы дисплея: 0x27 или 0x3f. Если дисплей не работает - смени адрес! На самом дисплее адрес не указан

// пределы отображения для графиков
#define TEMP_MIN 20
#define TEMP_MAX 35
#define HUM_MIN 25
#define HUM_MAX 75
#define PRESS_MIN -100//720
#define PRESS_MAX +100//780
#define CO2_MIN 400
#define CO2_MAX 3000
#define GAS_MIN 18
#define GAS_MAX 30

// адрес BME280 жёстко задан в файле библиотеки Adafruit_BME280.h
// стоковый адрес был 0x77, у китайского модуля адрес 0x76.
// Так что если юзаете не библиотеку из архива - не забудьте поменять

// если дисплей не заводится - поменяйте адрес (строка 54)
// пины управления светом
#define BACKLIGHT 10
#define PHOTO A3
#define BL_PIN 10     // пин подсветки дисплея
#define PHOTO_PIN A3   // пин фоторезистора

// пины датчика CO2
#define MHZ_RX 2
#define MHZ_TX 3
// пин GAS сенсора
#define GASpin A0

#define LED_COM 11
//со2
#define LED_R 9
#define LED_G 6
#define LED_B 5
// alarm
#define ZUM_PIN 12
// кнопка
#define BTN_PIN 13

Необходимы следующие библиотеки (все доступны в свободном доступе или включены в среду Arduino IDE):

  • Wire.h
  • LiquidCrystal_I2C.h
  • RTClib.h
  • Adafruit_Sensor.h
  • Adafruit_BME280.h
  • MHZ19_uart.h
  • GyverTimer.h
  • GyverButton.h

Видеообзор

Вывод

Проект получился очень полезным. Оказалось, что контроль углекислого газа и опасных газов очень актуален. Их скапливается бывает так много, что намного превышает предельно допустимые концентрации.

Ну а теперь о минусах проекта в целом.
Из всех функций нужным оказалось именно контроль углекислого и опасных газов. Часы на таком экранчике почти не видны.
Поэтому есть идея полностью переделать данный проект на новую аппаратную платформу.

Разработка и создание RGB светодиодного монитора

Светодиодный RGB монитор

DIY проект

Полный процесс создания и тестирования монитора показан в данной статье.

Разработка алгоритма реализации эффекта огня

Эффект огня

Полное описание алгоритма и исходные тексты программы Ардуино читайте в статье.

В разработке

Подписывайтесь на группу ВК, чтобы не пропустить обновлений.

(с) Роман Исаков, 2020

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *