touch MAX

получи максимум — личный блог "тыж программиста"

Охранный датчик (датчик присутствия) для Home Assistant с использованием Zigbee

Для своего умного дома решил собрать датчик присутствия на доплеровском датчике rcwl-0516 и микроконтроллера cc2530, работающий на протоколе Zigbee, отличающийся сверх низким энергопотреблением.

Доплеровский датчик движения RCWL-0516 — способен определять движение объектов, которые полностью или частично отражают радиоволны (люди, животные, металл и т.д.), в том числе когда движущиеся объекты находятся за тонкой перегородкой. На определение движения не влияет освещение, в отличии от инфракрасных датчиков.

Характеристики датчика

  • Входное напряжение питания (VIN): 4 … 28 В постоянного тока.
  • Потребляемый ток: до 3 мА (номинально 2,8 мА).
  • Дальность обнаружения: до 9 м (номинально до 5 м).
  • Мощность передатчика: до 30 мВт (номинально до 20 мВт).
  • Частота передатчика: 5,8 ГГц.
  • Время задержки до сброса триггера: 2 сек ±30%.
  • Выходное напряжение питания (3V3): 3,2 … 3,4 В (номинально 3,3 В).
  • Максимальный ток на выходе «3V3»: до 100 мА.
  • Рабочая температура: -20 … +80 °С.
  • Температура хранения: -40 … +100 °С.
  • Габариты: 17,3х35,9 мм
  • Вес: 4 гр.

CC2530, модуль Zigbee 2.5мВт [2.4ГГц] — плата поддерживающая стандарт IEEE 802.15.4, предназначена для организации сетей стандарта ZigBee, а также средств дистанционного управления на базе ZigBee RF4CE и оборудования стандарта Smart Energy. ИС CC2530 объединяет в одном кристалле РЧ-трансивер и микроконтроллер, ядро которого совместимо со стандартным ядром 8051 и отличается от него улучшенным быстродействием. ИС выпускается в четырех исполнениях CC2530F32/64/128/256, различающиеся объемом флэш-памяти — 32/64/128/256 Кбайт, соответственно. В остальном все ИС идентичны: они поставляются в миниатюрном RoHS-совместимом корпусе QFN40 размерами 6×6 мм и обладают одинаковыми рабочими характеристиками.

Характеристики контроллера

  • Размеры (мм) 17×28
  • Рабочая частота (МГц) 2394-2507
  • Напряжение (В) 2-3.6
  • Мощность передатчика (dBm) 4 (2.5мВт)
  • Расстояние (м) 150
  • Скорость (кбит/с) 250
  • Ток утечки (мА) 28
  • Чувствительность приемника (dBm) -97
  • Рабочая температура (C) -45…+85
  • Допустимый уровень влажности (%RH) 10-90

Распиновка cc2530

1. Прошивка CC2530

Первым шагом нужно прошить CC2530 на универсальную прошивку PTVO.

Закачать прошивку можно тремя способами:

Самый дешевый вариант это первый, нужна любая платка ESP8266, ее саму сначала нужно прошить специальной прошивкой.

1.1 Прошивка ESP8266

Готовая прошивка находится тут (там же можно скачать исходники и собрать свою прошивку с нужными пинами). Ее нужно прошить на ESP8266, например, через Tasmotizer.

1.2 Соединение CC2530 и ESP8266

ПИНы для прошивки нужно соединить в соответствии с таблицей ниже

PIN CC2530 NodeMCU/WemosGPIO#
P21 (DEBUG_DATA)D5GPIO14
P22 (DEBUG_CLOCK)D2GPIO4
RST (RESET_N)D1GPIO5
VCC3.3V 
GNDGND 

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

После предварительной подготовки, можно создать свою прошивку через PTVO

2. Генерация прошивки

Программа PTVO генерит универсальную прошивку для Zigbee устройств с нужным вам функционалом, например, можно сделать датчики температуры и CO2, управлять реле, светодиодной летной и тд.

Можно скачать готовый файл настроек, его нужно распаковать и открыть в программе:

Или сделать настройку самому:

В нашем случае:

  • выбираем тип платы CC2530
  • тип устройства Конечное устройство
  • опционально выбираем Индикатор статуса на PIN P07 (нужно припаять светодиод на плату к этому пину)
  • Выход2 P30 это виртуальный порт, несуществующий физически, но нужный для отправки данных по Zigbee
  • Вход2 P06 это физический порт, к которому подключаем выход датчика RCWL-0516 и программно подключенный к Выход2 (передает туда данные)

на момент написания статьи в прошивке был баг, если выбрать Вход1, то устройство после переподключения переходило снова в режим сопряжения, поэтому нужно выбирать Вход2

Переключаемся на вкладку Эксперт и там называем свое устройство, нажимаем Создать внешний конвертер для Z2M, будет сгенерирован файл с расширением JS, который нужен будет нам потом для HomeAssistant и аддона Zigbee2MQTT.

Теперь нажимаем нижнюю кнопку Сохранить, будет сгенерирована прошивка в формате HEX.

Для заливки прошивки на CC2530 нужна прошивка в формате BIN, поэтому скачиваем утилиту objcopy и CCLoader, в архиве ниже

запускаем конвертацию HEX в BIN:

objcopy.exe --gap-fill 0xFF --pad-to 0x040000 -I ihex название_сохраненной_прошивки.hex -O binary название_прошивки.bin

запускаем прошивку cc2530 через ESP8266 (где 9 это номер COM порта, к которому подключен ESP8266):

CCLoader_x86_64.exe 9 название_прошивки.bin 0 

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

Upload successfully! File closed! Comport closed!

Теперь отключаем ESP8266 от компьютера и заново подключаем, CC2530 переходит в режим сопряжения и если припаивали светодиод, он будет быстро мигать, примерно раз в секунду и будет в таком режиме пока не подключится к координатору Zigbee. Сбросить устройство можно 3 раза подключить к питанию и выждав 2 секунды отключить от питания, прошивка сброситься и опять будет ждать подключению к координатору.

3. Подключение СС2530 и RCWL-0516

Теперь можно отключать ESP8266, соединить СС230 и RCWL-0516 с источником питания от 4В до 28В. Соединить выход датчика OUT с P06. И стабилизированный выход 3.3В со входом питания CC2530. В качестве источника может выступать аккумулятор 3.7В, тем более собранное устройство потребляет не более 28мА

4. Подключение к Home Assistant

Полученный файл JS на шаге 2, нужно скопировать на устройство с установленным Home Assistant в папку /config/zigbee2mqtt, а потом в Настройках Zigbee2MQTT во Внешних конверторах указать имя файла JS Сохранить, настройки и запустить поиск устройств.

В списке должно появиться безымянное устройство с красной иконкой, а в свойствах должно быть доступна индикация присутствия:

,