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

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

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

Работает конфигуратор под операционной системой 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
Веб интерфейс Zigbee2MQTT

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

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

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

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

Комментарии (19)


  1. Cpsskipper
    06.10.2021 08:04
    +2

    может быть поделитесь гайдом как писать прошивки самому без сторонних сервисов


    1. kerenskiy Автор
      06.10.2021 09:31
      +1

      Конечно поделюсь, ведь это уже было на Хабре. Посмотрите тут и тут . Но вам может не понравиться.


  1. RealBeria
    06.10.2021 14:45

    Спасибо! Очень полезная для понимания зигби статья. Убедительная просьба к автору продолжить в том же ключе.


  1. ModestONE
    07.10.2021 13:43

    Отличная статья! Автор, подскажите, а что у вас за девайс с сенсорным экраном?


    1. kerenskiy Автор
      07.10.2021 13:51

      Это центр управления умным домом LifeControl. Тоже перепрошитый на чистый андроид. С натянутым на него WallPanel.


      1. ModestONE
        07.10.2021 14:00

        Это центр управления умным домом LifeControl.

        Уже нагуглил. Но все равно спасибо! :)

        Тоже перепрошитый на чистый андроид.

        Можно ссылку? Стоит он своих денег или нет? Почему перепрошили?


        1. kerenskiy Автор
          07.10.2021 14:05

          Инфа была на 4pda, но тему почистили. В телеграмме есть чатик по альтернативному ПО на этот хаб. Денег своих стоит, ибо брал на Авито за тыщу р. А перепрошил потому что рулю им умным домом на Опенхабе.


  1. iviks
    08.10.2021 11:45

    Спасибо за интересную статью! Можно-ли на основе модуля управления Триколор сделать центр управления умным домом Tuya Smart? На рынке полно устройств этой системы разных производителей (Digma, Hiper..) и явный дефицит контроллеров.


    1. kerenskiy Автор
      08.10.2021 11:48

      По сути дела это просто Zigbee стик, и перепрошив его в координатор можно рулить всеми Zigbee девайсами, в том числе и туи (если они есть). Туя в основном это WiFi решения, и с протоколом Zigbee не совместимы.


      1. iviks
        08.10.2021 12:03

        Прошивок с поддержкой WiFi-устройств нет?


  1. 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 на фото ниже обведены красным.

    Надеюсь кому-то поможет.


    1. kerenskiy Автор
      11.10.2021 20:06

      Там есть ещё один пин P1_0, который притянут резистором к USB DATA +, видимо индикация "Линка", можно убрать резистор и юзать. Готовлю третью часть, будет описание чего и где разведено.


      1. chyvack
        12.10.2021 15:45

        Жду следующей статьи.


    1. chyvack
      15.10.2021 13:05

      транзистор в обвязке светодиода VT1, VT2 smd sot23 (маркировка 1AM) - это diodes MMBT3904


      1. kerenskiy Автор
        15.10.2021 13:10

        Да, он такой же, как и соседний. И резистор тоже.


  1. chyvack
    13.10.2021 16:25

    При прошивке ардуиной, разве не надо согласование уровней 5V-3.3V?

    GPIO cc2531 5Vтолерант? Я в даташите не нашёл.


    1. kerenskiy Автор
      13.10.2021 16:28

      Желательно. Дольше протянет. Но так как мы не подключаем +5в, а уровни на дате не всегда ровно 5в, то и так работает.


      1. chyvack
        13.10.2021 18:32

        Об этом надо бы в статье упомянуть. Хотя бы резисторы последовательно с линиями данных подключить по 0.2-1кОм.


    1. DJONvl
      27.10.2021 16:22
      +1

      не надо согласований, у них лог 1 не больше 3в, а резисторы завалят фронты, чаще ошибки при прошивке могут быть, уно отлично подходит как интерфейс