Также, Texas Instruments предоставляет на бесплатной основе стек протоколов Z-Stack, который совместим с ZigBee и который используется в CC2530.
Вначале, я вкратце объясню что такое сенсорные сети, ZigBee и прочие непонятные вещи.
Сенсорная сеть - распределенная, беспроводная и самоорганизующаяся сеть для передачи и обработки информации. Выход из строя одного из узлов или даже одного из маршрутизаторов не влияет на работоспособность сети - оконечные устройства могут сами подключиться к работающему маршрутизатору, взамен упавшего.
Физический и канальный уровни для подобных сетей описываются в стандарте IEEE 802.15.4, тогда как остальные уровни описываются в ZigBee - стеке протоколов высокого уровня.
Устройства в сенсорной сети делятся на три типа:
- Главный маршрутизатор (FFD - Fully Function Device) - главное устройство, с которого начинает расти сеть. Также, может использоваться для передачи собранных данных "на сторону", например в обычный компьютер пользователя.
- Вспомогательные маршрутизаторы (тоже FFD) - тут все понятно. Эти устройства могут подключаться к главному маршрутизатору и друг к другу и обеспечивать доставку сообщений от отправителя к получателю.
- Оконечное устройство (RFD - Reduced Function Device) - эта железяка обеспечивает сбор нужной информации и отправку ее получателю через сенсорную сеть. Оконечное устройство подключается к маршрутизатору для передачи данных и не может выполнять функции маршрутизатора.
Сам ZDK поставляется в аккуратном пластмассовом кейсе:
Внутри есть папка с документацией и два отделения с платами, антеннами и прочим, что впоследствии будет объединено в сенсорную сеть:
Радиоинтерфейс работает на частоте 2.4 ГГц, поэтому антенны модулей сети крайне миниатюрны. Впрочем связь достаточно дальнобойна (по сравнению с Bluetooth'ом) - в условиях исторического здания на Васильевском острове связь терялась, когда оконечные устройства были на 1-1,5 этажа выше/ниже своего маршрутизатора. В условиях прямой видимости связь была стабильна на расстоянии 15-20 метров.
Сами радиомодули также не выделяются своими размерами:
Всего таких антенн и модулей семь - по числу устройств: 2 маршрутизатора и 5 оконечных устройств. Перед началом работы нужно соединить все антенны и модули вместе и пристыковать их к элементам сети - то еще занятие: будет особенно интересно тем, кто в детстве не наигрался с конструктором.
Маршрутизатор (рядом для сравнения лежит нож Victorinox Outrider):
Оконечное устройство (способно мерять температуру, имеет пару кнопок, джойстик и набор светодиодов):
Каждая плата имеет отсек для двух батареек AA. Для маршрутизаторов вроде как предусмотрено питание от сети или от USB.
Устройства в сборе выглядят вот так:
После включения (все дальнейшие этапы описаны в прилагаемой к ZDK документации инициализируем главный маршрутизатор (подключен к ноутбуку) и подключим к нему второй маршрутизатор и пару оконечных устройств. Замечу, что несмотря на наличие в системе второго маршрутизатора, все устройства все равно подключаются к главному.
Теперь запретим новым устройствам подключаться к главному маршрутизатору (джойстик влево на плате маршрутизатора). Теперь оставшиеся три устройства подключаются ко второму маршрутизатору (синий на схеме):
Проведем небольшой эксперимент - отключим вторичный маршрутизатор и посмотрим как поведут себя устройства, подключенные к нему.
Устройства, подключенные к вторичному маршрутизатору больше не моргают на схеме, впрочем как и сам маршрутизатор. Зато к главному, несмотря на запрет новых устройств, подключились, оставшиеся без своего маршрутизатора, три оконечных устройства. Объясняется подобное поведение довольно просто - мы запретили принимать подключения от новых устройств, но подключения от устройств уже находящихся в сети мы не запрещали.
Через некоторое время, "мертвый" маршрутизатор и устройства, подключенные к нему, исчезнут со схемы:
Далее, у меня в планах портировать на SDK2.0 какую-нибудь маленькую ОС (наподобие FreeRTOS), стек протоколов Z-Stack и заставить SDK подключаться к главному маршрутизатору и общаться с ним.