Подвернулись мне тут абсолютно случайно несколько штук таких извещателей. Открываем паспорт, читаем - ИЗВЕЩАТЕЛЬ ПОЖАРНЫЙ ДЫМОВОЙ ОПТИКО-ЭЛЕКТРОННЫЙ АВТОНОМНЫЙ ИП 212-50М2. Производством занимается Группа Компаний «Рубеж» ООО «КБ Пожарной Автоматики».

Внешний вид извещателя.
Внешний вид извещателя.

Вещь с одной стороны полезная, предупредит звуком сирены о задымлении помещения. Но с другой стороны и столь же бестолковая, так, как никаких других коммуникаций с пользователем, кроме, как громко орать сиреной, не предусмотрено. И если вы не рядом, то и ничего не услышите. Хотя надо отдать должное производителю, кричит она очень громко.

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

Только хочу сразу предупредить, автор не настоящий сварщик, это у него хобби.

Итак, разбираем и смотрим, что и как у заводского датчика сделано и как он работает.

В названии присутствует слово "автономный". Это значит, что питается он не от сети, а от батарейки. В нашем случае, это 9 вольтовая батарейка типа "Крона".

Сердцем извещателя является система фото и свето диодов. Один передает, другой принимает. При задымлении что-то в приемопередаче изменяется и происходит сработка.

Фото и свето диоды для обнаружения дыма (без защитной крышки).
Фото и свето диоды для обнаружения дыма (без защитной крышки).

Идем дальше. На плате извещателя нас будут интересовать всего три контакта.

Плата извещателя с демонтированной сиреной. Контакты 1, 2 и К1 в верхней правом углу.
Плата извещателя с демонтированной сиреной. Контакты 1, 2 и К1 в верхней правом углу.
  • Контакт с обозначением 1 - +9 вольт.

  • Контакт с обозначением 2 - GND.

  • Контакт с обозначением К1 - на нем при обнаружении задымления появляется меандр амплитудой 5 вольт и частотой примерно 2.5 кГц.

Меандр при обнаружении задымления на контакте К1.
Меандр при обнаружении задымления на контакте К1.

В качестве компонента Zigbee выбираем модуль фирмы E-Byte E180-Z5812SP изготовленный на чипе фирмы Telink TLSR8258. Модуль хорошо зарекомендовал себя в других моих проектах (Watermeter, ElectricityMeter).

Модуль Zigbee питается от 3.3 вольт. Так как на плате извещателя такого напряжения нет, нужен преобразователь питания с 9 вольт на 3.3. И желательно, чтобы сам преобразователь был с низким потреблением, все-таки устройство у нас на батарейках. Выбор пал на HT7133-1 с максимальным током 100 мА и входным напряжением от 5 до 30 вольт. Вопрос с питанием решен.

Остается пара вопросов.

Первый - преобразовать меандр в постоянный сигнал уровнем не более 3.3 вольта. За основу берем вот такую схему

Схема преобразования сигнала меандр в постоянный уровень.
Схема преобразования сигнала меандр в постоянный уровень.
  • VD1 - обычный кремниевый маломощный диод.

  • R6-R5 - делитель напряжения. R5 - подтягивающий резистор на землю самого чипа TLSR8258.

  • С1 - сглаживающий конденсатор.

Второй вопрос. Как-то нужно контролировать разряд батареи. Для этого тоже понадобится делитель напряжения с коэффициэнтом 1 к 3. Но сделать постоянно подключенный делитель нельзя все из-за того же автономного питания - лишний расход батарейки, лишние 30мкА. Поэтому нужно предусмотреть, чтобы делитель подключался только в момент измерения. Сообщество подсказало схему такого делителя.

Схема подключаемого делителя.
Схема подключаемого делителя.

Теперь изучим корпус на предмет дополнительных функций. И обнаруживаем, что на донышке с обеих сторон (внутренней и внешней) есть такие толкатели, которые выпирают примерно на 2 мм с каждой стороны.

Внутренняя чать корпуса извещателя
Внутренняя чать корпуса извещателя
Внешняя часть (донышко) корпуса извещателя.
Внешняя часть (донышко) корпуса извещателя.

При этом, если поставить на место крепежную пластину, то она нажимает толкатель и он уходит вглубь корпуса примерно на 2 мм. Это можно использовать для сигнала TAMPER. Tamper - это когда устройство не на месте, сдвинуто, отвалилось, перевернулось, т.е. находится не том положении, в котором обязано работать.

