Как стать автором
Обновить

Zigbee роутер с WiFi или прокачиваем модуль управления Триколор GS SMH-ZW-I1

Время на прочтение 10 мин
Количество просмотров 33K

Увлечение умным домом постепенно захватывает все больше и больше людей, ведь на рынке появляются разнообразные решения, отличающиеся не только ценой, экосистемой и используемыми протоколами, но и возможностью интеграции в Opensource системы УД, такие как HomeAssistant, OpenHAB и так далее и тому подобное.

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

Триколор GS SMH-ZW-I1
Триколор GS SMH-ZW-I1

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

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

Что за зверь и с чем его едят?

Модуль управления GS SMH-ZW-I1
Модуль управления GS SMH-ZW-I1

Модуль управления GS SMH-ZW-I1 – главное устройство сервиса «Триколор Умный дом». Все периферийные устройства сервиса (умная розетка, умные лампы, датчики, сирена и т.д.) объединены в единую систему, которая контролируется модулем управления посредством беспроводного протокола Zigbee.

Этот девайс на момент написания поста можно купить в официальном магазине Триколор всего за 299р. И нет, это не реклама, хотя очень похоже. Но, забегая вперед, скажу что вы нигде не найдете WiFi+Bluetooth USB стик и стик Zigbee CC2531 распаянный на одной плате с USB-хабом дешевле чем за 299р. Ну а если найдете - дайте знать!

Анбоксинг

Комплект
Комплект

Девайс поставляется в небольшой коробке размерами 13см х 11,5см. Внутри можно обнаружить сам модуль управления, USB дата-кабель длиной 27см и немного макулатуры.

Размеры модуля управления составляют 82мм х 82мм х 22мм.

Вид сверху
Вид сверху

На верхней части модуля управления расположены два светодиодных индикатора, указывающие на работу WiFI (синий) и Zigbee (зеленый) модулей.

Вид снизу
Вид снизу

На нижней части корпуса видны два винта и крепления на стенку.

С торца расположен micro-usb разъем для питания и подключения устройства к компьютеру.

Когда я первый раз заказывал эту коробочку, я, по сути, брал кота в мешке. В начале этого года в интернете еще не было упоминания о внутренностях модуля управления от Триколор, поэтому пришлось рискнуть и стать первопроходцем.

Снимаем крышку
Снимаем крышку

Сразу скажу, что начинка модуля управления меня приятно удивила. Как я уже упоминал, под капотом модуля управления находится плата с маркировкой MB_ZigBeeModule rev01, на которой распаян четырехпортовый USB 2.0 High Speed хаб на микросхеме FE1.1-AQFN48A, два порта из которых уже заняты WiFi+BT чипом Realtek RTL8723BU и Zigbee контроллером на микросхеме CC2531 от Texas Instruments.

Верхняя часть платы
Верхняя часть платы
Нижняя часть платы
Нижняя часть платы

USB 2.0 концентратор FE1.1

USB 2.0 концентратор FE1.1
USB 2.0 концентратор FE1.1

Два оставшихся порта не распаяны. Как видно на фотографии, там много чего не распаяно. Можно потратить немного денег и времени, и сделать функциональными нераспаянные USB порты, но я не вижу в этом особого смысла. Во первых, придется модифицировать корпус. Во вторых, в обвязке USB-портов отсутствует фильтр, защищающий от разрядов статического электричества и конденсаторы на линии питания. А в третьих, линия питания +5в на нераспаянных разьемах тоже не распаяна. В общем, слишком много мелочевки пожалели китайцы, чтобы сделать этот мир лучше.

Однако, ради тестов, я припаивал к дорожкам USB флешку (не забывая о статическом электричестве, заземленным паяльником, с антистатическим браслетом на руке), кидал 5в с первого попавшегося пятака с необходимым потенциалом (а лучше непосредственно с дорожек микро-usb разъема), и флешка успешно определялась в компьютере, к которому подключен модуль управления.

Только не забывайте, что USB концентратор в случае добавления дополнительных USB разъемов также потребует и дополнительного питания. При подключении к нему мощных устройств (например переносной жесткий диск) хаб не сможет обеспечить необходимый для работы этих устройств ток, так как по стандарту USB 2.0 с одного порта компьютера, к которому будет подключен модуль управления, можно снять не более 500 мА, а модули WiFi+BT и Zigbee, распаянные на плате, во время работы потребляют ток около 150 мА. В случае подключения модуля управления к компьютеру через порт USB 3.0 проблема с питанием уйдет на второй план, так как по стандарту USB 3.0 максимальный потребляемый ток увеличен, составляет 900 мА. Но, к сожалению, скорость USB хаба ограничена стандартами USB 2.0, и все устройства, подключенные через хаб в модуле управления Триколора будут работать медленнее, чем позволяет стандарт USB 3.0.

