Skip to content
Oleg edited this page Oct 2, 2025 · 3 revisions

Zigbee датчик CO2/VOC V2.1

RFS_CO2

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

  • использовать современный сенсор углекислого газа СО2 SCD40/41, чтобы не требовалась постоянная калибровка
  • наличие сенсора летучих органических веществ VOC SGP40, это полезно особенно в детской комнате и после применения химических моющих средств
  • для создания автоматизаций с отключением RGY led полезен сенсор освещенности
  • нужна возможность подключения внешнего проводного сенсора 1Wire типа DS18B20
  • как альтернатива сенсорам 1Wire реализовать подключение внешнего сенсора i2c типа SHT30/40
  • нужен встроенный USB порт для возможности менять/корректировать прошивку устройства через него
  • иметь такую платформу для разных сенсоров, которая даст пользователю свободу принимать решение, какие именно использовать
  • самое главное условие, это устройство должно стабильно работать без конвертеров/квирков и т.п. на основных платформах умного дома (Home Assistant/ZHA, Zigbee2mqtt, HOMEd, SLS и даже Yandex)

Данный проект я сам использую в своем умном доме во всех спальнях. И на протяжении 2 лет он себя зарекомендовал только с положительной стороны. По мимолетному взгляду на датчик очень легко понять - требуется проветривать помещение или нет.



Вот так выглядит автоматическая сигнализация цветом о превышении установленных в прошивке PTVO пределов показаний сенсоров.

Что у нас в итоге поместилось на новой плате.



Описание элементов платы датчика:

  1. разъем питания и программирования USB Type-C
  2. 5х контактный разъем для подключения внешних проводных сенсоров 1Wire/I2C
  3. разъем для подключения платы сенсора CO2 SCD40/41
  4. площадка под плату сенсора CO2 SCD40/41
  5. 4х контактный разъем программирования Zigbee модуля с помощью программатора cJTAG
  6. JOIN системная кнопка - инициализация спаривания или принудительный репорт
  7. SBL системная кнопка - инициализация режима загрузчика прошивки
  8. RST системная кнопка - перезагрузка/переподключение Zigbee модуля
  9. зеленый, желтый, красный led индикаторы - для для сигнализации максимального значения выбранного сенсора
  10. синий led - для для сигнализации подключения и ошибки Zigbee сети
  11. цифровой сенсор освещенности BH1750
  12. цифровой сенсор летучих органических веществ VOC SGP40
  13. цифровой сенсор температуры и влажности SHTC3, он нужен обязательно для вычислений SGP40

Если требуется подключить внешний проводной сенсор, например DS18B20, в корпусе предусмотрены отверстия под кабель, а на плате предусмотрен 5х контактный разъем.



Я сделал две версии корпуса, они отличаются друг от друга только толщиной. Тот который больше предназначен для платы с установленным 5х контактным разъёмом для внешних сенсоров.



Питание и подключение датчика к системам умного дома.

Warning

Сначала отключить питание датчика, потом разрешено подключение внешних сенсоров i2c или 1Wire!


Устройство рассчитано на питание через USB Type-C напряжением 5 вольт и ток потребления составляет не более 0.6А!

  • Не 9-20 вольт, а именно 5 вольт!
  • подойдет любая стандартная зарядка для телефона с выходом 5 вольт и током до 2 ампер
  • пожалуйста, не используйте ново-модные скоростные автоматические зарядки
  • при необходимости на плате предусмотрены 2 контакта под пайку для внешнего питания от 5 вольт

Перед спариванием устройства:

  1. расположите датчик температуры как можно ближе к координатору
  2. включите режим сопряжение (join) на координаторе
  3. подключите кабель питания к разъёму USB Type-C

Для инициализации режима спаривания устройства требуется сделать следующее:

  • подайте питание и если устройство само сразу не начало интервью, то зажмите кнопку JOIN на 10+ секунд, как только интервью закончится перестанет моргать синий индикатор.

Если устройство не передает информацию или в last seen Вы видите что оно долго не откликается, произведите повторное спаривание.

Датчик полностью поддерживается в:

  • ZIGBEE2MQTT(стандартный конвертер PTVO)
  • ZHA(стандартные кластеры)
  • HOMEd
  • SLS HUB (228 конвертер PTVO)
  • Yandex Zigbee HUB(поддерживается только температура и влажность)




PREMIUM Прошивка для данного датчика, как собрать ее и прошить.

Прошивка для данного датчика собрана в конфигураторе PTVO, а актуальный релиз программы PTVO тут Latest download




ВНИМАНИЕ! не забудьте при сборке новой прошивки проверить, что включен SBL, и активировать его на пин P15, иначе прошивка через USB не будет больше доступна! и исправить это можно будет только с помощью специального программатора.



GitHub - здесь можно скачать прошивку и конфиг файл для PTVO

Warning

Внимание: так как прошивка Premium версия, прошивать именно этот файл в устройство бесполезно - РАБОТАТЬ НЕ БУДЕТ!


И вот тут надо начать рассказывать, что такое PREMIUM и зачем он нужен в этом датчике.

Конфигуратор прошивок PTVO условно бесплатный, но при использовании расширенного функционала и сенсоров, которые доступны только в PREMIUM, придется покупать эти возможности. Как это сделать и что именно дает PTVO PREMIUM описано на сайте разработчика. В моем проекте через премиум стали доступны 16 каналов для выходов и датчик VOC SGP40. Но если не использовать логику управления LED индикаторами и не подключать SGP40, то PREMIUM не нужен.


А вот так в прошивке PTVO устроена логика управления LED индикацией и указаны пределы, ниже 999ppm , от 1000 до 1499ppm и от 1500ppm и выше. Первая группа это GPIO включения самих LED индикаторов G/Y/R, вторая группа это виртуальные групповые переключатели с логическим управлением и каждый управляет отдельным LED.

Если вам хочется/потребуется создать свое именное устройство, то PTVO позволяет это сделать. Но при этом потребуется сделать внешний конвертер для вашей системы умного дома.


Первый способ прошивки через встроенный USB-UART CH340 драйвер тут, с помощью программы GW Multi tool.
Второй способ прошивки через DEBUG JTAG контакты на плате.
Как прошивать с помощью программатора J-link V9-V11 описано в статье на сайте проекта МОДКАМ.

Для заливки своей прошивки в реле через USB требуется:

  1. отключить устройство от сетевого питания! (обязательно)
  2. зажать и не отпуская кнопку SBL подключить к USB, и далее залить прошивку с помощью программы GW Multi tool

после удачной прошивки Вы увидите вот такой результат

Незаданные вопросы и ответы на них

  1. можно ли подключить другие 1Wire сенсоры?
  • да можно из списка поддерживаемых в конфигураторе PTVO
  1. можно ли подключать сенсоры I2C и какие?
  • да можно из списка поддерживаемых в конфигураторе PTVO, но для этого понадобится использовать по 2 выхода на каждый отдельный сенсор
  1. сколько максимально можно подключить сенсоров?
  • ограничение максимальное при использовании PTVO PREMIUM версии прошивки 16 каналов входов или выходов
  1. куда подсоединять внешние сенсоры?
    1. 1WIRE
    2. GND
    3. VCC 3,3v
    4. SCL i2c
    5. SDA i2c

Видео гайд про этот датчик, а также вся документация

RFS_DS8x - подробное видео о моем предыдущем релизе датчика CO2 от известного блогера Павла

GitHub - Gerber/BOM/схема/Firmware/3D-case для всех кто желает самостоятельно изготовить этот датчик

EasyEDA - полный открытый проект на EasyEDA

Где можно обсудить и купить Zigbee DIY устройства

DIY&Zi - Купить сделанные мной DIY Zigbee устройства

ZigБазар - Купить другие DIY Zigbee устройства

ZigБазарим - Обсудить любые DIY Zigbee устройства

Вернуться в начало

Note

Большая просьба, если Вы увидели ошибку или неточность в этом описании, сообщите мне о ней!