Итак, подведем итог, что мы будем контролировать и передавать в сеть.

  • Напряжение на батарейке в mV.

  • Уроверь заряда батарейки в процентах.

  • Посылать оповещение при обнаружении задымления.

  • Посылать оповещение при обнаружении, что устройство отсоединено от крепежной пластины.

  • Посылать команду при обнаружении задымления - чтобы можно было что-то включить или выключить.

Итак, мы уже немного понимаем, чего хотим от устройства и можем приступить к проектирования электрической схемы.

Для начала, нужно посчитать количество GPIO, которые нам понадобятся.

  1. Кнопка управления.

  2. Светодиод режимов работы устройства.

  3. Включение делителя для измерения напряжения на батарейке.

  4. Собственно само измерение батарейки.

  5. Контроль TAMPER.

  6. Ну и конечно контроль сработки при обнаружении задымления.

  7. SWS - для загрузки прошивки.

  8. RESET - для возможности перезапустить модуль.

  9. TXD - для вывода отладочной информации через COM порт.

Итого получается нам нужно 9 GPIO. Модуль E180-Z5812SP имеет нужное их количество.

Выводы модуля E-Byte E180-Z5812SP
Выводы модуля E-Byte E180-Z5812SP

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

Принципиальная схема дополнительного модуля Zigbee.
Принципиальная схема дополнительного модуля Zigbee.

В общем схема готова, нужно прикинуть размер, расположение и крепеж платы. Идеальное место нашлось на продольной боковой стенке батареечного отсека.

Макет платы и кронштейн крепления, напечатанные на 3D принтере.
Макет платы и кронштейн крепления, напечатанные на 3D принтере.

Но прежде чем разводить и заказывать плату, нужно подготовить программное обеспечение. Смысл заказывать плату, если программа не заработает, как нужно.

Для тестирования берем Dev-Board совместной разработки.

Dev-Board
Dev-Board

Спасибо Олегу, в свое время он мне прислал их несколько штук.

Итак, возвращаемся к программе. Ранее я специально для таких случаев создал шаблон для упрощения создания Zigbee End Device устройств на TLSR8258. Берем его за основу и просто немного модифицируем согласно нашим потребностям. Для начала нужно определиться, какие кластеры Zigbee мы будем использовать.

Power configuration. У этого кластера нас будут интересовать всего два атрибута

  • BatteryVoltage - значение может быть от 0x00 до 0xFF. Единица измерения 100 mV.

  • BatteryPercentageRemaining - значение может быть от 0x00 до 0xFF. При этом там не прямая зависимоть, т.е. 100 - это не 100%. Там так - 0x00 = 0%, 0x64 = 50% и 0xC8 = 100%. Если значение будет равно 0xFF - ошибка измерения (упрощенно)

IAS Zone. Это как раз кластер оповещения. Нас будут интересовать следующие атрибуты

  • ZoneType - атрибут определяет тип сенсора. У нас будет 0x0028 - Fire sensor.

  • ZoneStatus - атрибут состояния сенсора и его элементов. Нас будут интересовать следующие статусы

    • Alarm1 - собственно это и есть оповещение о задымлении.

    • Tamper - оповещение, если извещатель отсоединили от крепежной пластины.

    • Battery - оповещение о низком уровне заряда батареи.

    • Test - просто для теста, будет срабатывать при нажатии кнопки на плате устройства.

  • OnOff. Этот кластер будет отправлять команду при обнаружении задымлении в зависимости от настроек

    • On

    • Off

    • Toggle

  • OnOff Switch Configuration. Кластер позволит настроить команды, отправляемые при обнаружении задымления.

    • On-Off

    • Off-On

    • Toggle

Небольшой нюанс. Для сигнала Tamper лучше использовать микропереключатель NC, так ток утечки будет меньше, чем при использовании переключателя NO. Но! NC встречаются в продаже значительно реже. Я нашел на Али, но китаец, у которого числились и NC, и NO, прислал мне все равно NO. Потому, будет два файла прошивки. С NO и с NC на всякий случай.

Итак, программа написана и проверена на Dev-Board. Нужно отметить, что мы применили абсолютно стандартные методы с точки зрения ZCL. Никаких "кастомных" атрибутов и кластеров. Что это дает? Большинство Хабов Zigbee многие стандартные кластеры умеют из коробки. Это означает, что устройство без проблем заработает во многих системах. Например zigbee2mqqt корректно работает и отображает это устройство безо всякого внешнего конвертора.

