24 07 2022
Охранный датчик (датчик присутствия) для 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.
Закачать прошивку можно тремя способами:
- используя CCLoader ESP8266 (например Wemos D1 mini)
- используя Raspberry Pi
- используя CC Debugger
Самый дешевый вариант это первый, нужна любая платка ESP8266, ее саму сначала нужно прошить специальной прошивкой.
1.1 Прошивка ESP8266
Готовая прошивка находится тут (там же можно скачать исходники и собрать свою прошивку с нужными пинами). Ее нужно прошить на ESP8266, например, через Tasmotizer.
1.2 Соединение CC2530 и ESP8266
ПИНы для прошивки нужно соединить в соответствии с таблицей ниже
PIN CC2530 | NodeMCU/Wemos | GPIO# |
---|---|---|
P21 (DEBUG_DATA) | D5 | GPIO14 |
P22 (DEBUG_CLOCK) | D2 | GPIO4 |
RST (RESET_N) | D1 | GPIO5 |
VCC | 3.3V | |
GND | GND |
Стоит обратить внимание, что CC2530 питается максимум от 3В, поэтому нужно быть внимательным при соединении питания.
После предварительной подготовки, можно создать свою прошивку через 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 Сохранить, настройки и запустить поиск устройств.
В списке должно появиться безымянное устройство с красной иконкой, а в свойствах должно быть доступна индикация присутствия:
НЕТ ВОЙНЕ Ошибка: «Configure —data-ciphers-fallback if you want to connect to this server» и как ее исправить