Здравствуйте, дорогие читатели Mysku!
Я иногда делюсь с вами своими проектами в области электроники. В эти майские праздники я подготовил для любителей собирать устройства своими руками интересный проект — бытовой датчик мониторинга углекислого газа с протоколом Zigbee и LCD-дисплеем.
Это тщательно проработанный проект, который ни в чём не уступает фабричным аналогам, а по многим параметрам и функциональности даже превосходит их.
Кратко расскажу о возможностях этого устройства.
Датчик собирает данные об уровне углекислого газа (CO2), температуре и влажности воздуха и передаёт их в сеть. На дисплее, помимо уровня CO2, отображается график изменения уровня углекислого газа за последние сутки.
Датчик работает в сети Zigbee и может служить роутером этой сети. Настройка времени происходит автоматически, а на дисплей выводится текущая дата и время.
У датчика есть RGB-подсветка, которая меняет цвет в зависимости от уровня CO2. Также есть функция ночного режима, которая позволяет полностью отключить подсветку дисплея в заданное пользователем время.
Датчик поддерживает функцию газостата. Вы можете задать верхний и нижний уровни CO2, привязать датчик к исполнительному устройству Zigbee, такому как реле или розетка, и датчик будет отправлять команды на включение или отключение этого устройства, когда уровень CO2 достигнет заданных порогов. Эта привязка будет работать даже в случае недоступности контроллера умного дома или координатора Zigbee-сети.
В датчике есть календарь событий. В определённые дни логотип Zigbee может заменяться на логотип с событием, например, с Новым годом. Количество добавленных событий не раскрывается, но предлагается найти их самостоятельно в процессе эксплуатации устройства.
Файлы для заказа плат, 3D-модель корпуса и прошивка для устройства находятся
на моём GitHub.
Этот проект зародился в 2022 году. Тогда речь не шла о датчике мониторинга CO2, я просто хотел создать проект с использованием дисплеев, которые использовались в легендарных телефонах Nokia. Я купил модули с этими дисплеями на AliExpress и приступил к разработке драйвера. Так и начался мой проект.
Я сразу решил добавить RGB-подсветку, не рассматривая возможность использования обычной одноцветной LED-подсветки. В тот момент я ещё не определился с концепцией проекта. Конструкция дисплея с независимой подсветкой явно подсказывала мне, что подсветку нужно сделать необычной.
Я создал прототип модуля для дисплея и протестировал его работу с подсветкой. В результате я решил создать датчик для мониторинга уровня CO2. В качестве сенсора я выбрал самый популярный — MH-Z19. Сначала я использовал версию B, а затем пробовал и другие версии. Эти версии отличаются незначительно: некоторые заявлены как более точные, у других — чуть шире измеряемый диапазон.
Датчик работает на основе микроконтроллера soc сс2530. В проекте используется радиомодуль от китайской компании EBYTE — E18-MS1PA2-PCB.
Помимо сенсора CO2 MH-Z19, в проект добавлен сенсор температуры и влажности воздуха HTU21D.
Датчик состоит из двух плат: базовой, где расположены радиомодуль, питание и кнопки управления, и платы дисплея с дополнительными сенсорами. Это модульная система, и плата дисплея подключается к базовой плате при помощи штырьевых разъемов.
Обе платы можно спаять вручную паяльником. Однако при пайке 6-пиновых двурядных штырьевых разъемов с шагом 1,27 могут возникнуть не большие сложности у не подготовленного человека.
Обратите внимание на положение штырьевых разъемов, которые необходимо припаять к сенсору MH-Z19. На фото ниже показано, с какой стороны сенсора их нужно припаивать.
На базовой плате нужно напаять 13 компонентов, на плате с дисплеем — 11. Электронную схему проекта можно посмотреть. на моем гитхаб
Сам датчик можно вставить в корпус уже собранным или по частям, сначала вставив плату с дисплеем. К корпусу плата модуля с дисплеем фиксируется двумя винтами, а базовая плата с подключенным датчиком CO2 крепится уже на этой модуле.
Модели корпуса можно распечатать на любом типе бытовых 3D-принтеров, например, на FDM-принтерах или SLA-принтерах. Однако также можно заказать печать моделей корпуса в Китае, например, на сайте JLCPCB. Рекомендую выбрать MJF или SLS-печать.
Корпус печатается на FDM-принтере без поддержек, и весь процесс занимает не более часа.
Для печати корпусов на FDM-принтерах я рекомендую использовать PET_PEO-покрытие для печатного стола. Оно как будто специально создано для таких целей
Чтобы прошить устройство, необходимо подключить базовую плату к SmartRF04EB или CC-Debuger, а затем выполнить прошивку через программу SmartRF Flash Programmer v1.
Опишу функциональность устройства.
Основные данные:
CO2
Уровень углекислого газа
Temperature
Измеренное значение с встроенного сенсора температуры
Humidity
Измеренное значение с встроенного сенсора влажности воздуха
Linkquality
Качество связи (мощность сигнала) *1
*1 Качество связи, свойство которое не передается датчиком, а расчитывается координатором сети на основе оценки полученных данных.
Конфигурационные данные:
Backlight
Включение rgb подсветки дисплея.
Night backlight
Полное отключение подсветки в ночном режиме, по умолчанию деактивировано
Night backlight on
Время активации ночного режима
Night backlight off
Время отключения ночного режима
Contrast
Регулировка контрастности lcd дисплея
Temperature offset
Отрегулировать температуру внутреннего сенсора температуры, шаг 0.1 градус
Humidity offset
Отрегулировать влажность воздуха внутреннего сенсора влажности, шаг 1 процент
Forced_recalibration
Форсированная ручная калибровка. Калибровка осуществляется на свежем воздухе, необходимо оставить датчик на чистом воздухе на 60 минут, по истечении этого времени отправить команду. Время калибровки примерно 5 секунд, после завершения калибровки точке соответствующей чистому воздуху будет задано значение в 400ppm. Датчик отправит команду «выключено» по завершению калибровки
Automatic self calibration
Автоматическая самокалибровка реализованная производителем в серии датчиков MH-Z19. На дисплее выводится индикация режима работы сенсора. *1
Co2 error read
Количество неудачных попыток чтения сенсора MH-Z19
Enable_gas
Включение функционала газостата. Управление реле к которому привязан датчик. Для работы данного функционала необходимо сделать привязку к исполнительному устройству(реле, розетки)
Invert_logic_gas
Инвертирует логику работы управления исполнительными устройствами. Пример. Если опция отключена, при превышение верхнего заданного порога углекислого газа датчик отправит команду «Включить» на привязанное реле. Если опция включена, при превышение верхнего заданного порога углекислого газа датчик отправит команду «Выключить» на привязанное реле.
High_gas
Верхний порог углекислого газа
Low_gas
Нижний порог углекислого газа
*1 индикация режима работы автоматической калибровки
Работа в сети Zigbee
Для подключения устройства к сети Zigbee через Zigbee2MQTT необходимо установить внешний конвертер (преобразователь). Конвертер вы можете скачать с моего GitHub. В ближайшее время конвертер будет добавлен в основной репозиторий z2m.
Ввод в сеть
Чтобы подключить датчик к сети, необходимо включить координатор для приёма новых устройств. Затем нужно удерживать кнопку на датчике около 5 секунд. На дисплее появится сообщение о начале входа в сеть.
Удаление из сети
Чтобы отключить датчик от сети Zigbee, удерживайте кнопку на датчике в течение 10 секунд. На дисплее появится сообщение о выходе из сети Zigbee.
Конфигурация отчётов Zigbee2MQTT
Для настройки отчётов нужно перейти на вкладку «Отчёты» и внести изменения в поля «Минимальный интервал отчётов», «Максимальный интервал отчётов» и «Минимальный интервал отчётов при изменении».
Минимальный интервал отчётов — это время, через которое будет отправлен новый отчёт, если значение изменилось на величину, указанную в поле «Минимальный интервал отчётов при изменении», по сравнению с предыдущими значениями. Указывается в секундах.
Максимальный интервал отчётов — это время, через которое будет отправлен новый отчёт, если значения не менялись на величину, большую той, которая указана в поле «Минимальный интервал отчётов при изменении». Указывается в секундах.
Минимальный интервал отчётов при изменении — это величина изменения данных. Для каждого типа данных указывается в своём формате. Например, для температуры 1 означает 0,01°C, так как данные передаются типом integer16. Например, температура 22,54°C будет передана датчиком как 2254.
Привязка датчика EFEKTA Pixel Open Air к исполнительному устройству, реле, розетке
Осуществляется на стороне датчика EFEKTA Pixel Open Air. Для привязки датчика к исполнительному устройству для прямой передачи данных нужно в веб-интерфейсе Zigbee2MQTT перейти на страницу датчика EFEKTA Pixel Open Air и выбрать вкладку «Связь».
В первом поле слева нужно выбрать «1», в следующем поле в выпадающем списке выбрать исполнительное устройство, к которому необходимо сделать привязку. Затем ввести номер кластера на реле.
Ещё правее нужно выбрать кластер OnOff и нажать на кнопку «Связать».
Идентификация
Идентификация устройства осуществляется отправкой команды identify time. Сразу после отправки команды датчик выведет на дисплей приветствие, по которому можно легко идентифицировать устройство.
Технические характеристики:
- Модель: Pixel Open Air
- Протокол: ZigBee 3.0
- Радиомодуль: EBYTE E18-MS1PA1-IPEX (20 dbm)
- Основной сенсор: MH-Z19 (CO2)
- Дополнительный сенсор: HTU21D (Температура и влажность воздуха)
- Дисплей: цветной LCD, разрешение 84х48
- Размеры корпуса: 4 × 5.5 × 1.8 см
- Диапазон измерения углекислого газа: 400-10000, точность в диапазоне 400-2000 ±(50 ppm + 5% от показания)
- Cенсор температуры: -40°C ~ + 125 °C
- Точность: 0.2°C
- Cенсор влажности воздуха, диапазон: -0% — 100%
- Точность: 2%
- Питание: USB Type C (поддерживается работа с БП с протоколами быстой зарядки)
ГитХаб проекта —
github.com/smartboxchannel/EFEKTA_Pixel_Open_Air/
Вот такой проект датчика мониторинга углекислого газа получился в итоге.
Если вы прочитали статью об этом проекте Zigbee датчика до конца, рекомендую присоединиться к моей телеграм
группе DIY DEV. В группе публикуется информация о новых проектах, проводятся розыгрыши датчиков. Так же рекомендую группу самого большого русскоязычного сообщества в Telegram, посвящённому тематике Zigbee. Она называется «
Вокруг да около Zigbee».
Спасибо за внимание!
Всегда вопрос был к такому только один — смысл в них, если все решается открытием форточки на некоторое время? Причём делать это надо не только для избавления от углекислого газа.
Хвастаться? Вроде как смешно. Делать открытие окна/форточки или включение приточки? Дак это по таймеру делать надо привентивно, тогда зачем? График смотреть?)
в самый неудобный момент времени.У меня такой приблуды, как у Автора, нет, стоит обычный датчик Даджет. Мне в принципе пофиг, что он там показывает. Горит зеленый огонёк — отлично. Желтый — открываем окна в квартире по диагонали, чтобы воздух пошел. Красный — валим из комнаты, пока не проветрится.
Датчик CO2 не нужен для этого, да и не является он прямым показателем. Кроме того, чувствительность на CO2 у людей имеет очень большой разброс, как и адаптивность к нему. А руководствоваться косвенными показателями при таком положении вещей — ну такое.
Серьёзно — проветривание по таймеру с контролем температуры помещения покрывает все эти задачи + работает проще и надежней + дешевле + нет зависимости от дрейфа датчика.
Тогда причём тут это?)
Мне похожий прибор сильно помог убедить жену. С тех пор мы форточку не закрываем. Даже зимой
Вот мои замеры с Xiaomi n80:
1. Бризер на 1ой скорости 750-850ppm
2. Бризер на 2ой скорости 700-750ppm
3. Приоткрытое окно (с зимней тягой) 600-700ppm
Возможно, у NASA свои соображения по поводу микроклимата на космических кораблях — там свои особенности. Проблемы с проветриванием определенно имеются.
ASHRAE (Американское общество инженеров по отоплению, охлаждению и кондиционированию воздуха) даёт понятные рекомендации по микроклимату в ЖИЛЫХ помещениях.
P.S. При особом отвращении к пендосам можно поискать рекомендации органов своей страны
Космонавты годами вполне продуктивно работают при 2500ppm.
Если бы при 2000ppm или 500ppm они работали бы лучше, им обеспечили бы 500ppm. Это совершенно несложно и не требует больших дополнительных расходов.
Человек выделяет в сутки почти 1кг СО2. Нет совершенно никакой разницы когда его поглощать, и до какого уровня в целом тоже нету. Это всё равно придется сделать.
Сейчас уже может быть небольшая разница есть, но раньше, когда использовали химические поглотители ее вовсе не было.
Всё равно вам придется весь 1кг поглотить. Тут уж никуда не деться.
Космонавт — очень дорогостоящая «шестеренка» если бы его эффективность можно было увеличить уменьшив ppm СО2 в воздухе, это было бы сделано.
Никаких технических проблем тут нету совершенно.
Нормы для космонавтов приняты наса на уровне 5000ppm.
Однако некоторые космонавты жаловались на то, что при 2500+ppm чувствуют себя немного(!) хуже. На МКС стараются поддерживать в пределах 2500ppm. Т.е. нет проблем поддерживать не 5000, а 2500, меньше просто не видят смысла.
Не в пределах 1000. Не в пределах 800. В пределах 2500…
И в этой атмосфере они живут и работают «долго и счастливо».
Т.е. для космонавта 2500 и даже 5000 норм, а для рядового гражданина 850 — это прям много-много :)?
Как-то я не очень во всё это верю, вы уж простите.
Каким-то звездежом попахивает.
Впрочем верить или нет в то, что 2000+мг витамина С в день спасет от всех болезней — личное дело каждого. А ведь еще лет 10 назад «из каждого утюга» уговаривали, целый институт был :).
Я против крайностей.
Если бы КПД космонавта рос, было бы выгоднее «на орбиту» доставлять и для 10 ppm «реагентов».
Вообще в данный момент никакие реагенты для уменьшение количества CO2 на МКС в штатном режиме не используются. Используются установки не требующие реагентов. Реагенты используют только когда толпы с шаттлами прилетают итп.
Есть нормы для ЖИЛЫХ помещений — на них и стоит ориентироваться.
ГОСТ 30494-2011 под названием «Здания жилые и общественные. Параметры микроклимата в помещениях». Этот документ оптимальным для здоровья человека уровнем CO2 считает 800 — 1 000 ppm.
*
Собственно всё началось в вопроса «чем 850 ppm» не угодило.
А космонавты очень даже причем. Это, очевидно единственное место, где люди оптимизируют работоспособность, и не будут поддерживать условия «просто так». Т.е. если работоспособность космонавта можно реально увеличить изменением СО2 — это будет сделано. Это выгодно.
А если нельзя — не будет сделано — это не выгодно.
Все остальные так или иначе заложники того, что выгоднее продать «побольше вентиляторов», чем не продавать :).
И это при текущих уровнях СО2. Если эти нормы понизить, то масса кратно увеличится.
Если бы не было совершенно никакой разницы, то и поддерживали бы на природном уровне, а раз не поддерживают, значит есть какие-то веские на то основания.
Понизить давление не сложно, но создать абсолютный вакуум уже проблематично. Полагаю, с концентрацией углекислого газа аналогично. Пока его много, от него легко избавляться и чем меньше его остаётся, тем труднее это делать. Думаю, это единственная причина, по которой поддерживают столь высокую концентрацию углекислого газа для космонавтов.
А если серьёзно, то непонятно, что хуже — постоянный сквозняк или углекислый газ.
Если оставить окно на микрощелевом проветривании, то ощущение движения воздуха ощущается только у самого окна.
Но все это очень индивидуально и больше обусловлено семейными традициями и повериями
Но самое правильное в офисе — иметь принудительную вентиляцию. Тогда и окна открывать не нужно будет.
но после закрытия форточки уровень углекислого газа возвращается на прежний уровень за 15 минут.: (
Отличное исполнение датчика, периодически задаюсь поиском чего-то такого вменяемого, но попадалось все какое-то непотребное
Прям загорелся сделать
Только вот не очень вижу необходимость экранов в такого рода устройств. Один фиг есть сервер умного дома, а там датчики отдельно, панели на любой вкус с любым интерфейсом — отдельно.
Как мы жили раньше до этого? ))
Ну, и опять же, форточку ни кто не отменял. Сейчас все окна идут с функцией проветривания.
А старые, советские, перекошенные, деревянные — изначально с такой функцией были. )))
— Здравствуйте, профессор. Можно вас спросить?
— Конечно, спрашивайте, молодой человек.
— Скажите, профессор, вы когда спать ложитесь, бороду на одеяло или под
одеяло кладете?
После некоторой паузы:
— Да, знаете, как-то не задумывался.
— Ну, извините, пожалуйста.
Разошлись.
Через неделю зеленый профессор с кругами под глазами встречает в
коридоре того же студента и хватает за грудки:
— Ну ты и сволочь! Неделю уже спать не могу — и так неудобно, и так
неудобно!
radiopench.blog96.fc2.com/blog-entry-1104.html
чувак молодец, из разобранных часов сделал.
Планирую повторить.
.
Тут высокая точность показаний роли не играет, первостепенен порядок величины показаний.
Стрелочный индикатор повышает скорость считывания, а вкупе с цветовыми (традиционными красный-жёлтый-зелёный) секторами ускоряет понимание (особенно у неподготовленного пользователя).
Это и есть качественное изменение пользовательского интерфейса.
Мне кажется очень не точная схема, думаю со временем будет значительную ошибку накапливать.
В соседней статье подробнее про механизм, хотя тяжело читать с переводчика: radiopench.blog96.fc2.com/blog-entry-1102.html
Мне кажется тут надёжнее весь механизм выкинуть и поставить самый маленький шаговик. Вроде есть на али рублей по 100. Правда тогда и часы пересобирать толку мало конечно.
Проще чем переделывать часы наверное взять аналоговый вольтметр, подкрутить ему диапазон и нарисовать картинку вместо шкалы Вольт. Если у датчика аналоговый выход, то даже микроконтроллеров никаких не надо, ну либо он спокойно встраивается посередине.
elchupanibrei.livejournal.com/70620.html
Вам удалось его в i2c перевести?
Тема сисег, такскать, нераскрыта…
P.S.Жил сто лет, не зная об уровне СО в своей хате, на 101-й узнал, что он у меня повышен, и сразу же начались проблемы со здоровьем и самочувствием)
К сожалению проверить теорию с СО2 не успел, ушел раньше чем купил датчик для баталий с этой особой.
Но я вообще чуткий к этому, я и спать не могу с закрытой дверью в спальню (коты), просто не высыпаюсь нормально, бывает просыпаюсь с ощущением неприятным, сложно описать. Это не надуманно, это было проблемой, пока не стал щель оставлять в двери и проблема со сном ушла.
До смерти автор конечно же себя не доводил, но наглядно показал, чем «страшно», когда не проветриваешь и нет сквозняков.
Оно?
MH-Z19 не самый лучший датчик, насколько я понимаю. У него есть проблемы с накапливанием ошибки при эксплуатации в помещениях, где никогда не бывает «уличной» атмосферы с 400 PPM.
Ну и бестолковый экран от старой Нокии. Есть же отличные дешёвые цветные TFT-экранчики 1.8" и 1.77".
Статистика по scd30 уже есть. В работе уже 2 года ещё ни разу не калибровал. Остальные подробности тут — mySKU.me/blog/aliexpress/91754.html
Адь какой…
Тут случай совсем другой.
Странного вы рисуете персонажа: желающего что-то подправить в исходниках, но не способного слепить 2-3 исходника под себя. Чего ж он там править собрался в чужом коде с такими «способностями»?
Разные бывают лицензии как и причины не открывать код. Может коммерческие, может стыдно свой код показывать, может даже кусок кода связан с основной работой.
И не все из них BSD/MIT.
Наличие компонентов под той же gplv3 насколько я знаю обязывает открывать весь код.
А продавать девайс с откровенно мутным кодом не стыдно?
Это уже нарушение прав работодателя.
www.gnu.org/licenses/gpl-faq.ru.html#GPLInProprietarySystem
ИМХО: если там есть сложности, значит задача «не по зубам» — персонажу надо доставать кошелек и покупать готовое.
А он там есть?
А почему сразу мутным? Может просто не совсем элегантное, но вполне надежное и рабочее решение.
Это только если работодатель занимается выпуском аналогичного продукта. Я про универсальные библиотеки, которые программисты пишут под себя, а не какой-то специфический кусок кода, напрямую связанный с основной работой.
Ну вообщем понятно, обрисованные персонажи — любители швабодки не желающие читать даташит и ждущие когда им все пережеванное на блюдечки поднесут.
есть куча свободного времениВам так легко набросать работающий проект такого уровня с частично незивестными ранее либами или контроллером — Вы молодец. Без шуток.Отлично, только нюанс в том, может он подправить под себя по быстрому, и это склонит его к покупке решения с открытыми исходниками, не может — и оттолкнет, а «так сойдет» — «а зачем мне именно это изделие? Вон сяома торгует оптом, дешевле и все нюансы отмечены в обзорах».
Говорится про случай, когда он есть. Есть ли он в решении конкретно топикстартера — остается на совести топикстартера.
Тогда и стыдиться нечего.
Если внимательно изучить договор, то там наверняка будет такая штука, как «сотрудник/исполнитель добровольно передает все права на выполненную работу заказчику, (и лишается права применения/распространения в других целях)». С разработчиком nginx, кажется, недавно был конфликт, потому что тот занимался собственной разработкой на рабочем месте в обеденные перерывы. И это при том, что он не мешал код нжинкса и код с рабочего места. А правило «занимайтесь на рабочем месте работой, а не своей личной х...» как минимум негласно поддерживается начальством в любом коллективе. Так что применительно к «рабочим исходникам» — они принадлежат хФирме, и переиспользование «на полшишечки» в своем вполне неиллюзорно
опкарается в соответствии с законом (когда вскроется).Без комментариев, на лор!
Ну я же сказал, для обучения. И если уж так просто, почему бы показать пример для других? Жадность, ну ок
фразой вы осуждаете человека за его выбор. Так волен или нет?
«Жителя Новгорода оштрафовали на 45 тысяч за гирлянду с экстремистским украинским лозунгом — 9 января 2024» по 20.3.3 КоАП РФ. Скорее всего, решение было обжаловано.
Такой как в топике можно было бы собрать будь на него исходники, в которых можно было бы быстро под себя допилить.
А без них он не нужен. Проще купить готовый уж тогда, чем неизвестно что делающие бинарники заливать…
Ну сделал очередной человек очередной бесполезный тупиковый проект, ну попиарился…
Ни для обучения не годится, ни для доработки, ни для использования. Проще уж готовую железку взять, а не это недоразумение.
Проект отлично подходит для старта: собрать железяку, и с помощью этой прошивки убедиться в работоспособности железа. Далее уже можно писать свое, твердо зная что железо рабочее.
Тем более в датчике CO2 батарейное питание — довольна бессмысленная вещь.
Бессмысленная, но серийная продукция с таким решением есть.
И сколько прослужит датчик, например, углекислого газа?