Прошивка cc2531 через usb
Для подключения ZigBee устройств и датчиков необходим шлюз, который обеспечит взаимодействие между ними. Зачастую каждый производитель выпускает шлюзы поддерживающие только устройства своей экосистемы. Не все шлюзы возможно подключить к альтернативным системам управления и не все, подключенные через шлюз устройства, могут поддерживаться, бывает, что у устройств ограничен функционал. Решить подобные проблемы и объединить наши устройства поможет USB координатор CC2531 стоимостью 5$. Заказать можно на одной известной торговой китайской торговой площадке, устройства предлагаются в двух вариантах, со встроенной и внешней подключаемой антенной, предпочтительнее второй вариант, т.к. при недостаточном уровне сигнала можно заменить антенну на более мощную.
Для подключения устройств необходимы:
- USB координатор CC2531.
- Компьютер для подключения координатора и установки необходимого программного обеспечения, для этих целей прекрасно подходит Raspberry Pi.
- Программное обеспечение ZigBee2MQTT.
- Программное обеспечение для работы протокола MQTT (так называемый MQTT брокер), например, Mosquitto.
Преимущества данного подключения устройств:
- Датчики и устройства можно подключить к альтернативным системам, таким как Home Assistant, не имея шлюза производителя.
- Обширный список устройств разных производителей. Полный список поддерживаемых устройств.
- Можно использовать гибридную систему, часть устройств подключены к шлюзу производителя, часть напрямую к СС2531.
- Некоторые устройства имеют функции, которых нет при подключении к шлюзу своей экосистемы.
Схема подключения будет выглядеть следующим образом:
На сайте проекта ZigBee2MQTT подробно расписан порядок действий, ниже будет представлен вольный перевод того, что необходимо выполнить:
Прошивка CC2531
Изначально устройство пустое, на ней не прошито никакого управляющего программного обеспечения, поэтому первым делом необходимо залить на устройство прошивку. Прошить устройство можно несколькими способами:
- При помощи CC Debugger, покупается на той же площадке где и плата, стоит как два устройства CC2531. Можно поискать у знакомых, которые уже купили данное устройство. Минус, то что оно нужно всего на один-два раза, прошить/обновить плату и. возможно прошить еще одну, которая будет выступать как роутер. Необходим Debug кабель, покупается там же вместе с CC Debugger'ом или отдельно.
- Прошить с помощью Paspberry Pi. [Инструкция]
Ниже описан первый вариант для Windows. Оригинал был описан на сайте ZigBee2MQTT. UPD.: на 10.11.2020 страница перенесена, но в общем списке ссылка на нее отсутствует.
Скачиваем и устанавливаем программу SmartRF Flash Programmer, необходимо зарегистрироваться на сайте, после чего будет доступна ссылка на скачивание. Будьте внимательны! SmartRF Flash Programmer v2 не подходит. [Зеркало]
Скачиваем и устанавливаем драйвер для CC Debugger, подключите CC Debugger к USB порту, в диспетчере устройств убедитесь, что драйвер установился корректно и устройство определилось. При возникновении проблем установите драйвер вручную. Отключите CC Debugger. [Зеркало]
Подключить СС2531 к CC Debugger'у при помощи Debug кабеля. Подключить оба устройства (CC2531 и CC Debugger) к USB портам компьютера. Если индикатор на CC Debugger светит красным, то нажать кнопку Reset на CC Debugger, индикатор должен загореться зеленым цветом.
Скачиваем и распаковываем прошивку для CC2531. Прошивки есть для ZigBee версии 1.2 и 3. Для версии 1.2 есть два вида прошивок Default и Source Routing, автор комментирует так:
- Если в ZigBee сети до 30 устройств, то рекомендуется версия Default.
- Если в ZigBee сети более 30 устройств, то рекомендуется версия Source Routing. Данная прошивка поддерживает только 5 прямых подключений к координатору, остальные устройства подключаются через роутеры. Роутером в ZigBee сети обычно выступает любое устройство, подключенное к постоянному питанию, розетки, выключатели, светильники, но выключатели Xiaomi без нулевой линии не являются роутерами. Так же в качестве роутера можно использовать другое устройства CC2531 или CC2530, но прошитые специальной прошивкой.
Запускаем SmartRF Flash Programmer и выбираем:
- What do you want to program: Program CCxxxx SoC or MSP430
- Во вкладке Sisten-on-Chip выбираем CC2531
- Interface: Fast
- Flash Image File выбираем файл прошивки с расширением *.hex .
- Location: Primary
- Actions: Erace, program and verify
Нажимаем Perfom actions, ждем окончания прошивки модуля.
Отключаем модуль от компьютера и CC Debugger'а.
Установка MQTT брокера Mosquitto
Дальнейшие инструкции описывают установку программного обеспечения на Ubuntu и другие системы на базе Debian, в том числе Raspberry Pi OS.
В файле /etc/mosquitto/mosquitto.conf должно быть следующее:
Создадим файл default.conf для внесения своих настроек:
Для установки пароля в файл /etc/mosquitto/conf.d/default.conf внесем следующее:
Создаем нового пользователя usermosquitto с паролем passmosquitto для подключения к Mosquitto:
Вводим пароль для нового пользователя и перезапускаем сервис Mosquitto:
Установка ZigBee2MQTT
Подключаем CC2531 координатор к компьютеру, работающему 24/7, самый распространенный вариант это Raspberry Pi где крутится сервис автоматизации, но на самом деле это могут быть разные компьютеры, первый MQTT брокером, второй с сервисом ZigBee2MQTT, третий с сервисом автоматизации :) Но обычно это один компьютер.
Проверяем подключение устройства в системе:
Как видно из ответа, наше устройство обнаружилось как ttyACM0 , проверяем:
Устанавливаем репозиторий Node.js :
Проверяем версии Node.js и npm:
Версия Node.js должна быть 10.x или 12.x, npm - 6.x
Делаем клон репозитория ZigBee2MQTT:
где user - пользователь, под которым будет работать сервис, group - группа имеющая доступ к папке. Для Raspberry Pi это обычно pi:pi. Пользователь должен входить в группу dialout.
Редактируем файл настроек /opt/zigbee2mqtt/data/configuration.yaml :
homeassistant: true - если вы собираетесь используете интеграцию с Home Assistant.
permit_join: false - подключение новых устройств. Для подключения новых устройств необходимо выставить в true, рекомендуемое значение false во избежании подключения случайных устройств.
server: 'mqtt://localhost' - адрес сервера MQTT. Если это тоже самое устройство, то оставляем localhost .
user: usermosquitto - пользователь с доступом к MQTT серверу.
password: passmosquitto - Пароль пользователя MQTT сервера.
port: /dev/ttyACM0 - устройсво CC2531 в системе.
network_key: GENERATE - ключ безопасности сети ZigBee. GENERATE - при старте будет сгенерирован новый ключ, можно задать вручную: network_key: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5]
Останавливаем программу Ctrl+C .
Создаем файл для запуска сервиса при старте системы.
User=pi - Пользователь, с правами которого запускается сервис. Для Raspberry Pi это обычно пользователь pi.
Добавляем сервис в автозагрузку и запускаем его:
Обновление ZigBee2MQTT
Делаем резервную копию данных:
Восстановление данных и запуск сервиса:
Подключение устройств
Для подключения устройств в файле /opt/zigbee2mqtt/data/configuration.yaml надо установить permit_join: true и перезагрузить сервис.
Перед подключением необходимо проверить, что подключаемое устройство находится в списке поддерживаемых устройств. Для перевода подключаемого устройства в режим спаривания необходимо обратиться к инструкции производителя.
После подключения всех устройств для повышения безопасности и избежании случайного подключения других устройств в файле /opt/zigbee2mqtt/data/configuration.yaml необходимо установить permit_join: false после чего перезагрузить сервис.
Выявленные проблемы
На Ubuntu было лень создавать отдельного пользователя для работы сервиса и программа запускалась от пользователя homeassistant вместе с самим Home Assistant. После нескольких минут работы у Home Assistant отваливалась связь со шлюзами и светильниками Xiaomi. После создания в системе отдельного пользователя и настройки запуска от его имени проблема ушла.
Первоначально нужно, чтобы СС2531 был прошит любой ZNP прошивкой. Например Z-Stack-firmware для Zigbee2Mqtt. В этих прошивках имеется встроенный загрузчик, который позволяет залить прошивку через UART.
Для этого нам понадобится программа SerialBootTool. Скачиваем и устанавливаем.
Так же скачиваем прошивку отсюда, нам нужен файл с расширением .bin
Вставляем CC2531 в usb порт. В первый раз Windows определяет устройство и скачивает драйвера, нужно подождать секунд 10.
В обычном состоянии CC2531 будет светить зеленым светодиодом.
Запускаем SerialBootTool. При запуске выбираем ZIGBEE
Далее выбираем файл прошивки в поле Image File, выбираем порт cc2531 через кнопку Port Settings, у меня COM5. Остальные параметры не меняем.
И жмем кнопу Load Image.
Загорится красный светодиод.
Дожидаемся окошка об успешном выполнении и стиком можно пользоваться
Для cc2531 в Windows 7 нужно скачать драйвер вот отсюда, сам он не подтянется. Спасибо за комментарий пользователя RustamG
Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью.
Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью.
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Только апдейт прошивки или можно таким же образом прошить стик под, скажем, роутер ?
Пустой стик не прошить. Я не знаю, китайцы пустой присылают или там уже что то залито, у меня два cc2531 и оба уже прошиты, поэтому проверить не могу. А координатор на роутер поменять и наоборот, или просто обновить без проблем получится
Просто заказал 4 штуки сс2531 и они пришли. А дебагер (CC Debugger) еще в пути и по ходу ждать как минимум пару недель. Я и обрадовался, что смог бы раньше прошить )
Было бы не плохо, если бы вы проверили)
теоретически убить могу или нет ? просто нужно в 4 комнаты разместить. убъется — черт с ним, просто потом вечность ждать новый заказ ) А так могу конечно попробовать.
Убить не убьёте, она просто не должна будет залиться. Так как бутлоадера не будет.
Придется повозиться. Винда 10 определила «CC2531 USB Dongle
» но драйвера не находит. Возьму завтра на работу и попробую по вашей инструкции.
Com порт новый не появился? У меня десятка все быстро нашла
По умолчанию ни дома ни на работе винда не нашла драйвера. Вы вероятно что-то раньше ставили, поэтому и прошло на ура.
В общем откопал на форумах драйвер Cebal, установилась, железка стала полностью видна. Однако в системе новых com-портов не появилось.
Если устройство распозналось, а порта нет, значит бутлоадера нет, увы) стик пустой, прошивать нужно)
Да, увы, придется ждать дебаггера )
Как? Подскажите, как поменять координатор на роутер?
Ребят а по теме, где взять драйвер уже пошитого стика для обновления TI CC2531 USB CDC Serial Por.
У меня автоматом подтянулся
Добавлю в статью, спасибо
Добрый день!
Подскажите пожалуйста,
есть рабочий стик сс2531, на нем висят уже куча девайсов, хочу обновить на нем прошивку. После этого надо будет опять все устройства переподключать? Или Хом Ассистант эту информацию хранит у себя?
Не хотелось бы по новой…..
Заранее спасибо!
Здравствуйте! У себя менял стик на другой и все устройства остались привязанными. И обновлял прошивку этим способом, все тоже продолжило работать. Но это было полгода назад, на актуальной на тот момент версии zigbee2mqtt. Как сейчас не знаю, но не думаю что обновление повлияет на id стика. В любом случае все делайте на свой страх и риск.
Здравствуйте! Хочу прошить стик сс2531 под роутер, но по вашей ссылке выложены hex прошивки, которые в SerialBootTool не шьются. Нужна bin прошивка. Под координатор есть. Подскажите, где можно взять под роутер?
Здравствуйте! После прошивки в первый раз через адаптер стик работал? У меня на втором (запасном) стике точно такая же проблема. Светодиод тухнет, z2m его не видит.
Простой способ прошивки стика CC2531 если нет дебаггера, но есть raspberry.
Все делал по инструкции, в разделе о малине.
Должна стоять wiringPi, затем качаем flash_cc2531 командой:
Подключаем CC2531 через дебаг кабель к Raspberry по следующей схеме:
- pin 1 (GND) –> pin 39 (GND)
- pin 7 (reset) –> pin 35 (GPIO24, BCM19)
- pin 3 (DC) –> pin 36 (GPIO27, BCM16)
- pin 4 (DD) –> pin 38 (GPIO28, BCM20)
Если дебаг кабеля нет, можно аккуратно припаять провода к колодке на самом сс2531, распиновка аналогичная:
Вставляем стик в raspberry и тестируем:
В ответ должны получить:
Распаковываем CC2531ZNP-Prod.hex в каталог прошивальщика flash_cc2531
и прошиваем, предварительно выполнив очистку:
Очистка идет быстро. Прошивка минуты 3. После прошивки запустилась верификация, но очень долгая, я ее отменил.
Прошивка CC2530 через Raspberry Pi описана тут:
Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью.
Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью.
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Либо вставить сс2531 в малину
Ох, спасибо я как-то пропустил это в статье, всё ищу сложные пути 🙂
Не совсем догоняю, так надо приобрести шлейф-кабель или достаточно просто вставить стик в USB малины?
Кабель нужен, без него не прошить
можно и проводки припаять
Да, либо припаять напрямую к колодке на cc2531
Вот бы еще понять распиновку проводов напрямую к колодке на cc2531…
Распиновка аналогичная, добавил схему в статью
Спасибо. Но ведь можно тогда не паять, а соединить с помощью Dupont мама-мама? Для чего тогда вообще нужна эта дебаг плата с проводами?
Шаг контактов и сами контакты очень маленькие на cc2531. Дебаг плата как раз для этого и нужна, она является переходником на контакты нормального размера
Добрый вечер, уважаемый kvv.
Прошил координатор на базе СС2531. Все работает. Я использую Hass.io c add-on ZigBee2Mqtt
Решил добавить еще роутер СС2531. Прошивка router-cc2531-diag.hex от 04/02/2019 установилась нормально и прошла верификация. Однако спаривание координатора с маршрутизатором не происходит. Короткие быстрые мигания (один раз в секунду) горит красный светодиод, что означает что всетаки маршрутизатор пытается подключается к сети. Подскажите пожалуйста в чем может быть причина?
А пока буду пытаться ставить другую прошивку router-cc2531-diag-usb.hex и смотреть что же он шлет.
Здравствуйте, роутер прошивать не пробовал, поэтому по процедуре спаривания с координатором подсказать не могу. Откройте «проблему» в гитхабе zigbee2mqtt, там подскажут. Было бы интересно узнать, в чем была проблема. Если найдёте причину и будет минутка — напишите тут. Спасибо
Не совсем ясно как скачать прошивку в Raspberry
Любым удобным для вас способом. Самый простой — wget.
Добавил в статью.
Спасибо. Сейчас буду пробовать прошивать.
Как с прошивкой?
Прошил через Arduino nano, выше инструкция не работает(проблемы с wiringPi)
Что за проблема была? Можно подробнее?
При сопряжении устройства стик и малина, соответственно при отсутствие питания «000» а при включение «fff» пробовали и отделено 3.3v подавать, и на прямую с усб входа. Проверял таблицы соответствия, все совпадает как в инструкциях. Пробовал ставить разные версии wiringPi так так программа больше не поддерживается. Ешо пробовали подключать по плану «б» (где то в инструкциях есть описание), такой-же результат. Грешил на малинку, поменяли малину, такая-же проблемам.
After cloning the repo, edit CCDebugger.c , modify the line 177
А как её редактировать?
Любым редактором, тем же nano
а как найти этот CCDebugger.c и как редачить? хелп новичку
Первое, на что я бы подумал это неправильно скачался файл прошивки (из инета) или же бракованная память самого сс2531. На другой малине пробовали? Или хотя бы на этой же, но с другой флешкой… Если что пишите, интересно в чем причина
А что скажете про прошивку iobrokrer.zigbee? Там есть «обычная» (для прошивки через Дебаггер) и мод для прошивки через Ардуино, я пробовал обе, результат одинаковый, как у меня в посте… получаем: и т.д. Действительно надо какую-то модифицированную прошивку для Малины?
Прошивки по ссылке в статье прошиваются любыми способами, сама прошивка одна. С iobroker не знаком, может у них по другому. Если у вас не проходит верификацию, то либо файл косячный (попробовать перекачать заново или флешка на малине с ошибками, попробовать поменять флешку) либо у вас сс2531 бракованный. У меня из двух сс2531 один работает стабильно, другой может периодически отваливаться и ha его не видит. Они дешёвые, второй взять для тестов не так затратно.
Застрял на распаковке, не хочет распаковывать. Файл скачен, sudo пробовал, аппарат Pi 3B+. Распаковал и залил на гитхаб .bin и .hex файл, скачал на малину по отдельности те 2 файла, пробую прошиться и опять мимо. pi@raspberrypi:~/flash_cc2531 $ dir CC2531_DEFAULT_20190608.zip CCDebugger.c cc_erase.c cc_write Makefile cc_chipid CCDebugger.h cc_read cc_write.c README.md cc_chipid.c cc_erase cc_read.c LICENSE pi@raspberrypi:~/flash_cc2531 $ unzip CC2531_DEFAULT_20190608.zip Archive: CC2531_DEFAULT_20190608.zip End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive. unzip: cannot … Подробнее »
Важно! Этот метод подойдет только тем, у кого на руках уже прошитый стик (любой Z-Stack прошивкой). В этих прошивках имеется встроенный загрузчик.
Какие бывают прошивки?
Процесс обновления прошивки
- Для перепрошивки стика нам понадобиться SerialBootTool, скачиваем его с ti.con (официальный сайт Texas Instruments). Распаковываем и устанавливаем.
- Берем необходимую прошивку из предыдущего раздела.
Далее подключаем CC2531 в свободный USB порт компьютера, Windows сама установит необходимые драйвера.
Если процесс прошивки не начался, передергиваем стик и повторно нажимаем Load Image.
Вот собственно и все, я думаю это самый простой способ для того, чтобы обновить ПО вашего стика или же изменить его предназначение с координатора в роутер и наоборот.
Здравствуйте! Хочу прошить стик сс2531 под роутер, но по вашей ссылке выложены hex прошивки, которые в
SerialBootTool не шьются. Нужна bin прошивка. Под координатор есть. Подскажите, где можно взять под роутер?
Присоединяюсь к вопросу. Или подскажите куда копать, как правильно переконвертировать HEX в BIN ?
Статья фуфел, РОУТЕР ГДЕ?
Напишите что-то полезнее.
Пришлите, пожалуйста, на 44afad319c7b(собачка)mail(точка)ru
Для первичной прошивки
Z-Stack использовал 2 долларовую ESP32 (NodeMCU на основе CH340), как-то не внятно в проекте zigbee2mqtt, по видео китайца оказалось проще ) youtu.be/lgxIWimKf_4
Мы уже писали, как можно обновить прошивку на стике cc2531, если она на нем уже есть. А что делать, если стик уже приехал с того же Али? Прошивки на нем не будет. Данный способ подойдет всем, у кого есть:
-
с установленной на борту Linux системой.
- Четыре проводочка с коннекторами или без, зависит от вашей запасливости. Подойдет даже раздербаненная витая пара.
- Сам стик cc2531.
Если все по списку у вас есть - приступаем к прошивке.
Подготовка железной части
Для начала необходимо правильно подключить сам стик к малине. Самый простой способ, если нет проводов с коннекторами - берем витую пару, выдербаниваем из нее 4 проводочка. Затем берем малярный скотч, нарезаем на полоски и крутим из них трубочки для насадки на гребенку. Скрутить надо так, чтобы провод, вставленный в это поделие, плотно там держался.
У коллеги, который был более подготовлен в этом вопросе, вот так:
По схеме подключения. Учитывая вот эту распиновку на малине и на стике:
Соединяем проводами следующие выходы:
GPIO Raspbery PiGPIO CC2531GPIO19RSTGNDGNDGPIO16DCGPIO20CC
Не забудьте, что на стик надо будет подать питание через USB разъем, подготовьте его тоже заранее, чтобы ваша схема не развалилась в ответственный момент.
Программная часть
Для начала, подключаемся к малине по ssh и устанавливаем на нее пакет для работы с GPIO, если он у вас уже не поставлен, конечно же:
sudo apt-get install wiringpi
Затем качаем софт для прошивки стика:
И свежую прошивку на сам стик:
Теперь можем проверить правильность подключения проводов к стику. Для этого подключаем стик в любой USB порт с питанием, а на малине делаем следующее:
В выводе команды мы должны увидеть что-то вроде ID = b524. Если вы видите 0000 или ffff - проверьте схему подключения. Возможно, где-то перепутали провода или нет контакта. Если же все в порядке - приступаем к прошивке. Для этого выполняем последовательно следующие команды:
Сам процесс недолгий и займет около 3-5 минут.
После успешной прошивки, можете подключать свой стик к нужной системе умного дома и пользоваться им.
Читайте также: