Сразу должен сказать, что идея не моя. Изначально речь шла об устройстве на дисплее epaper, который бы на экран выводил значения CO2, температуру и влажность. Ну еще время. В процессе обсуждения родился проект, который мы назвали Air Quality Monitor.

Изучение рынка готовых устройств похожего направления привело к пониманию, а что же мы хотим получить на выходе.
Самым главным критерием была выбрана повторяемость как можно большим количеством пользователей Умных Домов, даже теми, которых пугает паяльник. Поэтому все датчики были выбраны в виде готовых модулей, которые просто вставляются в соответствующие разъемы на общей плате, а пайка сведена к минимуму.

Далее выбор датчиков — CO2, VOC, температуры, влажности, давления, освещенности. Также нужна подсветка, но не просто, а чтобы меняла цвет в зависимости от качества воздуха, чтобы можно было определить это качество не глядя на экран, а ориентируясь только по цвету. Ну и хорошо бы уметь управлять яркостью этой подсветки, вплоть до полного ее выключения.
Далее выбор возможности управления — например включать вытяжку (или еще что‑то) по данным качества воздуха — CO2 и (или) VOC.
Далее — возможность выводить на экран показания внешнего датчика температуры и влажности, если возникнет такая необходимость.
Далее, чего не должно быть в Мониторе — самовозгорающихся компонентов, таких, как например, аккумуляторы.
Итак, рассмотрим основные компоненты Air Quality Monitor, с некоторыми комментариями по выбору.
WeAct 4.2" — epaper экран от WeAct Studio — большой, контрастный, с возможностью вывода больших символов, которые хорошо видны даже людям с плохим зрением.
SCD40 — высокоточный цифровой датчик углекислого газа (CO2) — умеет отдавать температуру и влажность, но в Мониторе эти показания не используются, потому что в процессе работы датчик нагревается и показания уплывают.
BME280 — комбинированный цифровой датчик влажности, давления и температуры фирмы Bosch Sensortec — умеет, помимо температуры и влажности, отдавать давление, которое нужно датчику CO2 для более корректного расчета показаний.
SGP40 — цифровой датчик летучих органических соединений (VOC) от Sensirion.
BH1750 — цифровой датчик освещённости.
DS3231 — часы реального времени (допускается установка DS1307) — изначально проект был без RTC, но в процессе тестирования выяснилось, что считать время основным микроконтроллером не получается с достаточной точностью.
WS2812B — адресные светодиоды, которые помогают визуально по цвету определить качество воздуха.
TMB12A05 — звуковой извещатель.
ZTU — модуль Zigbee от фирмы Tuya, выполненный на чипе TLSR8258F1KET32 фирмы Telink — основной и единственный микроконтроллер Монитора.
Схема монитора выглядит так.



Краткое описание возможностей Air Quality Monitor.
-
Монитор выводит следующие показания внутренних датчиков:
углекислого газа CO2,
летучих органических веществ VOC,
температуры,
влажности,
атмосферного давления,
освещенности.
Монитор имеет возможность отображать показания температуры, влажности и заряда батареи с внешнего датчика напрямую, минуя координатор (прямой биндинг).
Монитор имеет возможность управлять внешним устройством (реле/вентилятор) напрямую, минуя координатор (прямой биндинг) на основании показаний датчиков CO2 и (или) VOC, посылая команды On‑Off.
Монитор может отображать данные в горизонтальном или вертикальном положении, а также менять режим вывода — черное на белом или белое на черном.
Настраиваемые параметры сохраняет в энергонезависимой памяти модуля ZTU.
Взаимодействие с «умными домами» через zigbee2mqtt.
Первоначальная настройка происходит через web‑интерфейс zigbee2mqtt.
Монитор питается от источника постоянного тока напряжением 5 вольт через разъем USB Type‑C и является роутером.
Параметры на экране выводятся независимо от того, в сети устройство или нет, за исключением внешнего датчика. Обновление экрана происходит каждые 10 секунд.

Дата, день недели и время. Периодически, если Монитор сопряжен, он запрашивает время у координатора и синхронизируется с полученным временем.
Иконка сети Zigbee. Выводится, когда устройство присоединено к сети, иначе иконка отсутствует.
Значение VOC. Показания передаются в Index Points. Датчик SGP40 выдает некое RAW значение. Измерения происходят с периодом в 10 секунд. И это значение передается в специальную библиотеку, которую предоставляет производитель этого датчика. В этой библиотеке и вычисляется Index Points. Его диапазон от 0 до 500
Значение CO2 в PPM от 400 до 2000 (вне этого диапазона показания будут с большой погрешностью). Для более корректного вычисления содержания углекислого газа в датчик SCD40 каждый раз, перед измерением, передается значение атмосферного давления с датчика BME280. При желании датчик SCD40 может быть откалиброван принудительно или сброшен на заводские настройки. По умолчанию включена автоматическая калибровка.
Температура внутреннего датчика. Диапазон измерения от -45 до +85 °С.
Влажность внутреннего датчика. Диапазон измерения от 0 до 100%.
Влажность внешнего датчика.
Температура внешнего датчика.
Заряд батареи внешнего датчика.
LQI — уровень сигнала в единицах от 0 до 255.
Давление в гектопаскалях. Диапазон измерения от 300 до 1100 hPa.
Давление в мм ртутного столба.
Освещение в LUX от 0 до 65535.
Уровень сигнала в виде пиктограммы, вычисляется из LQI.
Световая индикация
Тут все просто. Цвет меняется в зависимости от показаний 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 (максимальное свечение).
Еще индикатор будет мерцать красным цветом — при попытке сопряжения и зеленым — когда сопряжение произошло.
Настройки с помощью кнопки на Мониторе
Нажать один раз — происходит отправка отчетов по всем параметрам в сеть Zigbee.
Нажать быстро два раза — экран меняет ориентацию на 90 градусов.
Нажать быстро три раза — экран меняет вывод с черного на белом на белое на черном и наоборот.
Нажать быстро четыре раза — изменит вывод температуры с Цельсия на Фаренгейты и наоборот.
Нажать быстро пять раз — перезагрузить Монитор.
Нажать и держать кнопку более 5 секунд — подключиться к сети или покинуть сеть Zigbee (светодиод должен погаснуть и начать моргать красным цветом). Время присоединения к сети — полторы минуты (или пока моргает светодиод).
Каждое нажатие кнопки сопровождается промаргиванием световой индикации красным цветом.
Настройка и управление с помощью интерфейса zigbee2mqtt
Вкладка 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 секунд. Это не относится к датчику VOCSGP40
, его опрос осуществляется по таймеру каждые 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 можно настроить в соответствии с вашими желаниями.
Настройка внешнего датчика температуры и влажности.
Монитор имеет возможность отображать у себя на экране температуру, влажность и заряд батареи от внешнего датчика. Самое важное условие — такой датчик должен уметь отправлять свои отчеты не только координатору, но и выбранному устройству. т. е. он должен уметь прямой биндинг на другие устройства.
Поиск таких датчиков привел к выводу, что их практически никто не делает. Ну вот EfektaLab, если только. Потому было принято решение, взять какой‑нибудь заводской датчик на таком же модуле ZTU и просто переписать ему прошивку. Сильно не буду вдаваться в подробности, это можно еще одну статью написать:)) В общем какой датчик можно перепрограммировать и как, читайте в проекте на github'е

