Знакомство с ZigBee.

Пришла пора, для меня, знакомится с ZigBee. Это то чего я боялся больше всего. Ибо придется выучить и прочитать ну очень очень много. Говорю сразу ZigBee это очень сложно.

Все картинки взяты с официального сайта Ti.



Что есть ZigBee я думаю всем и так понятно.

После поверхностного чтения документации становиться ясно, что ZigBee сеть может состоять из трех видов ролей (это терминология Ti, роль — это тип ZigBee устройства).

Сoordinator — это тот кто управляет сетью. Именно это устройство самое главное. Но его наличие в ZigBee сети необязательно.
Router — именно роутеры и организуют ZigBee сеть. Они берут на себя самую сложную часть работы. Вот они и являются самой сложной частью в разработке. Наличие их в сети обязательно. Собственно вся сеть может состоять только из одних роутеров.
End point — Это конечное устройство. То чем и предполагается управлять или получать данные. Наличие их не обязательно. Т.к. с этой ролью запросто справиться любой роутер.

Есть еще не основные роли, но они особого интереса не представляют ибо специфичны и редко используются.

Итак уже понятно, что через Сoordinator данные поступаю на сервер. А также сервер может отправлять данные через роль Сoordinator. Router это рабочие пчелки которые строят и поддерживают работу сети. Router могут быть и рабочими как End point. Также Router может превратиться в роль Сoordinator. Одним словом Router — это как стволовая клетка и может быть чем угодно.

ЗАМЕЧАНИЕ: Роутером может быть только и только CC2530F256. Т.к. либа для роутера в Z-Stack весит ~160 Кбайт. У CC2530 есть версии 32/64/128/256 Кбайт.

Для начала работы нам потребуется:
— CC-DEBUGGER. Стоит 49$.


— CC2530ZNP Mini Kit или, что нить по круче. Стоит 99$. Кстати при покупке мы в придачу получаем мини программатор/дебаггер для микроконтроллеров MSP430.



Состоит из одного такого модуля.



И двух таких.

А по факту мы получаем три идентичных ZigBee модуля (очень маленьких, они действительно очень маленькие), два батарейных отсека и миниатюрный USB программатор.



Этот модуль довольно крохотный. К тому-же у него на задней стороне еще один микроконтроллер MSP430F2274!

ЗАМЕЧАНИЕ : Ti очень часто упоминает, что эти модули можно использовать только для обучения и в ознакомительных целях. В законченных устройствах использовать нельзя. Основной причиной запрета прямых продаж в СНГ стало то, что у нас их использовали не по прямому назначению (это сказала ихняя служба поддержки). Кто-то знает почему они так переживают по этому поводу?

— CC2531EMK это сниффер. Ti настоятельно рекомендует его купить. Заверяют, что он сильно поможет. Стоит 49$.



Это вообще миниатюрный свисток. Можно использовать в роли дополнительного модуля.

Итого для старта нужно 197$.

Из софта нам понадобиться:
— IAR MCS51;
— IAR MSP430;
Z-Stack;
SmartRF Studio;
SmartRF Flash Programmer;
SmartRF Protocol Packet Sniffer;
— ZigBee Sensor Monitor (скачиваем из раздела CC2530ZNP). Это пример высокоуровневого ПО.
— Setup_CC2530ZNP_Mini_Kit_SW_1.0.1 (скачиваем из раздела CC2530ZNP). Это примеры прошивок для сетевого процессора.
— Setup CC2530ZNP MK Sensor Monitor Network Application (скачиваем из раздела CC2530ZNP). Это пример прошивки для демо проекта.

Со снифером я пока-что еще не разобрался. У него много всевозможных крутилок. Отловленные пакеты показаны довольно красиво и удобно. Понятно, что он предоставляет полезную информацию, но еще предстоит много прочесть много апнотов чтоб понять, что именно полезного он показывает и как выставить нужные фильтры.
Работает прямо со старта. Вставил, винда нашла дрова и готово.

CC2530ZNP Mini Kit довольно крутой и продуманный набор. Но недостатков у него куча. Во первых мы получаем сразу три модуля которые можно юзать как:
— SoC CC2530;
— SoC CC2530 и дополнительный внешний микроконтроллер;
— сетевой процессор под управлением MSP430.

Используя всего один набор можно опробовать сразу все режимы. Функциональность и продуманность довольно высокая. Также есть токовый шунт для оценки энергопотребления.

