Делаем из обычного пожарного дымового извещателя Рубеж ИП 212-50М2 умный датчик дыма Zigbee

в 9:01, , рубрики: DIY, diy умный дом, smoke sensor, TLSR8258, zigbee, zigbee2mqtt

Подвернулись мне тут абсолютно случайно несколько штук таких извещателей. Открываем паспорт, читаем - ИЗВЕЩАТЕЛЬ ПОЖАРНЫЙ ДЫМОВОЙ ОПТИКО-ЭЛЕКТРОННЫЙ АВТОНОМНЫЙ ИП 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. Если кто-то захочет повторить приведу несколько ссылок.

Автор: Slacky1965

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js