После написания поста Zigbee роутер с WiFi или прокачиваем модуль управления Триколор GS SMH-ZW-I1 меня стали терзать смутные сомнения, что многое осталось недосказанным, недопаянным и недопрошитым.
На самом деле прошить чип CC2351 в координатор или роутер Zigbee довольно тривиальная задача, и гораздо интереснее сделать на его основе END-Device. Большинство читателей Хабра знакомы с Arduino или ESP8266, и знают, что каждый новичок, изучающий основы программирования микроконтроллеров и схемотехники на этих платах для разработки первым делом учится мигать светодиодом. Поэтому предлагаю рассмотреть модуль управления Триколор GS SMH-ZW-I1 в качестве своеобразной платы для разработки и тоже помигать имеющимся на ней светодиодом. Сделать это можно не написав ни единой строчки кода, с помощью конфигуратора прошивки от ptvo , специально предназначенной для создания своих Zigbee устройств на чипах CC2530, CC2531, да еще и с поддержкой усилителей сигнала CC2590, CC2591, CC2592, RFX2401.
Прошивка PTVO - первое знакомство.
Как я уже упоминал, для того чтобы создать прошивку чипа CC2530/2531 для своего устройства, совсем не обязательно уметь программировать. Это стало возможным благодаря конфигуратору прошивок от проекта ptvo.info
Пользоваться конфигуратором прошивок и самой прошивкой можно бесплатно, но в этом случае функционал будет ограничен. В бесплатной версии доступно конфигурирование 8 входов и 8 выходов (в платной 16), и недоступно создание устройств с режимом сохранения энергии, который необходим при использовании питания от батареек. В случае создания Zigbee устройства на основе модуля управления Триколор бесплатного функционала хватает за глаза.
Давайте скачаем последнюю версию конфигуратора и ознакомимся с его функционалом.
Работает конфигуратор под операционной системой Windows, интерфейс программы довольно лаконичен, присутствует поддержка русского языка. По умолчанию используется английский язык, но это легко исправить в меню Language.
Генератор прошивок поддерживает работу с довольно большим количеством сенсоров и исполнительных устройств, позволяет запоминать состояние выходов при пропадании питания и конфигурировать входы на обработку одинарных, двойных, тройных нажатий, а также привязывать входы непосредственно к выходам чипа CC2531, обеспечивая возможность менять состояния этих выходов нажатием кнопки. Состояние входов и выходов также можно инвертировать непосредственно в прошивке.
Если в процессе конфигурирования были выбраны некорректные или неподдерживаемые в текущей конфигурации опции, программа сообщит об этом.
Подробнее о возможностях прошивки можно почитать тут, а с примерами готовых устройств на ее основе можно ознакомиться тут.
Делаем прошивку для своего устройства
Для того чтобы создать прошивку под свое устройство на чипе CC2530/CC2531 небходимо указать тип платы и тип устройства.
Для устройства на основе модуля управления Триколор параметр "Тип платы" будет соответствовать CC2530, а тип устройства будет зависить от того, что хотим получить на выходе. Для большинства устройств необходимо выбирать вариант "Конечное устройство без функции роутера", но я выберу вариант "Роутер", так как планирую расширить Zigbee сеть за счет использования самодельного устройства.
Теперь необходимо сконфигурировать входы и выходы. Вооружаемся мультиметром, даташитом на чип CC2531 и находим какие пины чипа выведены в удобные места на печатной плате. Начнем с пина, который управляет светодиодом. Так как почти все пины чипа CC2531 на выходе могут выдать ток не более 4ма (кроме пинов P1_0 и P1_1, ток которых может составлять до 20ма) светодиод подключен к пину не напрямую, а через транзисторный ключ. Путем нехитрых телодвижений с мультиметром находим, что нужный нам пин является пином P0_4. Конфигурируем его в прошивке.
Остальные пины конфигурируются похожим образом, но нас они пока не интересуют, для наших целей достаточно одного пина, на котором висит светодиод. Ставим галочку "Запоминать состояние" если необходимо чтобы состояние светодиода сохранялось при пропадании питания и восстанавливалось после его появления. Сохраняем прошивку в формате *.hex
Прошиваем чип CC2531. Еще один способ.
Чтобы прошить модуль управления Триколор своей прошивкой необходимо иметь CC Debugger или воспользоваться альтернативными методами прошивки. Программатора у меня нет, шить с помощью конструкции из raspberry pi довольно громоздко, поэтому для прошивки я использовал Arduino Uno и CCloader. Но и этот вариант тоже не самый удобный, потому что приходится конвертировать hex прошивку в формат bin с помощью консольной программы, и с помощью консольной программы прошивать.
Но существует еще один способ прошить чип CC2531 с помощью графической программы VLK DIY Multi Flasher от @DJONvl и Arduino.
Качаем VLK DIY Multi Flasher, запускаем, выбираем COM-порт, на котором висит Arduino, жмем Connect, а затем Make Flasher. Arduino прошьется необходимой для работы флешера прошивкой, после чего можно подключить к ней модуль управления Триколор в соответствии с показанной таблицей.
Далее необходимо выбрать полученную с помощью конфигуратора прошивок PTVO прошивку под наше устройство и нажать Write. Если очень хочется, то сначала нажать Chip Erase, потом Write. Спустя некоторое время чип прошьется, перезагрузится и войдет в режим сопряжения. В этот момент необходимо разрешить подключение в Zigbee2MQTT и дождаться пока наше самодельное устройство пройдет интервью.
Мигаем светодиодом по MQTT
После окончания интервью в Zigbee2MQTT появится новое устройство ptvo.switch
Для удобства изменим пользовательское имя на что-нибудь приятное, например на "router", а затем посмотрим какие топики создает Zigbee2MQTT в брокере для этого устройства.
Отлично! Статус устройства можно получить из JSON пейлоада "state_l1"
, а управлять состоянием светодиода можно отправляя JSON пейлоад со значением "ON"
или "OFF"
в топик zigbee2mqtt/router/set
Управлять светодиодом можно также из веб-интерфейса Zigbee2MQTT, однако для устройства ptvo.switch
интерфейс слишком перегружен.
Наличие лишних элементов управления у устройства с одним светодиодом обьясняется тем, что Zigbee2MQTT не может автоматически определить какие сенсоры, входы и выходы задействованы в прошивке устройства. Если вы хотите чтобы в интерфейсе z2m не было лишних элементов, необходимо создать прошивку с уникальным идентификатором Производителя и Модели, выгрузить внешний конвертер для него, и добавить его в Zigbee2MQTT.
Теперь можно полноценно использовать самодельное устройство в качестве Zigbee Роутера и интегрировать его в Умный дом по протоколу MQTT.
Таким образом можно создать Zigbee устройство на основе модуля управления Триколор, не ограничиваясь только светодиодом. Большое количество сенсоров и исполнительных устройств, доступных в прошивке PTVO позволяют серьезно расширить функционал, превратив модуль управления Триколор в Zigbee термометр, датчик напряжения и тока, регулятор громкости, выключатель и так далее и тому подобное. Но это уже тема для нового поста.
Большое спасибо за внимание, и творческих успехов!