После написания поста 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 термометр, датчик напряжения и тока, регулятор громкости, выключатель и так далее и тому подобное. Но это уже тема для нового поста.
Большое спасибо за внимание, и творческих успехов!
Комментарии (19)
RealBeria
06.10.2021 14:45Спасибо! Очень полезная для понимания зигби статья. Убедительная просьба к автору продолжить в том же ключе.
ModestONE
07.10.2021 13:43Отличная статья! Автор, подскажите, а что у вас за девайс с сенсорным экраном?
kerenskiy Автор
07.10.2021 13:51Это центр управления умным домом LifeControl. Тоже перепрошитый на чистый андроид. С натянутым на него WallPanel.
ModestONE
07.10.2021 14:00Это центр управления умным домом LifeControl.
Уже нагуглил. Но все равно спасибо! :)
Тоже перепрошитый на чистый андроид.
Можно ссылку? Стоит он своих денег или нет? Почему перепрошили?
kerenskiy Автор
07.10.2021 14:05Инфа была на 4pda, но тему почистили. В телеграмме есть чатик по альтернативному ПО на этот хаб. Денег своих стоит, ибо брал на Авито за тыщу р. А перепрошил потому что рулю им умным домом на Опенхабе.
iviks
08.10.2021 11:45Спасибо за интересную статью! Можно-ли на основе модуля управления Триколор сделать центр управления умным домом Tuya Smart? На рынке полно устройств этой системы разных производителей (Digma, Hiper..) и явный дефицит контроллеров.
kerenskiy Автор
08.10.2021 11:48По сути дела это просто Zigbee стик, и перепрошив его в координатор можно рулить всеми Zigbee девайсами, в том числе и туи (если они есть). Туя в основном это WiFi решения, и с протоколом Zigbee не совместимы.
chyvack
11.10.2021 20:00Спасибо за эти статьи. Сегодня купил пару этих стиков. Как я сомг найти: нераспаяные элементы защиты USB портов это TPD2E001DRLR от TI https://www.ti.com/product/TPD2E001
Хочется добавить, что на плате уже разведены, но не распаяны две кнопки с обратной стороны платы: SA1, SA2 (нужно допаять пару резисторов) и ещё один светодиод (нужно допаять транзистор, светодиод и два резистора)
Я прозвонил:
Кнопка SA1 P0_6 (CC2531)
Кнопка SA2 P0_3 (CC2531)
Светодиод: P0_5(CC2531) R51-VT1-VD8(LED)-R50 на фото ниже обведены красным.
Надеюсь кому-то поможет.
chyvack
13.10.2021 16:25При прошивке ардуиной, разве не надо согласование уровней 5V-3.3V?
GPIO cc2531 5Vтолерант? Я в даташите не нашёл.
DJONvl
27.10.2021 16:22+1не надо согласований, у них лог 1 не больше 3в, а резисторы завалят фронты, чаще ошибки при прошивке могут быть, уно отлично подходит как интерфейс
Cpsskipper
может быть поделитесь гайдом как писать прошивки самому без сторонних сервисов
kerenskiy Автор
Конечно поделюсь, ведь это уже было на Хабре. Посмотрите тут и тут . Но вам может не понравиться.