Но:
— все датчики, светодиоды и кнопка подключены к MPS430. Небольшое неудобство.
— MPS430 нужно программировать через USB свисток. Тоже немного не удобно.
— модули не отшлифованы. Надфилек все исправит.
— по дефолту стоит довольно нудный проект. Который только и делает, что в COM-порт шлет фигню. Проект Sensor Monitor намного веселее. Но для него нужно переставлять прошивки.

Режим сетевого процессора — это когда Ti нам предоставляет готовую прошивку для CC2530 и SoC CC2530 превращается в трансивер с высокоуровневыми API. Мы можем также дописать свои API.
Управление таким процессором осуществляется через UART/SPI/USB. При этом мы не теряем функциональность и не нужно лезть в дебри ZigBee. Так можно очень быстро организовать сеть любой сложности выучив всего лишь небольшой апнотик с описанием API функций. Но это не наш метод =) Да и в этом случае нужно использовать внешний микроконтроллер.

Решил я минуя апноты открыть пример роли Router. Открываю проект в IAR ииии первая же мысль «Твою ж мать!!» и закрыл. Перед глазами сразу возникает огромный проект с кучей непонятных файлов и очень много исходного кода. И это всего лишь простенькое дэмо =) Решил я закрыть это грешное дело и преступить к чтению апнотов. Это сейчас я и делаю.

Чую голос темной стороны я. Велит он открыть апнот по сетевому процессору.

Немного критики

Ti — это не корпорация добра, а скорее наоборот. Она по круче чем Microsoft стремиться подсадить на свою иглу. И это хорошо у нее получается.

SoC CC2530 — оптимизирован для работы с ZigBee в нем есть специальные мнемоники ускоряющие работу трансивера. Описание содержится в «CC253x System-on-Chip Solution for 2.4-GHz IEEE 802.15.4 and ZigBee® Applications». Это основной апнот который нужно зачитать до дыр. Но ZigBee трансивер описан не полностью. Важные моменты скрыты. Поэтому даже не надейтесь увидеть когданить опенсорс стэк. (Кстати BLE трансивер и вовсе фактически нигде не описан).

Z-Stack является одним из самых лучших. Предоставляется в виде бинарной либы и хеадеров. Это дает нам:
— часть ОС OSAL находиться в этой библиотеке. OSAL — это кооперативка от Ti. Поэтому мы обречены использовать OSAL всегда. В ролях End Point это даже хорошо. Но в роли Router это много неготива. Для больших проектов намного лучше подходить RTOS. Масштабировать проект имея на руках только простершую кооперативку это сущий ад.
— некоторые прерывания находятся в либе. Их даже не смеем трогать!
— некоторые библиотечные функции могут требовать очень много процессорного времени. Так, что в проектах где важна скорость реакции в качестве основы не используем CC2530!
— благодаря либе предсказать размер прошивки почти невозможно. Допустим у нас размер прошивки 50 Кбайт. Добавили использование еще одной функции и размер уже вырос до 100 Кбайт. Во всех новых проектах используем CC2530F256 а уже потом меняем на нужную версию. Они все pin2pin совместимы.

В генераторе случайных чисел нашли закономерность. Если взломщик знает, что AES ключ сгенерен им, то он с легкостью составит список наиболее вероятных ключей. А дальше взломает шифр брутфорсом. Если требуется действительно защищенный канал, то нужно подмешивать дополнительные переменные.

PS: Буду выкладывать только куски кода. Проект коммерческий.
  • +3
  • 20 августа 2012, 07:16
  • a9d

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

RSS свернуть / развернуть
[Deleted]
Ели дочитал. Начал было писать отдельные замечания, но бросил. Замечание только одно «изложение ужасное». В ходе прочтения поста отпало все желание знакомства с ZigBee. Одним словом «трындец», прям как я излагаю свои мысли.
+1
интересная штуковина… год лежит-пылится, руки не доходят поработать с ней…
0
  • avatar
  • kalik
  • 20 августа 2012, 10:31
Теперь и я что-то ссусь c Зигби связываться :D
+3
  • avatar
  • hexus
  • 20 августа 2012, 10:37
Посмотрите в сторону Jennic. Модули, вроде как и копеечку стоят, но программатор — это USB-to-UART на базе FT232, который дома склепать не составит труда. Чоень простой в кодировании, и все служебные операции в сети делает сам. А ты только колбеками некоторыми рулишь.

Удобно очень. Эти модули вернули мне веру в ЗигБии))) которую однажды Тексас безжалостно напотал на свой каток )))
0
Пардоньте за очепятки. «Слепой набор» (всмысле, не глядя на монитор), такой «слепой набор» (-:
+2
Та же фигня :)
0
а там программировать не нужно?
0
Нужно. Есть набор АПИ для работы со всеми частями встроенного МК. Но я пользую их стек JenNet. Он себе крутиться, а мне предоставляет набор колбэков (настройка, инициализация, реакция на события в сети или на работу периферии), в которые я вписываю свою программу.
Могу регистрировать дополнительные колбеки для прерываний периферии.

В итоге получается, что то, что я допрограммровал — есть неким дополнением к основной задаче МК (крутить стек).

Но и с таким дополнением — руки развязаны. делай что хочешь.

Для последнего контроллера JN5148 прога пишеться в Eclipse (на сайте все необходимое есть для настройки). Для JN5139 — CodeBlocks.
0
Так тоже делает и Ti. Но у них это не колбеки а задачи в кооперативке.

Прошивку я тоже пишу в эклипсе. Собираю и отлаживаю в IAR.
0
Кстати а это правда, что Jennic есть аппаратная поддержка ToF ?? В Ti говорят, что ее там нет и никогда не было.
0
Да, есть, но я с ним не заморачивался. Пока что. И есть подозрения, что в их стек JenNet, Child, выбирая парента смотрит и на ТоФ и на LQI.
0
1. Из статьи не понял, зачем нужен отдельный дебагер?
2. Теперь я рад, что когда писал диплом, выбрал CC110L, а не ZigBee, хотя была такая мысль…
3. TI да, подсаживает на свои продукты! После ADC3 и ряда мелких раздач, я уже в каждый проект пытаюсь присобачить MSP430, даже там, где некогда любимый AVR подошел бы гораздо лучше!
0
Я работал с ZNP в общем довольно надежная вешь. Хоть и со свими глючками была. Но в новых версиях все понемногу исправляют. Сложного вроде ничего нет. Несмотря на огромный размер кода и кучи непонятных файлов. Все основано на какой-то своей ОС. В нее и предлагается встраивать свою прогу. Наиболее сложное как мне кажется это разобраться с инициализацией всего этого хозяйства. Но это возможно.
Но вообще говоря надо крепко подумать прежде чем вообще связываться с ZigBee. Протокол сложный и избыточный как все универсальное. В общем если нужен протокол для обмена своих устройств (наприер датчиков) и датчики привязанны к месту… то… Ведь адресация в ZigBee имеет право сама по себе менятся… А занчит поверх адресов в ZigBee надо будет свои адреса накладывать. С квитированием там тоже не все ясно. Рекомендую посмотреть на Симплисти. На этих микросхемах поднимается и в разы проще.
Ну и мое личное мнение ZigBee не очень подходит для индустриальных приложений.
0
у ZigBee очень высокая надежность. С помощью Симплисти объединить пару сотен базовых станций и дохрена конечных точек будет гемор еще тот.
0
Я думаю что с помощью ZIgBee будет тоже самое. По крайней мере с Эмберовским стеком, не самым новым конечно, но геммор получили.
0
отладчик нужен чтоб прошивать сс2530. Это 51 ядро.
0
ааа, другое дело!
0
OSAL — это кооперативка от Ti
… а есть какая — нибудь инфа по ней, где можно скачать?
0
Она стачивается вместе с Z-Stack или BLE Stack. Там же все и апноты по ней.
0
Кто-то знает почему они так переживают по этому поводу?

На лончпаде тот же дисклаймер. Это все оттого, что у демо-наборов могут быть проблемы с EMI, они не тестируются на нормы готовой продукции.
0
  • avatar
  • _YS_
  • 24 августа 2012, 22:39
Недавно вышел новый open source стек ZBOSS. Он намного удобней и более логичный чем Z-Stack. Есть порт и под CC2530. Также занимает меньше места. Но он идет под двойной лицензией. Есть выбор. Либо делаете опенсосный проект полностью, либо платите за лицензию.
0
  • avatar
  • a9d
  • 22 ноября 2012, 21:09
Какая там опенсорс лицензия? И какие он протоколы поддерживает?
0
Gpl2 или их коммерческая. Протокол только PRO. По ощущениям намного удобней чем Z-Stack.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.