Разъем для дополнительного питания хоть и предусмотрен, но так же не распаян. Поэтому идея превратить модуль управления Триколор в настольный USB концентратор является вполне реализуемой, но экономически нецелесообразной.

Внешние антенны

Установка внешней Zigbee антенны
Установка внешней Zigbee антенны

Что еще можно распаять? На плате управления имеются посадочные места под разъемы антенн как для WiFi, так и для Zigbee модуля. Ради интереса припаял разъем для антенны модуля Zigbee, предварительно перерезав дорожку родной антенны и впаяв перемычку.

Модификация для внешней Zigbee антенны
Модификация для внешней Zigbee антенны

Просверлил отверстие в корпусе под установку коннектора, накрутил на него антенну от старого роутера (протокол Zigbee работает на той же частоте, что и WiFi, поэтому подойдет любая WiFi антенна на 2.4Мгц), но увеличения зоны покрытия Zigbee сети я не ощутил. LQI беспроводных Zigbee устройств также не увеличился.

Общий вид после установки антенны в корпус
Общий вид после установки антенны в корпус

Скорее всего это связано с низкой мощностью приемопередатчика CC2531, которая составляет 4.5 dBm, и в данном случае внешняя антенна будет ничем не лучше внутренней. Более мощные Zigbee стики на базе модуля CC2538 работают в паре с усилителем на чипе CC2592, с помощью которого можно достичь показателей в 20dBm с использованием внешней антенны.

Модификация для WiFi антенны
Модификация для WiFi антенны

Разъем для подключения внешней WiFi антенны так же отсутствует, но это легко исправить, припаяв sma коннектор. Я сдул феном такой коннектор со старого ноутбучного mini-pcie беспроводного модуля. Для работы внешней антенны также необходимо убрать резистор R37, отключив таким образом внутреннюю антенну.

Готовый результат
Готовый результат

WiFi+BT на чипе Realtek RTL8723BU

Его величество Realtek RTL8723BU
Его величество Realtek RTL8723BU

Из спецификации на данный чип становится ясно, что беспроводной WiFi модуль может работать в диапазоне частот 2.4ГГц, поддерживает стандарты 802.11bgn и обеспечивает скорость беспроводного соединения до 150Mbps с одной антенной. Встроенный Bluetooth контроллер поддерживает стандарт 4.0 и приятно дополняет картину.

В операционной системе Windows 10 WiFi и Bluetooth работает из коробки, дополнительных драйверов устанавливать не нужно. Под ОС семейства Linux проблем тоже не должно возникнуть, у меня получилось завести сабж даже под OpenWrt с соответствующими модулями ядра (kmod-rtl8xxxu и rtl8723bu-firmware). Что касается использования этого чипа совместно с системами умного дома - тут все хорошо. OpenHab отлично работает с ним через стандартный Bluetooth биндинг (в системе должен быть установлен Bluez), HomeAssistant также должен поддерживать его стандартными средствами.

Zigbee модуль на чипе CC2531

Zigbee модуль на чипе CC2531
Zigbee модуль на чипе CC2531

В модуле управления умным домом Триколор используется довольно популярный чип CC2531 от фирмы Texas Instruments, поддерживающий стандарты Zigbee и IEEE 802.15.4, имеющий на борту 256КБ флеш-памяти и 8КБ RAM.

Несмотря на то, что производительность этого чипа сильно отстает от более современного CC2538, радиус покрытия Zigbee сети довольно небольшой (10-15м без антенны) и общее количество Zigbee устройств в сети с этим чипом не должно превышать 20шт, в целом это неплохой вариант для ознакомления новичков с основами построения умного дома на Zigbee.

Чип прошит под использование с умным домом Триколор, но это легко исправить вооружившись паяльником и программатором. Таким образом можно получить универсальный стик, работающий как под популярное решение zigbee2mqtt, так и нативно работающее в системах умного дома OpenHAB (с помощью биндинга Zigbee) и HomeAssistant (с помощью интеграции ZHA - Zigbee Home Automation).

