Знакомство с 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
Посмотрите в сторону Jennic. Модули, вроде как и копеечку стоят, но программатор — это USB-to-UART на базе FT232, который дома склепать не составит труда. Чоень простой в кодировании, и все служебные операции в сети делает сам. А ты только колбеками некоторыми рулишь.
Удобно очень. Эти модули вернули мне веру в ЗигБии))) которую однажды Тексас безжалостно напотал на свой каток )))
Удобно очень. Эти модули вернули мне веру в ЗигБии))) которую однажды Тексас безжалостно напотал на свой каток )))
Нужно. Есть набор АПИ для работы со всеми частями встроенного МК. Но я пользую их стек JenNet. Он себе крутиться, а мне предоставляет набор колбэков (настройка, инициализация, реакция на события в сети или на работу периферии), в которые я вписываю свою программу.
Могу регистрировать дополнительные колбеки для прерываний периферии.
В итоге получается, что то, что я допрограммровал — есть неким дополнением к основной задаче МК (крутить стек).
Но и с таким дополнением — руки развязаны. делай что хочешь.
Для последнего контроллера JN5148 прога пишеться в Eclipse (на сайте все необходимое есть для настройки). Для JN5139 — CodeBlocks.
Могу регистрировать дополнительные колбеки для прерываний периферии.
В итоге получается, что то, что я допрограммровал — есть неким дополнением к основной задаче МК (крутить стек).
Но и с таким дополнением — руки развязаны. делай что хочешь.
Для последнего контроллера JN5148 прога пишеться в Eclipse (на сайте все необходимое есть для настройки). Для JN5139 — CodeBlocks.
1. Из статьи не понял, зачем нужен отдельный дебагер?
2. Теперь я рад, что когда писал диплом, выбрал CC110L, а не ZigBee, хотя была такая мысль…
3. TI да, подсаживает на свои продукты! После ADC3 и ряда мелких раздач, я уже в каждый проект пытаюсь присобачить MSP430, даже там, где некогда любимый AVR подошел бы гораздо лучше!
2. Теперь я рад, что когда писал диплом, выбрал CC110L, а не ZigBee, хотя была такая мысль…
3. TI да, подсаживает на свои продукты! После ADC3 и ряда мелких раздач, я уже в каждый проект пытаюсь присобачить MSP430, даже там, где некогда любимый AVR подошел бы гораздо лучше!
Я работал с ZNP в общем довольно надежная вешь. Хоть и со свими глючками была. Но в новых версиях все понемногу исправляют. Сложного вроде ничего нет. Несмотря на огромный размер кода и кучи непонятных файлов. Все основано на какой-то своей ОС. В нее и предлагается встраивать свою прогу. Наиболее сложное как мне кажется это разобраться с инициализацией всего этого хозяйства. Но это возможно.
Но вообще говоря надо крепко подумать прежде чем вообще связываться с ZigBee. Протокол сложный и избыточный как все универсальное. В общем если нужен протокол для обмена своих устройств (наприер датчиков) и датчики привязанны к месту… то… Ведь адресация в ZigBee имеет право сама по себе менятся… А занчит поверх адресов в ZigBee надо будет свои адреса накладывать. С квитированием там тоже не все ясно. Рекомендую посмотреть на Симплисти. На этих микросхемах поднимается и в разы проще.
Ну и мое личное мнение ZigBee не очень подходит для индустриальных приложений.
Но вообще говоря надо крепко подумать прежде чем вообще связываться с ZigBee. Протокол сложный и избыточный как все универсальное. В общем если нужен протокол для обмена своих устройств (наприер датчиков) и датчики привязанны к месту… то… Ведь адресация в ZigBee имеет право сама по себе менятся… А занчит поверх адресов в ZigBee надо будет свои адреса накладывать. С квитированием там тоже не все ясно. Рекомендую посмотреть на Симплисти. На этих микросхемах поднимается и в разы проще.
Ну и мое личное мнение ZigBee не очень подходит для индустриальных приложений.
Комментарии (23)
RSS свернуть / развернуть