Теперь можно приступить к проектированию платы.

Верх платы.
Верх платы.
Оборотная сторона платы.
Оборотная сторона платы.

Отправляем gerber файл одному китайцу и через 10 дней платы у нас.

Верх платы.
Верх платы.
Оборотная сторона платы.
Оборотная сторона платы.

Плата готова, паяем на ней все нужные элементы. И получаем вот такую картинку.

Верхняя сторона собранной платы Zigbee.
Верхняя сторона собранной платы Zigbee.

Обороная сторона собранной платы Zigbee
Обороная сторона собранной платы Zigbee

Закрепляем плату на донышке корпуса извещателя.

Плата, установленная на кронштейне.
Плата, установленная на кронштейне.
Крепим плату к корпусу извещателя с помощью кронштейна.
Крепим плату к корпусу извещателя с помощью кронштейна.

Для этого нужно немного убрать пластика в позиции 1. Легко делается обычными кусачками. Потом совмещаем микропереключатель с толкателем (позиция 3), проверяем, что нажатие происходит корректно и толкатель не уходит в сторону от штока переключателя на всем диапазоне нажатия. И после этого сверлом 1.8 мм сверху (стрелочки с номером 2) намечаем отверстия на корпусе. Далее рассверливаем их до диаметра 2.4 мм и раззеньковываем с обратной стороны корпуса 5 мм сверлом. И крепим это все двумя потайными саморезами M2.2x9.5 мм.

Саморез потайной METIZ-A2 DIN 7982, M2.2x9.5 мм.
Саморез потайной METIZ-A2 DIN 7982, M2.2x9.5 мм.
Саморезы крепления кронштейна с обратной стороны корпуса извещателя.
Саморезы крепления кронштейна с обратной стороны корпуса извещателя.

На третье отвертие не обращайте внимания. Это я экспериментировал с большим по длине кронштейном.

Дальше нужно немного доработать оригинальную плату извещателя. Так как мы заняли своей платой + кронштейном некоторое пространство, то оригинальная плата не встает на место. Мешает небольшая "бобышка" - скорей всего это какая-то катушка.

Катушка, которая немного мешает.
Катушка, которая немного мешает.

Нужно ее просто отпаять, удлинить выводы и припаять, чтобы корпус был вынесен за пределы платы.

Катушка вынесена за пределы платы.
Катушка вынесена за пределы платы.

Теперь все встает на место. Можно монтировать и проверять.

Полностью собранный датчик дыма без верхней крышки.
Полностью собранный датчик дыма без верхней крышки.

Ну а дальше нужно это все как-то подключить к Умному Дому. В качестве последнего у меня работает Home Assistant. В свое время я не захотел стать заложником какой-то одной фирмы. Ведь не секрет, что устройство одной компании совершенно не факт, что заработает с Хабом другой компании. Именно поэтому я выбрал такую схему - в качестве координатора у меня просто Стик Zigbee, а в качестве шлюза я использую zigbee2mqtt (установленный в Home Assistant в качестве Аддона). Почему я выбрал zigbee2mqtt? Все просто. К zigbee2mqtt можно подключить абсолютно неизвестное ему устройство, написав внешний конвертор, и он будет прекрасно с ним работать.

Повторюсь, zigbee2mqtt работает с устройством безо всяких конверторов, но чтобы было все красиво, чтобы была "иконка" устройства, конвертор все же мы напишем. И после этого устройство будет выглядеть в Web-интерфейсе zigbee2mqtt вот таким образом

Датчик дыма в Web-интерфейсе zigbee2mqtt
Датчик дыма в Web-интерфейсе zigbee2mqtt
Вкладка About в Web-интерфейсе zigbee2mqtt
Вкладка About в Web-интерфейсе zigbee2mqtt

Идем во вкладку Exposes. Там так.

Вкладка Exposes в Web-интерфейсе zigbee2mqtt
Вкладка Exposes в Web-интерфейсе zigbee2mqtt

Home Assistant подхватывает датчик из zigbee2mqtt автоматом.

Home Assistant

Ну и еще. Вот например Умный Дом Яндекс. Из коробки основные параметры показывает без проблем.

УД Яндекс
УД Яндекс

P.S. Если кто-то захочет повторить приведу несколько ссылок.

Комментарии (29)


  1. belokobylskiy
    19.08.2024 09:28
    +1

    Спасибо за отличное решение DIY. А есть ли существенные отличия от готового датчика дыма Tuya или Heiman?


    1. Slacky1965 Автор
      19.08.2024 09:28

      Я не знаю. У меня нет последних, не могу сравнить ...


  1. Soorin
    19.08.2024 09:28
    +1

    " За основу берем вот такую схему " - спасибо, что не на AtMega ^_^


  1. Bacchus777
    19.08.2024 09:28

    А можно покритиковать? Интересно, что по потреблению получается, а не нашел


    1. Slacky1965 Автор
      19.08.2024 09:28

      На gihub'e есть замеры. Просто измерить потребление всего устройства у меня нечем, там 9 вольт. А сама Zigbee плата потребляет мизир - в режиме сна около 6 мкА, а спит он практически постоянно. Но для чистоты эксперимента нужно его от Кроны запитать и наблюдать :))


    1. DIY_Zi
      19.08.2024 09:28

      критиковать не можно а нужно ! По замерам на гите выложенным https://github.com/slacky1965/smoke_sensor_zed 5-6 мкА всего


      1. lumen_xp
        19.08.2024 09:28
        +1

        Может быть кто-то экспериментировал с ESP-32-H2 или C6 для данных задач? Что то я присматриваюсь к ним, но нет данных по нагрузочному тестированию, потянет ли координатор или маршрутизатор 50-100 устройств?


        1. DIY_Zi
          19.08.2024 09:28

          я не встречал, для использования esp потребуется постоянное питание или чаще в разы придется менять батарейку. Откройте ДШ на ESP-32-H2/C6 и почитайте сколько в дипслип режиме они кушают для начала, что вы подразумеваете под нагрузочным тестированием ? любой современный координатор поддерживает минимум до 200 устройств (а есть и более)


    1. Samid777
      19.08.2024 09:28
      +5

      Сам датчик, без переделки, от солевой кроны работает около года. Потом начинает неожиданно пищать. Может раз в два часа, и попробуй его найди, потом может и каждые десять минут. Тут уже найти легче. Самое интересное, что пищать он начинает всегда ночью. Этому есть разумное объяснение. Ночью температура несколько ниже, и немного падает напряжение на АКБ, значит именно ночью оно перейдет тот порог, с которого датчик начнет просить менять батарейку, обязательно разбудив вас.


      1. Slacky1965 Автор
        19.08.2024 09:28

        В паспорте у него написано, что пищать начинает примерно раз в минуту в диапазоне напряжений 7.2-5.9. Это он так сообщает о необходимости замены батарейки ...


        1. Samid777
          19.08.2024 09:28

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


  1. lumen_xp
    19.08.2024 09:28
    +1

    Ну вот допустим на ESP32-H2 https://www.espressif.com/sites/default/files/documentation/esp32-h2_datasheet_en.pdf страница 34, таблица 4-10 указано 7мкА.

    По поводу нагрузочного тестирования, я не нашел упоминания систем на H2 или C6 состоящих из 50 и более устройств.


    1. lumen_xp
      19.08.2024 09:28
      +1

      Согласен что на порядок больше чем у чипа в статье TLSR8258 :
      Deep sleep with external wakeup (without SRAM retention): 0.4uA  Deep sleep with SRAM retention: 1uA (with 8kB SRAM retention), 1.2uA (with 16kB SRAM retention), 1.4uA (with 32kB SRAM retention).

      Но опять же для моих задач есть откуда подзаряжать периодически и проблем вызвать 7мкА вместо 1.4мкА не должно.


  1. rrpv
    19.08.2024 09:28
    +2

    Сообщество подсказало схему такого делителя.

    У вас в схеме Q3 перевернуто нарисован.
    Я для подобной задачи использовал неотключаемый делитель с 10М верхним резистором и буфферный ОУ с собственным током потребления 1мкА (нашел TLV... какой-то). Мне так было проще, т.к. были сильные ограничения по размеру платы и её ручное изготовление.


    1. Slacky1965 Автор
      19.08.2024 09:28

      А вот это возможно косяк. Мне его EasyEda подсунул в таком виде, а я не проверил. Правда плата работает. Но возможно делитель и не выключается вообще. Нужно проверить. Спасибо.

      Вот так нужно было по идее - https://www.slacky.ru/images/19-08-2024%20165711.jpg


    1. Slacky1965 Автор
      19.08.2024 09:28
      +1

      Схему и Гербер поправил. Спасибо. Это была действительно ошибка. Перепаял Q3 согласно правильной схеме, проверил - работает. Если не дать высокий уровень на VBAT_ADC_EN, то результат измерения 0. А если дать, то измеряет правильно. Еще раз спасибо :))


  1. dvb-des
    19.08.2024 09:28
    +1

    Все доработки хороши , только вот изначальный выбор извещателя , оставляет желать лучшего. К сожалению эти датчики являются не лучшим выбор. Если даже не сказать - худшим выбором именно как пожарного извещателя, если отбросить совсем китайный-китай. А если этот коммент читают люди работающие в Рубеж, то могу сказать , что хуже ваших датчиков ничего видел, срабатывают от чего угодно, включая фазы луны и чесания левой пятки. Как объект с рубежевским датчиками , так всегда геморрой .


  1. Sergiid
    19.08.2024 09:28

    Подскажите, а контакт К1, это выход непосредственно на динамик?


    1. Slacky1965 Автор
      19.08.2024 09:28

      Скорей всего нет. Дорожки тяжело отслеживать. Плата залитат черным лаком. Но то, что можно разглядеть, это идет напрямую с чипа извещателя. Так что врядли напрямую.


  1. Sergiid
    19.08.2024 09:28

    Отправляем gerber файл одному китайцу и через 10 дней платы у нас.

    А можно адресок? )


    1. Slacky1965 Автор
      19.08.2024 09:28

      jasonliu@easypcba.com


  1. AntonioCerutti
    19.08.2024 09:28

    Спасибо, интересно.


  1. Cognac
    19.08.2024 09:28

    Я воспользуюсь случаем и подкину идею, вдруг кого-то заинтересует. Во многих локальных очистных станциях (септиках) есть лампа, сигнализирующая о проблеме. Она монтируется на крышке и в летнее время ее отлично видно. Но зимой, под снегом, можно долго не узнать о проблеме. В одном из видео на youtube-канале sewera (предлагают услуги обустройства участка) говорили, что реализация устройства для интеграции в умный дом занимает, по их подсчетам, минимум 20к.


    1. Bacchus777
      19.08.2024 09:28

      Ну идея использования дальномера с зигби для этих целей у меня уже давно есть :-)


  1. VT100
    19.08.2024 09:28

    Халявные датчики - хорошо. Если разработывать без халявы - то они есть (точно - были раньше) с готовым выходным сигналом.

    Кнопка Tamper - питается от "подтяжки" на выводе контроллера? Тогда есть не нулевая вероятность ложных срабатываний, т.к. ток будет недостаточен для самоочистки контакта. Для кнопок довольно часто приводится параметр минимального коммутируемого тока. Раз есть свободные выводы - вполне можно использовать два (для подачи и съёма сигнала). Заодно - и решится вопрос с замнутостью кнопки.

    Поаккуратнее с переносом L1. Предполагаю, что на нём генерируется повышенное напряжение для пьезосирены. Значит - импульсные токи и необходимость как можно более коротких выводов. Может быть - просто повернуть его набок и подрезать кольцо дымовой камеры?

    P.S. Если страховой агент узнает и потребует убрать/заменить - будет полностью прав. Нельзя вмешиваться в сертифицированную конструкцию.


  1. Psychosynthesis
    19.08.2024 09:28

    А как у вас ко всему этому дом от Яндекса подключён, можете чуть подробнее описать?


    1. Slacky1965 Автор
      19.08.2024 09:28

      Если честно, то никак не подключен. Просто у меня есть Яндекс Хаб Zigbee. Я на нем проверяю работоспособность своих устройств. В Яндексе много чего стандартного пока нет ...


      1. Psychosynthesis
        19.08.2024 09:28

        Я тада не понял как он датчик увидел "из коробки", этот модуль зигби специальный для датчиков дыма что-ли?


        1. Slacky1965 Автор
          19.08.2024 09:28

          Кластер IAS можно настроить на много чего. Например, на протечку воды. Вы статью внимательно читали? Там это есть.

          • ZoneType - атрибут определяет тип сенсора. У нас будет 0x0028 - Fire sensor.