Для тех, кто впервые слышит слово "стик", очень рекомендую ознакомиться с материалом на сайте Ивана Бессарабова "Что такое Zigbee", постами на Хабре Zigbee 101: руководство для начинающих, а также Собираем DIY шлюз для Zigbee устройств.

Вкратце, беспроводная сеть Zigbee строится с помощью Координатора (Coordinator), расширяется с помощью Роутеров (Router). К Zigbee сети подключаются конечные устройства (End-Devices) - лампочки, розетки, кнопки, датчики движения, etc.

Из вышеперечисленного следует, что чип CC2531, используемый в модуле управления умным домом Триколор можно прошить в качестве Координатора или Роутера. Процедура прошивки одинакова, отличается лишь сам файл прошивки.

Выбор прошивки

В связи с тем, что у меня уже имеется Zigbee Координатор, на котором уже функционирует сеть для умных устройств, прошивать чип CC2531 буду в Роутер. Это позволит расширить покрытие существующей сети и улучшить качество связи с конечными устройствами.

Для чипов CC2530, CC2531, CC2538, CC1352P, CC2652R и CC2652RB существует прошивка Z-Stack, прошить которую можно несколькими способами: с помощью программатора CC Debugger или Raspberry Pi/Arduino/ESP8266. Программатора у меня нет, зато есть Arduino UNO, которая отлично подойдет для этой задачи!

Но для начала давайте разберемся с прошивками. Как я уже упоминал, существуют прошивки для Координатора и прошивки для Роутера. Они в свою очередь подразделяются на версии:

Прошивка

Чип

Версия Zigbee

Количество устройств

Количество маршрутов

Z-Stack_Home_1.2 (default)

CC2531

1.2 HA

20

30/0

CC2530, CC2530 + CC2591, CC2530 + CC2592

1.2 HA

16

30/0

Z-Stack_Home_1.2 (source_routing)

CC2531, CC2530, CC2530 + CC2591, CC2530 + CC2592

1.2 HA

5

40/40

Z-Stack_3.0.x

CC2531

3.0

15

40/0

CC2530, CC2530 + CC2591, CC2530 + CC2592

3.0

10

40/0

CC2538 + CC2592

3.0

100

200/400

  • Прошивка Zigbee 3.0 не рекомендуется для чипов CC2530 и CC2531 (в связи с тем что они слишком маломощные)

  • Если в вашей сети будет 1 - 15 устройств, рекомендуется использовать Z-Stack_Home_1.2 default.

  • Если в вашей сети будет более 15+ устройств, рекомендуется использовать прошивку Z-Stack_Home_1.2 source routing.

  • Если вы используете прошивку source routing, то количество устройств, напрямую работающих с Координатором не может превышать 5шт, остальным устройствам необходим Роутер поблизости.

Исходя из вышеперечисленного, лучшим вариантом для небольших Zigbee сетей является прошивка чипа CC2531 в Координатор с помощью Z-Stack_Home_1.2 (default).

Но как я уже говорил, второй Координатор в моей существующей сети мне не нужен, поэтому качаем прошивку роутера. Для тех, кому нужен Координатор, скачиваем эту прошивку. Процедура прошивки одинакова как для Координатора, так и для Роутера.

Прошиваем чип CC2531

Для прошивки я буду использовать Arduino UNO. Это довольно популярная плата для разработки на основе ATmega328. У многих она уже имеется, а если нет, то купить ее не составит труда. Несомненно удобнее и правильнее прошивать Zigbee чипы Texas Instruments с помощью специально предназначенного для этого программатора CC Debugger, но покупать его для одноразового действа я не вижу смысла.

Помимо платы Arduino, для прошивки чипа CC2531 понадобится установленная на персональный компьютер среда программирования Arduino IDE и проводочки.

Далее необходимо скачать файлы для прошивки с помощью Arduino, и положить куда нибудь в папочку. Затем открыть с помощью Arduino IDE файл скетча CCLoader.ino и прошить им подключенную к компьютеру Arduino UNO.

Конфигурация пинов
Конфигурация пинов

В файле скетча CCloader.ino по умолчанию прописаны пины именно для Arduino Uno, если у вас другая плата, или например, Wemos D1 Mini, не забудьте поправить конфигурацию пинов в скетче. Подробнее об этом можно почитать тут.

Прошиваем Arduino UNO
Прошиваем Arduino UNO

