Skip to content

slacky1965/air_quality_monitor_zrd

Repository files navigation



Статья на Habr'е

Repository air_quality_monitor_zrd


  • Устройство представлят из себя домашний бытовой монитор (далее просто Монитор) со встроенными датчиками качества воздуха и климата, показания которых выводятся на экран epaper 4.2" и передаются в сеть Zigbee.
  • Монитор выводит следующие показания внутренних датчиков:
    • углекислого газа CO2,
    • летучих органичесикх веществ VOC,
    • температуры,
    • влажности,
    • атмосферного давления,
    • освещенности.
  • Монитор имеет возможность отображать показания температуры, влажности и заряда батареи с внешнего датчика напрямую, минуя координатор (прямой биндинг).
  • Монитор имеет возможность управлять внешним устройством (реле/вентилятор) напрямую, минуя координатор (прямой биндинг) на основании показаний датчиков CO2 и VOC, посылая команды On-Off.
  • Монитор может отображать данные в горизонтальном или вертикальном положении, а также менять режим вывода - черное на белом или белое на черном.
  • Настраиваемые параметры сохраняет в энергонезависимой памяти модуля ZTU.
  • Взаимодейстивие с "умными домами" через zigbee2mqtt.
  • Первоначальная настройка происходит через web-интерфейс zigbee2mqtt.
  • Подключиться к сети или покинуть сеть Zigbee - удерживать кнопку более 5 секунд (светодиод должен погаснуть и начать моргать красным цветом). Время присоединения к сети - полторы минуты (или пока моргает светодиод).
  • При одиночном нажатии кнопки Монитор высылает отчет по всем показаниям.
  • Монитор питается от источника постоянного тока напряжением 5 вольт через разъем USB Type-C и является роутером.

  • В Мониторе установлены следующие датчики и модули:
    • SCD40 - высокоточный цифровой датчик углекислого газа (CO2).
    • SGP40 - цифровой датчик летучих органических соединений (VOC) от Sensirion.
    • BME280 - комбинированный цифровой датчик влажности, давления и температуры фирмы Bosch Sensortec.
    • BH1750 - цифровой датчик освещённости.
    • DS3231 - часы реального времени (допускается установка DS1307).
    • WS2812B - адресные светодиоды, которые помогают визуально по цвету определить качество воздуха.
    • ZTU - модуль Zigbee от фирмы Tuya, выполенный на чипе TLSR8258F1KET32 фирмы Telink.
    • WeAct 4.2" - epaper экран от WeAct Studio.

Схема Монитора

Плата Монитора

Файлы для производства

Gerber

BOM

Корпус для печати

AQM_case_5.stl

AQM_cover_4.stl


Последнюю прошивку/air_quality_monitor_zrd_Vx.x.xx.bin нужно залить в модуль с помощью github.com/pvvx/TLSRPGM или оригинального программатора от Telink.

Telink PGM

Как сделать недорогой программатор на базе модулей TB-03 или TB-04 можно почитать тут

Проект сформирован таким образом, что его можно собрать обычным make'ом как под Windows, в оболочке Git Bash, а также под Linux'ом.

Как добавить проект в Eclipse можно почитать тут. Все точно так же, только для другого проекта.


При первом старте, если устройство не в сети, выводится заставка, в которой сообщается, что нужно сделать для подключения к сети. Также там можно увидеть название Монитора, логотип автора и номер версии прошивки. Время вывода заставки составляет 5 секунд. Если Монитор уже в сети, то заставка не выводится.

Описание экрана

Параметры на экране выводятся независимо от того, в сети устройство или нет. За исключением внешнего датчика. Обновление экрана происходит каждые 10 секунд.

  1. Дата, день недели и время.
  2. Иконка сети Zigbee. Выводится, когда устройство присоеденино к сети, иначе иконка отсутсвует.
  3. Значение VOC в index points от 0 до 500.
  4. Значение CO2 в PPM от 400 до 2000.
  5. Температура внутреннего датчика.
  6. Влажность внутреннего датчика.
  7. Влажность внешнего датчика.
  8. Температура внешнего датчика.
  9. Заряд батареи внешнего датчика.
  10. LQI - уровень сигнала в единицах от 0 до 255.
  11. Давление в гектопаскалях.
  12. Давление в мм ртутного столба.
  13. Освещение в LUX от 0 до 65535.
  14. Уровень сигнала в виде пиктограммы, вычисляется из LQI.

Сопряжение

Для сопряжения Монитора нужно нажать и удерживать нажатой кнопку более 5 секунд. Отпускать можно, когда светодиод погаснет и начнет мерцать красным светом. Время на сопряжение - полторы минуты (или пока мерцает светодиод). По истечению полутора минут Монитор перестает пытаться подключиться к сети.

Если сопряжение прошло успешно, светодиод сообщит об этом, поморгав зеленым цветом три раза. Также на экране в позиции 2 появится иконка сети Zigbee.

Показания

Дата и часы

В Мониторе используются часы реального времени. Периодически, если Монитор сопряжен, он запрашивает время у координатора и синхронизируется с полученным временем.

CO2

Показания, снимаемые с датчика SCD40, выводятся в PPM. Диапазон от 400 до 2000. Для более корректного вычисления содержания углекислого газа в датчик SCD40 каждый раз, перед измерением, передается значение атмосферного давления с датчика BME280. При желании датчик SCD40 может быть откалиброван принудительно или сброшен на заводские настройки. По умолчанию включена автоматическая калибровка.

VOC

Показания передаются в Index Points. Датчик SGP40 выдает некое RAW значение. Измерения происходят с периодом в 10 секунд. И это значение передается в специальную библиотеку, которую предоставляет изготовитель этого датчика. В этой библиотеке и вычисляется Index Points. Его диапазон от 0 до 500.

Климатические показания внутреннего датчика

Климатические показания, снимаемые с датчика BME280 - это температура, относительная влажность и атмосферное давление. Температурный диапазон измерения от -45 до +85 °С, влажности от 0 до 100% и давления от 300 до 1100 hPa. На экране значение температуры можно выводить в Цельсиях или в Фаренгейтах. Также на экране давление дублируется в мм ртутного столба.

Освещенность

Показания с датчика BH1750 передаются в люксах. Диапазон измерения от 1 до 65535 lx.

Вспомогательные индикации

Иконка сети Zigbee (на фото позиция 2) - выводится только, если Монитор сопряжен с сетью.

Уровень сигнала в LQI (на фото позиция 10) - уровень сигнала в цифровом диапазоне от 0 до 255.

Иконка Уровень сигнала (на фото позиция 14) - уровень сигнала от 0 до 5 (закрашиваются в черный цвет столбики на иконке). Вычисляется из LQI.

Климатические показания внешнего датчика

В Мониторе предусмотрена возможность выводить температуру, влажность и заряд батареи с внешнего датчика. К сожалению не все датчики умеют передавать свои показания на другое устройство в сети, отличное от координатора. Для получения показаний с внешнего датчика нужно настроить на нем прямой биндинг на Монитор. Для этого нужно в web-интерфейсе zigbee2mqtt зайти в этот датчик, перейти во вкладку Bind, выбрать кластер 1, выбрать Монитор и отметить передачу нужных параметров - температуру, влажность и батарейку. И после этого нажать Bind. Если по какой-то причине вывод показаний с внешнего датчика станет не нужным, то в этой же вкладке нужно нажать Unbind. К сожалению сам Монитор не умеет отслеживать, если от него отписались. Поэтому во вкладке Exposes самого Монитора сделана настройка - Clear Bind - если нужно очистить информацию о внешнем датчике. Это нужно сделать, если вы хотите поменять внешний длатчик на другой. Или подождать пару часов - если в течение 2-х часов внешний датчик ничего не присылает, то информация о нем автоматически стирается и данные с экрана очищаются.

Световая индикация

Тут все просто. Цвет меняется в зависимости от показаний CO2 и VOC.

  • Зеленый - хорошо (CO2 400 ... 600 и VOC 0 ... 100)
  • Желтый - приемлемо (CO2 601 ... 900 и VOC 101 ... 250)
  • Пурпурный - плохо (CO2 901 ... 1200 и VOC 251 ... 400)
  • Красный - очень плохо (CO2 1201 ... 2000 и VOC 401 ... 500)

Уровень интенсивности свечения можно регулировать от 0 (выключено) до 255 (максимальное свечение).

Еще индикатор будет мерцать красным цветом - при попытке сопряжения и зеленым - когда сопряжение произошло.


Вкладка Exposes

  • CO2 - выводит текущее значение CO2.
  • Voc index - выводит текущее значение VOC.
  • Temperature - выводит текущее значение внутреннего датчика температуры.
  • Humidity - выводит текущее значение внутреннего датчика влажности.
  • Pressure - выводит текущее значение внутреннего датчика давления.
  • Illuminance - выводит текущее значение освещенности.
  • Display rotate - как выводить информацию, в горизонтальной или вертикальной плоскости.
  • Display inversion - как выводить информацию, черное на белом или белое на черном.
  • Temperature display mode - показывать на экране градусы температуры с Цельсиях или в Фаренгейтах.
  • Temperature offset - подстроить датчик температуры, если по каким-то причинам он показывает неверную температуру. Диапазон настроек от -5 до +5 °С с шагом 0,1. По умолчанию значение подстройки датчика температуры выставлено в 0.
  • Read interval - как часто будут опрашиваться внутренние датчики. Диапазон опроса от 5 до 600 секунд. По умолчанию 10 секунд. Это не относится к датчику VOC SGP40, его опрос осуществляется по таймеру каждые 10 секунд. Связано с библиотекой вычисления Index Points от производителя датчика.
  • Enabling co2 control - включение и отключение управления внешним устройством по показаниям CO2. Также эта настройка активирует звук.
  • Low co2 - нижний порог CO2, если значение становится ниже этого порога, внешнее устройство выключается.
  • High co2 - верхний порог CO2, если значение становится больше этого порога, внешнее устройство включается. Также, при прохождении порога, Монитор сообщает об этом звуковым сигналом.
  • Enabling voc control - включение и отключение управления внешним устройством по показаниям VOC. Также эта настройка активирует звук.
  • Low voc - нижний порог VOC, если значение становится ниже этого порога, внешнее устройство выключается.
  • High voc - верхний порог VOC, если значение становится больше этого порога, внешнее устройство включается. Также, при прохождении порога, Монитор сообщает об этом звуковым сигналом.
  • Switch actions - какая команда отправляется для включения и выключения внешнего устройства. Если выставлено в on, то для включения внешнего устройства посылается команда On, а для выключения Off. Если выставлено в off, то для включения внешнего устройства посылается команда Off, а для выключения On.
  • Brightness - регулировка яркости светодиодной индикации. От 0 до 255. При 0 - светодиоды остаются выключены. 255 - соответсвует максимальной яркости.
  • Enabling sound - глобальное включение и выключение звука.
  • Frc co2 correction - выводит значение поправки для CO2, если была выполнена принудительная калибровка. Значение может быть как положительным, так и отрицательным.
  • Features sensors - специфические настройки Монитора, которые выведены в отдельную группу.
    • CO2 forced calibration - принудительная ручная калибровка датчика CO2. Нужно вынести устройство на свежий воздух минут на 15 и потом подать команду калибровки. Датчик примет зачение, измеренное при калибровке за "эталон" и выставит поправку, которую можно увидеть в Frc co2 correction.
    • CO2 factory reset - сброс датчика CO2 к заводским настройкам. Значение ручной калибровки, если таковая была сделана, тоже сбрасываются.
    • Bind reset - очистит таблицу биндинга внешнего датчика температуры/влажности.

Вкладка Bind

Настройка прямого биндинга на исполнительное устройство - реле/вентилятор и т.п., которое будет включаться и выключаться, если включен Enabling co2 control и/или Enabling voc control и выставлены соответствующие пороги. Нужно только учесть, что если минимальный порог выставлен слишком низким, то внешнее устройство никогда не выключится. Для настройки, нужно выбрать эндпоинт в Source endpoint, где на Мониторе находится кластер On-Off - это 1, далее выбрать внешнее устройство в Destination и кластер на внешнем устройстве в Destination endpoint, отметить галочкой OnOff и нажать на Bind справа. Если управление станет не нужным или нужно будет изменить внешнее устройство, нужно нажать Unbind.


Вкладка Reporting

Настройка репортинга.

Репортинг кастомных атрибутов лучше не трогать. Их можно сразу отличить по имени - attr6, attr7 и т.д.

Репортинг основных параметров - CO2, VOC, Temperature, Humidity, Pressure и Illuminance можно настроить в соответствии с вашими желаниями.


Настройки с помощью кнопки на Мониторе

  • Нажать один раз - происходит отправка отчетов по всем параметрам в сеть Zigbee.
  • Нажать быстро два раза - экран меняет ориентацию на 90 градусов.
  • Нажать быстро три раза - экран меняет вывод с черного на белом на белое на черном и наоборот.
  • Нажать быстро четыре раза - изменит вывод температуры с Цельсия на Фаренгейты и наоборот.
  • Нажать быстро пять раз - перезагрузить Монитор.

Каждое нажатие кнопки сопровождается промаргиванием световой индикации красным цветом.


Связаться со мной можно в Telegram.

Если захотите отблагодарить автора, то это можно сделать через ЮMoney


История версий

  • 1.0.01
    • Начало.
  • 1.0.02
    • Добавлен параметр LifeTime - время наработки Монитора в часах.
    • Добавлена возможность перезагрузки Монитора по кнопке.
  • 1.0.03
    • Измененая последовательность запуска тасков опроса датчиков. Уменьшена очередь.
    • Устранена проблема с репортингом.
  • 1.0.04
    • Добавлена сигнализация звуком по нарастающей при его включении и по ниспадающей при его выключении.
    • Немного измена процедура factory reset.

Наверх

About

Air Quality Monitor Zigbee

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages