Мигаем светодиодом по протоколу Zigbee или модуль управления Триколор GS SMH-ZW-I1 с прошивкой PTVO

После написания поста Zigbee роутер с WiFi или прокачиваем модуль управления Триколор GS SMH-ZW-I1 меня стали терзать смутные сомнения, что многое осталось недосказанным, недопаянным и недопрошитым.

image-loader.svg

На самом деле прошить чип 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 устройства на основе модуля управления Триколор бесплатного функционала хватает за глаза.

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

Интерфейс конфигуратора прошивок ptvo.infoИнтерфейс конфигуратора прошивок ptvo.info

Работает конфигуратор под операционной системой Windows, интерфейс программы довольно лаконичен, присутствует поддержка русского языка. По умолчанию используется английский язык, но это легко исправить в меню Language.

Пример конфигурирования входов и выходов для работы с сенсорами и кнопкамиПример конфигурирования входов и выходов для работы с сенсорами и кнопками

Генератор прошивок поддерживает работу с довольно большим количеством сенсоров и исполнительных устройств, позволяет запоминать состояние выходов при пропадании питания и конфигурировать входы на обработку одинарных, двойных, тройных нажатий, а также привязывать входы непосредственно к выходам чипа CC2531, обеспечивая возможность менять состояния этих выходов нажатием кнопки. Состояние входов и выходов также можно инвертировать непосредственно в прошивке.

Сообщение о некорректной конфигурации.Сообщение о некорректной конфигурации.

Если в процессе конфигурирования были выбраны некорректные или неподдерживаемые в текущей конфигурации опции, программа сообщит об этом.

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

Делаем прошивку для своего устройства

Для того чтобы создать прошивку под свое устройство на чипе CC2530/CC2531 небходимо указать тип платы и тип устройства.

Выбор типа платыВыбор типа платы

Для устройства на основе модуля управления Триколор параметр «Тип платы» будет соответствовать CC2530, а тип устройства будет зависить от того, что хотим получить на выходе. Для большинства устройств необходимо выбирать вариант «Конечное устройство без функции роутера», но я выберу вариант «Роутер», так как планирую расширить Zigbee сеть за счет использования самодельного устройства.

Теперь необходимо сконфигурировать входы и выходы. Вооружаемся мультиметром, даташитом на чип CC2531 и находим какие пины чипа выведены в удобные места на печатной плате. Начнем с пина, который управляет светодиодом. Так как почти все пины чипа CC2531 на выходе могут выдать ток не более 4 ма (кроме пинов P1_0 и P1_0, ток которых может составлять до 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 прошьется необходимой для работы флешера прошивкой, после чего можно подключить к ней модуль управления Триколор в соответствии с показанной таблицей.

image-loader.svg

Далее необходимо выбрать полученную с помощью конфигуратора прошивок PTVO прошивку под наше устройство и нажать Write. Если очень хочется, то сначала нажать Chip Erase, потом Write. Спустя некоторое время чип прошьется, перезагрузится и войдет в режим сопряжения. В этот момент необходимо разрешить подключение в Zigbee2MQTT и дождаться пока наше самодельное устройство пройдет интервью.

Мигаем светодиодом по MQTT

После окончания интервью в Zigbee2MQTT появится новое устройство ptvo.switch

image-loader.svgimage-loader.svg

Для удобства изменим пользовательское имя на что-нибудь приятное, например на «router», а затем посмотрим какие топики создает Zigbee2MQTT в брокере для этого устройства.

image-loader.svg

Отлично! Статус устройства можно получить из JSON пейлоада "state_l1", а управлять состоянием светодиода можно отправляя JSON пейлоад со значением "ON" или "OFF" в топик zigbee2mqtt/router/set

Управлять светодиодом можно также из веб-интерфейса Zigbee2MQTT, однако для устройства ptvo.switch интерфейс слишком перегружен.

Веб интерфейс Zigbee2MQTTВеб интерфейс Zigbee2MQTT

Наличие лишних элементов управления у устройства с одним светодиодом обьясняется тем, что Zigbee2MQTT не может автоматически определить какие сенсоры, входы и выходы задействованы в прошивке устройства. Если вы хотите чтобы в интерфейсе z2m не было лишних элементов, необходимо создать прошивку с уникальным идентификатором Производителя и Модели, выгрузить внешний конвертер для него, и добавить его в Zigbee2MQTT.

Теперь можно полноценно использовать самодельное устройство в качестве Zigbee Роутера и интегрировать его в Умный дом по протоколу MQTT.

Таким образом можно создать Zigbee устройство на основе модуля управления Триколор, не ограничиваясь только светодиодом. Большое количество сенсоров и исполнительных устройств, доступных в прошивке PTVO позволяют серьезно расширить функционал, превратив модуль управления Триколор в Zigbee термометр, датчик напряжения и тока, регулятор громкости, выключатель и так далее и тому подобное. Но это уже тема для нового поста.

Большое спасибо за внимание, и творческих успехов!

© Habrahabr.ru