После загрузки скетча CCLoader.ino в плату Arduino UNO можно переходить непосредственно к прошивке чипа CC2531.

На плате модуля управления умным домом Триколор имеются технологические площадки, специально предназначенные для прошивки Zigbee чипа. Их распиновка соответсвует стандартной распиновке под CC Debugger. Для прошивки нам понадобится всего четыре контакта.

Соединяем контакты DD с пином 6 Arduino Uno, DC с пином 5, RST с пином 4, а контакт GND с соответствующим контактом GND на плате Arduino UNO.

В результате должно получиться нечто похожее:

Теперь нужно подготовить прошивку CC2531 для загрузки через Arduino UNO. Дело в том, что скачанная прошивка из архива предназначена для использования с CC Debugger (файл .hex) или SerialBootTool (файл .bin), и прошить ее непосредственно не получится. Прошиться с помощью SerialBootTool можно только в том случае, если в чип уже залита прошивка, поддерживающая SerialBootLoader (SBL). Стоковая прошивка модуля управления не поддерживает этот способ обновления прошивки, а прошивка Роутера не поддерживает SBL в принципе, поэтому нам ничего не остается как брать шаманский бубен и преобразовывать то что есть в то что надо.

Для того, чтобы преобразовать прошивку в формат для заливки через Arduino UNO нам потребуется утилита objcopy. Тем у кого есть Linux крупно повезло, эта утилита входит в состав пакета binutils, который необходимо поставить с помощью пакетного менеджера вашего дистрибутива (ну или собрать из исходников, если очень хочется).

Для преобразования файла прошивки в ОС Linux необходимо выполнить команду

objcopy --gap-fill 0xFF --pad-to 0x040000 -I ihex CC2531ZNP-Prod.hex -O binary /tmp/CC2531ZNP-Prod.bin

где CC2531ZNP-Prod.hex - имя файла исходной прошивки из скачанного архива, а CC2531ZNP-Prod.bin - имя файла на выходе. Его мы и будем прошивать через Arduino Uno.

А вот владельцем компьютеров с ОС Windows повезло меньше. Им придется где то найти скомпилированную под Windows утилиту objcopy.exe и необходимую для нее библиотеку libiconv-2.dll

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

objcopy.exe --gap-fill 0xFF --pad-to 0x040000 -I ihex CC2531ZNP-Prod.hex -O binary CC2531ZNP-Prod.bin

Только не забудьте сначала перейти в командной строке в папку, где лежат файлы прошивки и objcopy.exe, иначе фокус не получится.

Теперь у нас есть необходимый файл прошивки для чипа CC2531, прошитая файлом CCLoader.ino Arduino UNO. Можно прошиваться! Только как? Уместный вопрос.

Правильно, нам потребуется еще одна утилита - CCLoader! Под ОС Windows можно скачать готовый бинарник отсюда и скопировать в ту папку, где лежит подготовленная прошивка для CC2531.

Для ОС Linux надо будет собрать утилиту CCLoader самому. Исходники лежат тут. Для компиляции достаточно выполнить в папке с исходниками команду

gcc main.c -o CCLoader

А вот теперь у нас все готово для прошивки чипа CC2531. Подключаем Arduino UNO в USB порт компьютера, проверяем правильность соединения модуля управления Триколор с Arduino и подключаем модуль управление во второй USB порт компьютера.

Смотрим на каком COM порту висит Arduino UNO и выполняем команду

CCLoader [номер COM порта] имяпрошивки.bin 0

Должен начаться процесс прошивки

Успешное завершение прошивки чипа CC2531 выглядит примерно так

Если что то пошло не так, еще раз проверьте правильность подключение модуля управления к Arduino UNO и наличие всех необходимых для прошивки файлов. Иногда помогает переподключение девайсов к USB.

Но надеюсь что все прошло гладко, и мы имеем полностью работоспособный Роутер (или Координатор). Давайте попробуем добавить Роутер к существующей Zigbee сети. После прошивки отключите модуль управления Триколор от Arduino UNO и от USB порта. Разрешите добавление новых устройств, подключите модуль умного дома Триколор в порт USB (или в зарядное устройство мобильного телефона) и ждите пока пройдет интервью.

Роутер успешно добавлен в zigbee2mqtt
Роутер успешно добавлен в zigbee2mqtt
Подробная информация о Zigbee Роутере
Подробная информация о Zigbee Роутере
Теги:
Хабы:
+25
Комментарии 27
Комментарии Комментарии 27

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн