Станция контроля микроклимата — «Умная фоторамка»
В жилом доме, квартире или офисе формируется свой микроклимат. Многие живые биообъекты, такие как человек при дыхании выдыхают углекислый газ, он же выделяется в процессе горения в газовой плите. Кроме того, несгоревшие остатки бытового газа остаются в воздухе. Если проветривание долго не осуществляется, воздух начинает отравлять людей. Поэтому нужно иметь средства для контроля уровня газов в воздухе. Можно покупать устройства умного дома за бешенные деньги, а лучше сделать самостоятельно!
Прототип системы: «Станция контроля микроклимата»
Станция контроля микроклимата
DIY проект
Решил рассказать об одной интересной измерительной системе, которую можно сделать своими руками. Это не совсем мой проект (т.н. Часы-метеостанция на Ардуино), я его подглядел в интернете у Alex Gyver, он получил распространение и многие его повторяли. Идея в том, чтобы совместить часы с различными измерениями микроклимата и углекислого газа. Вести мониторинг в режиме реального времени. Предупреждать о выходе содержания угл.газа за пределы нормы цветовым индикатором.
Скажу сразу, результаты измерений меня поразили! Концентрации опасных газов бывает зашкаливали! Эта станция стала постоянным помощником в доме.
Я решил немного модифицировать систему и добавил туда датчик контроля опасных газов MQ-135, пьезопищалку для звукового предупреждения об опасном содержании газа в помещении. Также доработал программное обеспечение для работы с новыми датчиком и звуком, ну и добавил возможность мониторинга дополнительных параметров.
В итоге система может на главном экране показывать дату, время, день недели, температуру и влажность воздуха, атм. давление, предсказывать осадки, измерять концентрацию углекислого газа и опасных газов.
При нажатии на сенсорную кнопку выводит последовательно графики изменений всех параметров за час и за день.
Цветовыми индикаторами показывается содержание углекислого газа. Зеленым — нормальное содержание, синим — превышение и красным — критическое превышение.
Если текущее содержание опасных газов превышает порог — пищалка издает небольшой сигнал, предупреждая об опасной ситуации. Этой функции очень не хватало в оригинальном проекте!
Еще также, как и в оригинальном проекте яркость подсветки экрана меняется в зависимости от освещенности в помещении. Была введена еще динамическая корректировка яркости свечения цветовых индикаторов.
Нам потребуется
- Ардуино NANO
- Дисплей LCD2004 c I2C модулем
- RGB светодиод (достаточно 1 шт)
- Пьезодинамик со встроенным генератором
- Модуль с датчика MQ-135
- Модуль часов реального времени DS3231
- Модуль датчика температуры, давления, влажности BMP280
- Датчик CO2 MH-Z19
- Сенсорная кнопка TTP223
- Фоторезистор
- Резистор 10 кОм
- Резистор 220 Ом (на каждый светодиод)
- Блок питания 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