Вопрос:
EFR32: Как создать приложение на базе новых микрокотроллеров EFR32 для работы в одной беспроводной сети с популярными ZigBee-модулями ETRX357?
Ответ:
Для того чтобы устройства ZigBee могли объединиться в одну беспроводную сеть, у них должны быть одинаково заданы следующие параметры:
1) На уровне прошивки:
· Сетевой профиль стека («Stack Profile»);
· Уровень безопасности;
2) На уровне пользователя:
· Ключ шифрования «Link Key»;
· Идентификаторы сети: PAN ID, Extended PAN ID;
· Частотный канал;
У модулей ETRX357 параметр «Stack Profile» имеет значение «ZigBee PRO».
Профиль стека и уровень безопасности модулей EFR32 могут быть разными, но в реальных проектах чаще всего используется режим, при котором сетевой ключ передается присоединяющимся устройствам в зашифрованном с помощью Link-ключа виде.
Такой же уровень безопасности используется в профиле «Home Automation». Поэтому, в качестве основы проекта на базе EFR32, предназначенного для совместной работы с ZigBee-модулями ETRX357, можно использовать профиль «Home Automation».
Создайте в Simplicity Studio новый ZigBee проект на базе генератора Application Builder. При этом на вкладке «Znet Stack», в качестве «Security Type» выберите профиль «Home Automation Security».

Рисунок 1 – Настройка профиля стека в Application Builder.
Задайте конфигурационные настройки, необходимые для вашего проекта, на других вкладках Application Builder. В частности, укажите тип загрузчика, укажите роль устройства в сети, включите/отключите необходимые в вашем проекте плагины. Если у вашего устройства имеется последовательный интерфейс, то очень полезно подключить плагин, реализующий интерфейс командной строки (CLI).
Сгенерируйте каркас вашего приложения при помощи кнопки «Generate».
Теперь необходимо решить, каким образом ключ шифрования «Link Key» будет записываться в постоянную память проектируемых устройств на базе EFR32. Для простейшей проверки возможности объединения в одну сеть с модулями ETRX357, «Link Key» можно задать еще до компиляции проекта в файле security-config.h. В реальных проектах необходимо создать механизм, который позволил бы пользователю менять Link-ключ, не выполняя каждый раз компиляцию проекта. Для этого, например, можно воспользоваться командой интерфейса CLI changekey link <key> , где <key> – выбранный вами 16-битный ключ шифрования.
Рассмотрим процесс объединения в одну сеть устройств на базе EFR32 и устройств на базе модулей ETRX357 для двух случаев.
Если координатором является модуль EFR32:
На стороне EFR32:
· С помощью интерфейса CLI задать ключ шифрования «Link Key», для этого выполнить команду changekey link <key>. Также задать ключ шифрования можно непосредственно в файле проекта security-config.h;
· Создать сеть с помощью команды CLI network form <ch_num> <power> <PAN_ID>, где <ch_num> – номер канала; <power> – мощность передачи сигнала в дБм; <PAN_ID> – короткий идентификатор сети; Также для создания сети можно использовать плагин «network creating», если он подключен в вашем проекте;
· Разрешить модулю EFR32 подключение устройств, выполнив команду CLI network pjoin <time>, где <time> – время в секундах, в течение которого разрешено присоединение;
На стороне ETRX357:
· Указать выбранный ключ «Link Key» в регистре S09 модуля Telegesis ETRX357;
· Настроить тип конечного устройства, а также, использование предустановленного «Link Key», записав нужное значение в регистр S0A модуля ETRX357;
· При необходимости указать номер канала и идентификатор сети в регистрах S00 и S02 соответственно;
· Подключить модуль Telegesis к созданной сети, выполнив команду AT+JN;
Если координатором является модуль ETRX357:
На стороне ETRX357:
· Задать ключ шифрования «Link Key» в регистре S09 модуля Telegesis ETRX357;
· Настроить модуль Telegesis как координатор, а также, задать тип безопасности, записав значение «4114» в регистр S0A модуля;
· При необходимости указать номер канала и идентификатор сети в регистрах S00 и S02 соответственно;
· Создать сеть, выполнив команду AT+EN;
На стороне EFR32:
· Записать выбранный ключ «Link Key» в память модуля EFR32. Для этого выполнить команду CLI changekey link , либо записать ключ в файл проекта security-config.h;
· Подключиться к выбранной сети использую команду CLI network join er> , либо, используя плагин «network steering», если он подключен в вашем проекте;