Для получения показаний с внешнего датчика нужно настроить на нем прямой биндинг на Монитор. Для этого нужно в web‑интерфейсе zigbee2mqtt зайти в этот датчик, перейти во вкладку Bind, выбрать кластер 1, выбрать Монитор и отметить передачу нужных параметров — температуру, влажность и батарейку. И после этого нажать Bind. Если по какой‑то причине вывод показаний с внешнего датчика станет не нужным, то в этой же вкладке нужно нажать Unbind. К сожалению, сам Монитор не умеет отслеживать, если от него отписались. Поэтому во вкладке Exposes самого Монитора сделана настройка — Clear Bind — если нужно очистить информацию о внешнем датчике. Это нужно сделать, если вы хотите поменять внешний датчик на другой. Или подождать пару часов — если в течение 2-х часов внешний датчик ничего не присылает, то информация о нем автоматически стирается и данные с экрана очищаются. Если по какой‑то причине будут присоединены несколько датчиков температуры к одному Монитору, то на экран будет выводится информация с того датчика, который первым прислал отчет. Все отчеты от других датчиков будут игнорироваться.
Прошивка.
Хотелось бы поделиться некоторыми трудностями, с которыми пришлось столкнуться при написании прошивки. Самая большая трудность в том, что для TLSR8258 практически нет примеров. И все приходится адаптировать самому и проверять. На это уходит очень много времени. Вот например экран. Да, у WeAct Studio есть примеры. Но для других чипов. Но это полбеды. Существуют программы, которые помогают перенести шрифты или иконки в формат, понятный экрану. Но WeAct Studio зачем‑то пошла не совсем стандартным путем. Пришлось переписывать работу с images. Также нет готовых примеров работы с датчиками по i2c. Нет, в открытом доступе есть примеры, но опять же, это все для других контроллеров. Но в результате мы со всем справились:‑))
Где взять прошивку и как ее загрузить читайте в самом конце статьи, там будут ссылки на github.
Немного фотографий.





Спасибы.
Олегу Novgorod_DIYZi — за идею, за техническое обеспечение, за советы, за тестирование и за предоставленные фотографии. Ну и если кто‑то хочет поучаствовать в тестировании такого Монитора, обращайтесь к Олегу напрямую.
Сергею SGHome — за тестирование оборудования и видео‑обзоры.
Джону Гудману — за прояснение некоторых тонких моментов в работе с датчиками CO2 и VOC.
Если кто‑то хочет обсудить Zigbee, или получить помощь в настройке или создании устройств, есть несколько хороших телеграм‑чатов.
Вокруг да около Zigbee — Обсуждение устройств, прошивок и прочего софта, работающего с Zigbee
zigdev — Группа для разработчиков zigbee девайсов/прошивок. Здесь помогают разобраться как скомпилировать/написать прошивку. Помогают с разработкой железа под зигби.
DIY DEV — группа о DIY электронике. Умные дома, интернет вещей, разработка электроники, программирование.
zigbazar — базар для Zigbee устройств, только объявления продажа/покупка/обмен/дарение/отзывы
Проект Air Quality Monitor на github'е.
Комментарии (47)
REPISOT
21.08.2025 22:12Какое потребление всей схемы? Я вижу линейный стабилизатор, на сколько нагревается прибор изнутри, на сколько уходят показания температуры?
При этом датчик BME280 прямо над стабилизатором, и нагретый воздух будет течь прямо на него. Да, с обратной стороны платы тоже.
Скрытый текст
Вижу решетку снизу, но у корпуса нет ножек, чтобы она работала. И судя по задней крышке, там вентиляции тоже нет.
А на фото, как я понимаю, плату просто положили, чтобы сфотографировать, потому что датчики не с той стороны.
Скрытый текст
А так бы я собрал такой гаджет. У меня даже лежат некоторые из примененных модулей.
P.S. Поиск выдает, что есть экран с красным цветом в такую же цену. Было бы неплохо использовать его вместе с цветом подсветки.
Скрытый текст
DIY_Zi
21.08.2025 22:12потребление в покое 28мА , потребление в момент перерисовки всего экрана 62мА всего, датчик bme280 вставляется перпендикулярно к плате и его сенсор находится прямо под решеткой. если Вас волнует тепловой режим именно этого сенсора то модуль с ним и материнская плата связаны только разъёмом, воздух по вашей траектории нагретый не подымается , проверяли тепловизором(очень мизерные токи потребления и dc-dc на таких токах греется +0,1/0,2 гр. относительно температуры воздуха вокруг). Отверстия решетки по кругу сделаны симметрично так как монитор имеет возможность работать и вертикально. на этой же картинке видно расположение bme280 и видно что он висит в воздухе над пространством между 2мя платами, и кстати при вертикальном режиме bme расположен будет на боковой кромке. Цветной экран перерисовка в разы дольше, он тормозной!
REPISOT
21.08.2025 22:12dc-dc на таких токах греется +0,1/0,2 гр
Если посчитать для тока 28 mA, при падении на диоде 0,4В, на стабилизаторе выделится 0,0364 Вт. Тепловое сопротивление даже с массивным полигоном не падает ниже 50, так что перегрев будет 1,8 градуса. Не много, но совсем не 0,2. Это без учета пиков в 62 мА.
И без учета, что это не единственный источник тепла. 28 mA @ 3,3В тоже уходят в тепло в этом же корпусе. А это плюс 0,1 Вт. По факту в корпусе рассеивается 5В х 0,028 А = 0,14 (плюс пики при перерисовке) = 0,15 Вт. Вроде бы немного, но в закрытом корпусе из пластика... Поэтому и спрашиваю - вы измеряли, на сколько показания датчика внутри отличаются от показаний снаружи?
Скрытый текст
Скрытый текст
И это не dc-dc. Это линейный стабилизатор.
zatim
21.08.2025 22:12Ну что вы в самом деле! Какой может быть перегрев от каких то там милливатт? Давайте все таки придерживаться здравого смысла. Да за счет естественного рассеяния все тепло уйдет в окружающее пространство еще до того как достигнет датчика.
Ps: какое отношение перегрев одной микросхемы имеет к температуре всего корпуса? Даже если он закрытый, эти милливатты должны сначала нагреть этот самый корпус чтобы температура его выросла.
avost
21.08.2025 22:12Да за счет естественного рассеяния все тепло уйдет в окружающее пространство еще до того как достигнет датчика.
Перед тем, как уйти в окружающее пространство, тепло уйдёт в воздух внутри корпуса. Температуру которого измерит находящийся там внутри датчик.
Даже если он закрытый, эти милливатты должны сначала нагреть этот самый корпус чтобы температура его выросла.
Сначала, они нагреют воздух. Корпус - дело десятое. Но, потом, да, нагреют и его. Это же прибор долговременной непрерывной работы, так что через час или два система прийдёт в некоторое равновесное (и нагретое) состояние. И температура воздуха внутри будет больше температуры корпуса. Теплопроводность пластмассы не особо велика.
zatim
21.08.2025 22:12Вы, видимо, плохо себе представляете о чем идет речь. Источником тепла являются электронные компоненты, которые распаяны на печатной плате, состоящей из медной фольги и стеклотекстолита. Воздух - теплоизолятор, медь - отличный теплопроводник. Дальше объяснять? Теплопроводность пластмассы невелика, но намного выше чем теплопроводность воздуха, который, еще раз повторяю, является замечательным теплоизолятором.
avost
21.08.2025 22:12медь - отличный теплопроводник.
А куда медь будет отводить тепло? Даже поастмассы она касается несколькими крохотными точками.
Дальше объяснять?
Да, конечно. Расчитаете поток тепла через крепёж?
Да, и что, вы говорите, у вас снаружи вашей коробочки? Воздух, говорите?воздуха, который, еще раз повторяю, является замечательным теплоизолятором.
Замечательный теплоизолятор, говорите?
zatim
21.08.2025 22:12А куда медь будет отводить тепло?
На саму себя.
Да, конечно
Как все грустно то у вас) сначала огромная плата должна нагреться
Расчитаете поток тепла через крепёж?
Почему сразу крепеж? Вы физику в школе учили? Кроме теплопередачи есть еще излучение.
Замечательный теплоизолятор, говорите?
Срочно в школу, уважаемый!
avost
21.08.2025 22:12На саму себя
О боже, вы серьёзно? Про закон сохранения энергии что-нибудь слышали?
Как все грустно то у вас) сначала огромная плата должна нагреться
И дальше-то что? Вот, нагрелась. Дальше куда тепло делось? Мы про равновесное состояние говорим.
Вы физику в школе учили?
Я-то да. А, вот, вы её, похоже, курили.
Кроме теплопередачи есть еще излучение.
И куда внутри корпуса у вас будет излучать тепло плата? Ну, же, соберитесь! (Это я ещё про внутреннюю часть корпуса не спросил)
Срочно в школу, уважаемый!
:facepalm
zatim
21.08.2025 22:12Але! Хватит бред нести) Сначала от деталей нагреется плата, а у нее нехилая такая теплоемкость. Затем от платы излучением и теплопередачей тепло уйдет на корпус и во внешнюю среду.
Я-то да. А, вот, вы её, похоже, курили
Что то по вам не видно) такого лютейшего бреда я давно не видел.
avost
21.08.2025 22:12Сначала от деталей нагреется плата, а у нее нехилая такая теплоемкость
И что дальше? Причём здесь плата и её теплоёмкость? Мы об установившемся процессе говорим, в третий раз напоминаю. Вы в курсе что это означает? Попробуйте узнать, наконец.
такого лютейшего бреда я давно не видел.
Это вы о законе сохранения энергии? Ну, будете хорошо учиться, у вас будет ещё много удивительных открытий!
zatim
21.08.2025 22:12Причём здесь плата и её теплоёмкость?
При том, что она работает и теплоотводом и радиатором. Отведенное тепло она излучает всей своей нехилой площадью.
Причем здесь установившийся/неустановившийся процесс? Излучение от этого не зависит) вы несете чушь. Разберитесь в процессе. А лучше руками хоть раз соберите хоть один девайс. А то диванных икспердов тут и так перебор.
REPISOT
21.08.2025 22:12Какой может быть перегрев от каких то там милливатт?
Это было бы справедливо для практически любой электроники. Но не для термодатчика. Эти "милливатты" могут ухудшить точность измерений в разы. А зачем, если этого можно избежать? Просто, чтобы ничего не проверять, не переделывать, не признавать ошибки?
zatim
21.08.2025 22:12Эти "милливатты" могут ухудшить точность измерений в разы.
Ну, опять таки повторяю, давайте придерживаться логики и здравого смысла. Ну какие еще разы!? На доли градуса - максимум. А измерять температуру с точностью выше чем единицы градусов для бытового применения вообще не имеет никакого смысла.
REPISOT
21.08.2025 22:12Ну какие еще разы!? На доли градуса - максимум.
У BME280 точность 0,5 градуса. Эти "доли градуса", например, дополнительная ошибка 0,5 градуса - и будет разы. В 2 раза.
Давайте придерживаться логики и здравого смысла.
Давайте. Какие ваши аргументы, что ошибка из-за перегрева составит меньше 0,5 градуса? Моделирование, практические измерения? Нет? Просто "мне так кажется"?
А измерять температуру с точностью выше чем единицы градусов для бытового применения вообще не имеет никакого смысла
Ага. Перешли с позиции "ничего ему не будет" на "никому и не надо"?
А может, кому-то эта точность лучше 1 градуса и нужна. Зачем-то же автор поставил BME280, а не терморезистор за рубль. Кроме того, ошибка измерения температуры приводит к ошибке измерения давления этим датчиком.
И все ради того, чтобы успокоить себя и даже не проверять, есть ли влияние перегрева. Я даже не говорю о доработке.
alaltitov
21.08.2025 22:12Очень странная разводка платы:
Почему дорожки не под 45°?
Зачем некоторые дорожки проходят близко к монтажным отверстиям?
Какая температура у линейного преобразователя при работе? Может есть смысл заменить на DC/DC?
Странное расположение конденсаторов, например С6.
Странное расположение датчиков. Предполагаю, что они показывают среднюю температуру по больнице. У компании Sensirion есть, к примеру для SCD4x гайд, как должен располагаться датчик.
DIY_Zi
21.08.2025 22:12Разводка - вот это странно, а трассировка у платы нормальная для данного DIY проекта :) это не плата для производства заводами этого датчика на продажу. Кроме того этот проект опенсорс и ничто не мешает Вам его изменить под свои желания и требования.
странный вопрос, ответ тоже странный будет - потому что именно так захотелось
потому что они там проложены для адресных ледов по периметру
может и имеет, но мы пока не пришли к такому выводу
конденсаторы типа С3-С6 это как раз для этих ледов
данный проект позиционируется как DIY устройство для самостоятельной сборки с применением стандартных продаваемых модулей на Али. SCD4x расположен так что бы окно решетки на задней крышке корпуса приходилось непосредственно напротив. Температуру и влажность от SCD40 не использует прошивка только от BME280. Гайд замечательный но не актуален применительно к данному проекту , опять таки по причине не использования внутренней температуры и влажности, а так же использование модуля в сборе с Али а не сам сенсор отдельно, что исключает физический контакт основной платы и сенсора.
вот температуры по "больнице" с BME280 и с внешнего датчика TUYA zigbee который биндом прицеплен к монитору. По бокам 2 батарейных датчика сяоми заводских с родными прошивками select26
21.08.2025 22:12странный вопрос, ответ тоже странный будет
Вам умные вопросы задают не просто так, а чтобы вы задумались и посмотрели как делать правильно. Вопрос очень правильный. И на основании приведенных комментариев вы легко могли бы сухественно улучшить топологию ПП.
А с такой реакцией на критику, зачем вы вообще публикуетесь тут? Ради восторженных отзывов неспециалистов?DIY_Zi
21.08.2025 22:12Вот тут есть один слабый момент я не публикуюсь тут, совсем и абсолютно , я только комментирую. И мне лично не нужны восторженные отзывы, все отзывы читаются и анализируется разработчиком.
REPISOT
21.08.2025 22:12вот температуры по "больнице" с BME280 и с внешнего датчика TUYA zigbee который
Тут у вас уже расхождение в 0,4 градуса. А это без корпуса. Вы удивитесь, как сильно корпус влияет на тепловой режим. Причем "внутренний" показывает температуру ниже. У BME280 погрешность ±0.5° при 25 °C. У TUYA zigbee какая погрешность? Вряд ли его можно использовать как эталон. С сяоми та же история.
Тут надо измерить с корпусом и без. Или сравнить показания собранного датчика сразу при включении и через час работы. Внешнюю температуру контролировать любым датчиком. Тут важно не абсолютное значение, а неизменность температуры среды (или как раз изменение).
alaltitov
21.08.2025 22:12Кроме того этот проект опенсорс и ничто не мешает Вам его изменить под свои желания и требования.
Это называется не изменить, а сделать схему и трассировку платы заново. Но спасибо, у меня свои есть.
странный вопрос, ответ тоже странный будет - потому что именно так захотелось
Да, ответ действительно странный
потому что они там проложены для адресных ледов по периметру
А как это относится к сути вопроса?
может и имеет, но мы пока не пришли к такому выводу
Я и спросил, какая температура у AMS1117 в работе. С учетом того, что для датчиков критически важно максимально снизить влияние температуры и шума, то лучше поставить DC/DC. А линейный можно оставить. Но уже после DC/DC. Возможно даже сделать две ветки 3.3V (для BME280 и датчика освещенности отдельную) и между ними феррит. Да, и отсутствует TVS / ESD на USB.
данный проект позиционируется как DIY устройство для самостоятельной сборки с применением стандартных продаваемых модулей на Али. SCD4x расположен так что бы окно решетки на задней крышке корпуса приходилось непосредственно напротив. Температуру и влажность от SCD40 не использует прошивка только от BME280. Гайд замечательный но не актуален применительно к данному проекту , опять таки по причине не использования внутренней температуры и влажности, а так же использование модуля в сборе с Али а не сам сенсор отдельно, что исключает физический контакт основной платы и сенсора.
Поэтому я и сказал, что показания будут не референсными, так как у Вас тут много где есть компромисы. Нет EMI-фильтров.
zatim
21.08.2025 22:12В схеме буззера ошибка. Или перепутана полярность питания или транзистор не той проводимости. Поскольку эта ошибка также повторена в разводке платы, проще поменять транзистор на pnp.
itoolsy
21.08.2025 22:12Пока все критикуют температурные датчики, у меня вопрос по VOC - какой в нем смысл при использовании в помещении? Да и на улице - такое себе практическое применение. У вас он либо всегда будет ок, либо не ок после того, как пол с хлоркой помоете. На сколько мне известно, стоит анализировать pm 2.5 / 10, а не хим состав воздуха, в помещении. Чем был продиктовано желание VOC измерять?
Slacky1965 Автор
21.08.2025 22:12Наверно затем, что есть хим соединения, которые наш нос не может учуять. И дело не в том, что мы сделали сознательно, например пол с хлоркой помыли. А в том, что в дом могут попасть продукты или предметы, которые фонят.
falcon4fun
21.08.2025 22:12/me судорожно прячет nite mega glowring в карман
А? Что фонит? У нас ничего не фонит, вам показалось XD
ctvuf
21.08.2025 22:12Автору плюс за работу, всё подобное приветствуется. Но измерять температуру в корпусе когда там 150мВт рассеивается (причем неравномерно - датчик СО2 потребляет импульсами). Сам собрал подобную схему, но датчики температуры все внешние. Да и в большинстве устройств никто не полагается на внутренние, тем более на датчик самого SCD-40
xSVPx
А ээээ вы датчик со2 не калибруете ?
DmitryOlkhovoi
я кстати не сильно шарю, но игрался с датчиком, для калибровки его достаточно было выставить в окно, пока не покажет 400.
xSVPx
Беда в том, что происходит с такими датчиками если их не выставлять раз в неделю в окно....
Oleg-AC
Надо ли "выставлять" сильно зависит от самих датчиков.
В целом, в этой станции нормальный набор датчиков, но лично для себя я выбрал другие (не совпал ни по одной позиции).
Как-раз, чтобы не заниматься калибровкой и "продуванием".
xSVPx
Не от датчиков зависит, а от режима их работы. В 99% случаев это датчики для пром применения, и им подходит вариант с непрерывной калибровкой. В бытовых условиях это приводит к тому, что значения довольно сильно искажаются т.к. в типичном жилище минимальное недельное значение вовсе не 415ppm. Обычно это прям два отдельных режима работы, которые можно выбирать.
Именно эта проблема (непонятно как реализовано в готовом приборе) в свое время сподвигла меня собрать свой подобный монитор. Правда я использовал нормальный двухлучевой датчик, но, возможно и эти показывают не хуже.
К сожалению, судя по ответам автора он матчасть не изучал, поэтому если будете использовать его наработки яб рекомендовал тщательно изучить как и что там реализовано. И добавить возможность калибровки внешней аппаратной кнопкой. А то придется вам раз в год в парк тащить умный дом, координатор и парочку аккумуляторов :).
А то будете как 99% владельцев: "после отпуска у меня почему-то глючит монитор со2 и показывает 1300ppm, но потом, через недельку у него этот проходит и он показывает 400-500."
Slacky1965 Автор
Автор изучал. И пришел в выводу, что как раз в бытовых условиях автокалибровки вполне достаточно. Никто не живет постоянно с закупоренными окнами.
DIY_Zi
Простите уважаемый xSVPx , Вы открывали доку на сенсор SCD40 ? и вы понимаете принцип его работы? и Вы пользуетесь или тестируете такой сенсор на протяжении хотя бы 2-3 месяцев? Я использую данный сенсор более 2 лет в быту(свой дом), и за все время эксплуатации я из 9 сенсоров в доме калибровал только 1(завышал на 200 ррм примерно прямо с завода). И после отпусков никаких отклонений, у этих сенсоров я не наблюдал ни разу.
про 99%владельцев это умиляет , потому что у меня прямая статистика от покупателей сенсоров и они с "недельками" не сталкиваются.
xSVPx
Я-то да. И я описал вам "кейс" с которым встречается большинство пользователей. У них понимаете ли 400-500 ppm всегда показывает. Кроме случаев после отпуска, когда показывает 1300-2000. Вы же понимаете почему так :)?
В даташите на мой датчик было сказано перекалибровывать перед использованием, после любой тпяски итд итп. Есть отчеты, что с годами калибровка сбивается не сильно.
Но:
Один раз откалибровать необходимо. Иногда перекалибровывать невредно.
В большинстве случаев нельзя пользоваться режимом постоянной автокалибровки. Это приводит к тому, что вместо 1300 человек 500 видит...
DIY_Zi
Скорее всего у вас сенсор Senseair s8 ? и в нем да очень часто включают по дефолту авто режим и потом бегают с ним на воздух. Хотя есть родной софт и через уарт можно все вернуть тоже в норму (без походов на балкон)
xSVPx
Это чудесно, но неочевидно.
Особенно на фоне того, что вы предлагаете режим ручной калибровки включать взяв с собой в парк компьютер с координатором и аккумуляторы к нему ;)?
Видите ли. В измерительном приборе главное не то, какая там индикация, какие е-инки итд итп.
Важно как он измеряет и калибруется и насколько можно доверять показаниям. Всё остальное - бессмысленные примочки.
DIY_Zi
простите , но я не понимаю уже про какой именно сенсор вы говорите, если про SCD40 то ему ничего калибровать постоянно не нужно.
Если про какие то гипотетические другие сенсоры со2 то может быть у каких то и нужно(для этого есть ДШ на них). Про парк вообще не понял - я не предлагал идти в парк с ним. Сидите дома за компом подключили S8 сенсор по уарту к компу и штатным софтом от Senseair спокойно восстанавливаете все его калибровки до заводского состояния.
И вот тут есть большая разница между измерительным прибором который проходит сертификацию и поверку в заводских условиях, и DIY проектом Монитора Показометра - который вам сообщает +- достоверные данные когда вам стоит открыть окно проветрить.
А насколько можно доверять показаниям контрафактных датчиков Senseair с Али , сделанные дядюшкой Ляо в подвале, это личное дело каждого пользователя. Естественно если для Вас критически важно знать что сейчас 1891ппм а не 2000ппм то стоит посмотреть в сторону профессиональной техники заводского исполнения.
xSVPx
Я со своим как-раз в парк и сходил. Не калибровать же его пока он в помещении находится, в этом нет совершенно никакого смысла. В его сторону достаточно один раз выдохнуть, чтобы получить не калибровку, а черти что.
Слишком точными эти датчики не будут, но если есть возможность откалибровать их лучше, то лучше лучше, чем хуже...
Я боюсь ни о каких +-5% при вашем подходе (да и при моем) и речи быть не может. Разбег в десятки процентов уже был бы не плохим. Калибруя же как попало можно и в разы показания загрубить.
ЗЫ. По данным датчиков видно когда человек ночью пописать ходил. Он при этом перемещивает воздух и значения убегают огого...
Slacky1965 Автор
Я думаю, что по поводу автокалибровки Вы ошибаетесь. Почему такие выводы? Во-первых, она включена с завода. Если бы все было плохо, вряд ли на заводе ее включали бы по умолчанию. Во-вторых, я проанализировал несколько разных библиотек под этот датчик. И потому, я сделал так, как сделал.
xSVPx
В смысле ошибаюсь :)? Как по вашему работает автоматическая калибровка "включенная с завода" ? Что будет показывать "заводской" датчик если его на недельку положить в атмосферу с 2000ppm ? Какое он через неделю покажет значение ?
Вы можете делать как угодно - право ваше. Но аргументы "раз сделано с завода - так и надо" для меня выглядят несколько странно.
Slacky1965 Автор
А зачем и главное как датчик попадет на неделю в 2000 ppm? Вот у меня он с мая в комнате стоит. Где живу я и еще две огромные собаки. Диапазон показывает разный. Бывает и 400, а бывает и 1300. Но он работает и я вижу, на что и как он реагирует. Зачем придумывать какие-то искусственные условия? Вы хотите мне доказать, что у меня не правильно, а правильно только, как Вы утверждаете? Ну хорошо, Вы правы, я нет :))
xSVPx
Правильно так, как написано в документации. Попробуйте осознать как там написано и почему часть пользователей сталкивается с проблемами при использовании режима непрерывной автокалибровки.
Если, конечно интересно. Если нет - можно просто ничего не делать. Слава богу от показания этих датчиков реально ничего не зависит...
Oleg-AC
Собирать только начал ( у меня своя архитектура) и, да, увлёкся, забыл про кнопку. Будет программная, но, спасибо за напоминание )
DIY_Zi
ну если внимательно ознакомится с документацией на Гите , то увидите что калибровка со2 предусмотрена,
Features sensors
- специфические настройкиМонитора
, которые выведены в отдельную группу.CO2 forced calibration
- принудительная ручная калибровка датчикаCO2
. Нужно вынести устройство на свежий воздух минут на 15 и потом подать команду калибровки. Датчик примет зачение, измеренное при калибровке за "эталон" и выставит поправку, которую можно увидеть вFrc co2 correction
.CO2 factory reset
- сброс датчикаCO2
к заводским настройкам. Значение ручной калибровки, если таковая была сделана, тоже сбрасываются.xSVPx
Для этого есть какая-то отдельная кнопка ?
DIY_Zi