Бездротові мережі ZigBee. Частина 1 [Вступна]

Введення
Зараз про концепції IoT («інтернету речей») говорять скрізь. З'являється «розумна» побутова техніка, яка може підключитися до мережі (Bluetooth/Wi-Fi) по бездротовому інтерфейсу і почати розсилати повідомлення про те, що завдання з прання/готуванні їжі/кип'ятіння води завершена і непогано б щось з цим зробити. Більшість таких «розумних» пристроїв отримує харчування безпосередньо з електромережі. Але як бути, якщо хочеться отримувати інформацію від бездротового термометра і при цьому не міняти батарейку кожну тиждень? Або мати бездротової вимикач з невеликим акумулятором для якого не знадобиться штробити стіни? І добре б об'єднати такі пристрої в єдину розподілену мережу, якою можна керувати віддалено і яка сама, грунтуючись на показаннях датчиків/сповіщувачів/лічильників, могла б приймати якісь рішення.

Спеціально для вирішення таких завдань була створена бездротова технологія ZigBee, про яку ми і почнемо розмову.


Мережеві технології для бездротового зв'язку
Існує велика кількість бездротових технологій, кожна з яких має свої особливості.

Порівняльна таблиця популярних бездротових технологій


  1. Технологія Wi-Fi
    Технологія Wi-Fi створювалася в якості заміни проводового інтерфейсу Ethernet. Тому ця технологія пропонує великі швидкості передачі даних, але не дозволяє розробляти вузли, які працюють тривалий час від джерел живлення малої ємності через великого енергоспоживання.
  2. Технологія Bluetooth
    Технологія Bluetooth з появою стандарту 4.0 (Bluetooth Smart або Bluetooth Low Energy) стала набагато привабливіше для розробників носимой електроніки, так як енергоспоживання в порівнянні з попередніми версіями скоротилося в рази[1]. Але якщо стоїть завдання побудови бездротової малопотребляющей системи, яка буде охоплювати кілька кімнат або навіть будівель, ця технологія не підійде, так як підтримується тільки мережева топологія «зірка». Це ж справедливо і для Wi-Fi.
  3. Технологія ZigBee і Thread
    Технології ZigBee і Thread спочатку розроблялися для створення надійних розподілених мереж датчиків і керуючих пристроїв з невисокими швидкостями передачі даних. В цих технологіях реалізована підтримка мережевої топології «mesh», сплячих і мобільних вузлів, а також вузлів, які забезпечують роботу алгоритмів ретрансляції і самовідновлення. В таблиці вказана швидкість 250 кбіт/с — це максимальна пропускна здатність мережі. Корисна швидкість буде близько 30-40 кбіт/с в межах сусідніх вузлів і 5-25 кбит/с при використанні ретрансляції. Основна відмінність технології Thread від ZigBee, що в ній додана підтримка IP-протоколу, що спрощує інтеграцію мереж Thread з мережевими додатками. Про особливості технології Thread ми поговоримо іншим разом.


Порівняння мережних топологій
Про підтримувані мережні топології в попередньому розділі було сказано, але не було сказано про особливості. Розглянемо такий приклад:
«Зірка» vs. «Mesh»

В мережах Bluetooth і Wi-Fi мережеве взаємодія відбувається через центральний шлюз. І якщо він вийде з ладу, то обмін даними стане неможливим.
Крім цього окремі вузли можуть залишитися без зв'язку, якщо несподівано виникла перешкода на шляху проходження сигналу.

У мережах ZigBee і Thread надійність зв'язку підвищується за рахунок наявності надлишкових зв'язків між пристроями. Всі пристрої, які не йдуть в сплячий режим, виконують роль роутерів, які відповідальні за маршрутизацію мережевого трафіку, вибору оптимального маршруту слідування та ретрансляції пакетів. Навіть якщо з ладу вийде пристрій, яке виступало в якості організатора мережі ZigBee-мережа продовжить функціонувати далі. Виникнення перешкоди або перешкоди, а також вихід якого-небудь з роутерів з ладу не є критичним за рахунок наявності надлишкових зв'язків. Тому з введенням додаткових вузлів, які мають стаціонарне харчування і можуть виконувати завдання роутера, мережа стає надійніше.




Типова структура мережі ZigBee
Тепер зупинимося на структурі самої мережі ZigBee і типах пристроїв, які в ній можуть бути.
Типова структура мережі ZigBee

Координатор — це вузол, який організував мережу. Саме він вибирає політику безпеки мережі, дозволяє або забороняє підключення до мережі нових пристроїв, а також при наявності перешкод в радіоефірі ініціює процес переведення всіх пристроїв в мережі на інший частотний канал.
Роутер — це вузол, що має стаціонарне харчування і отже може постійно брати участь у роботі мережі. Координатор також є роутером. На вузлах цього типу лежить відповідальність за маршрутизації мережевого трафіку. Роутери постійно підтримують спеціальні таблиці маршрутизації, які використовуються для прокладання оптимального маршруту і пошуку нового, якщо раптом який-небудь пристрій вийшло з ладу. Наприклад, роутерами в мережі ZigBee можуть бути розумні розетки, блоки керування освітлювальними приладами або будь-яке інше пристрій, що має підключення до мережі електроживлення.
Кінцеве пристрій — це пристрій, що підключаються до мережі через батьківський вузол – роутер або координатор і не бере участь в маршрутизації трафіку. Все спілкування з мережею для них обмежується передачею пакетів на «батьківський вузол або зчитуванням даних, що надійшли з нього ж. «Батьком» для таких пристроїв може бути будь-роутер або координатор. Кінцеві пристрої більшу частину часу знаходяться в сплячому режимі і відправляють керуючий або інформаційне повідомлення зазвичай тільки за певної події (натискання кнопки вимикача, відкриття вікна або двері). Це дозволяє їм довго зберігати енергію вбудованого джерела живлення. Прикладом кінцевих пристроїв в мережах ZigBee можуть бути бездротові вимикачі, керуючі роботою світильників і працюють від батарейок, датчики протікання води, датчики відкриття/закриття дверей. Варто сказати, що кінцеві пристрої діляться на 3 категорії, кожна з яких має свої особливості, але про них в наступній частині.

Так як кінцеві пристрої більшу частину часу знаходяться в сплячому режимі і прокидаються лише для опитування батьківського сайту на наявність повідомлень для себе, або для передачі даних, то це дозволяє економно витрачати енергію батареечного джерела живлення. Досвідчені вимірювання енергоспоживання для сплячого кінцевого пристрою на базі модуля ETRX357, про який трохи пізніше, в різних режимах роботи:
Схема включення для вимірювання струму споживання
Харчування для модуля подавалося через резистор R1 з номіналом 10 Ом. Два щупа осцилографа були підключені до і після резистора. Після чого з допомогою функції віднімання на осцилографі фіксувалося падіння напруги на резисторі. Після цього, використовуючи закон Ома , можна обчислити струм споживання. Крім того, так як час в активному режимі фіксується, можна знайти заряд, а вже потім і витрачається потужність у Джоулях.
Передача зашифрованого пакета довжиною 27 байт
Цикл передачі займає 7,5 мс, споживана енергія при напрузі живлення 3.3 В — 444,2 мкДж.
Звичайна алкалінова батарейка має запас потужності ~10.8 кДж. Цієї енергії вистачить на відправку 24 мільйонів таких запитів. Якщо сплячий вузол буде посилати таке повідомлення разів в 10 секунд, то це буде 8640 запитів на добу. Тобто теоретично, якщо не враховувати старіння батарейки, її енергії вистачить на ~2700 днів = 7 років.
Опитування батьківського вузлаУ цьому режимі сплячий пристрій запитує свій батьківський вузол на предмет наявності вхідного повідомлення. Якщо його немає, то сплячий вузол переходить в режим енергозбереження.

Цикл передачі займає 3,2 мс, споживана енергія при напрузі живлення 3.3 В — 184 мкДж.
Звичайна алкалінова батарейка має запас потужності ~10.8 кДж. Цієї енергії вистачить на відправку 60 мільйонів таких запитів. Якщо сплячий вузол буде посилати такий запит раз в 10 секунд, то це буде 8640 запитів на добу. Тобто теоретично, якщо не враховувати старіння батарейки, її енергії вистачить на ~6940 днів = 19 років.


Розробка стандартних ZigBee-пристроїв
«Добре, – подумає читач. – ще один закритий протокол з підтримкою mesh-топології. Цим вже нікого не здивуєш». Однак, альянсом ZigBee за всі ті роки, що існує технологія ZigBee, була проведена велика робота по стандартизації не тільки мережевого рівня, але і рівня додатки розроблюваних пристроїв[2]. Є велика бібліотека кластерів ZigBee (ZCL), що описує понад 200 пристроїв, таких як вимикачі, блоки управління освітленням, інтерфейс для підключення датчиків, лічильників та багато іншого[3]. І для деяких типів систем (системи домашньої автоматизації, системи збору показань з лічильників та ін) розроблені спеціальні профілі, в які входить цілий набір стандартних пристроїв. Вони дозволяють бездротових вузлів різних виробників розуміти один одного на рівні програми. Стандартний профіль описує стандартні команди і поведінки конкретного пристрою, наприклад, блоку управління системою клімат-контролю або блоку управління світильником.
За що відповідають різні рівні мережевої моделі OSI
Приклад взаємодії пристроїв зі стандартним профілем
Приклад того, як може бути реалізована система управління освітленням з використанням стандартної бібліотеки кластерів. Подробиці ми розберемо в інший раз, а зараз достатньо зрозуміти наступне:
  • лампочки є набір збережених атрибутів (стан " увімкнено/вимкнено; рівень яскравості)
  • вимикач може відправляти команди для зміни доступних атрибутів лампочки
  • при отриманні команди, лампочка приймає зазначене стан
У бібліотеці кластерів вказується, які атрибути і команди є обов'язковими для тих або інших пристроїв, а які опціональними. Це дозволяє реалізувати стандартний інтерфейс взаємодії між ZigBee-пристрої.


З чого почати?
Радіомодуль
Для швидкого старту, коли немає бажання або можливості розбиратися з програмним стеком ZigBee, варто звернути увагу на модулі ETRX357. Всі модулі мають вбудовану прошивку від виробника, яка дозволяє працювати з аналогової і цифрової периферією, а також з мережевими функціями, з допомогою набору AT-команд. Для початку роботи з радіомодулем досить підключити лінії живлення і лінії TxD і RxD послідовного інтерфейсу UART.


Приклад AT-команд








Команда Опис AT+PANSCAN Запуск сканування на наявність ZigBee-мереж AT+EN Створити мережу AT+JN Приєднатися до мережі AT+DASSL Залишити мережа AT+DASSR Запит віддаленого вузла на вихід з мережі ATSXX? Читання вмісту регістра SXX

У стандартну прошивку входить також ряд функцій, які можуть викликатися по перериванню від порту вводу/виводу, таймера/лічильника або при певних подіях – підключення до мережі або ініціалізація радіомодуля. Приклад доступних функцій:
  • Перемикання стану порту введення/виводу
  • Надсилання інформації на вузол збору даних про стан 16 цифрових висновків радіомодуля, оцифрованих даних від підключених датчиків і інформацію про рівень напруги живлення
  • Перехід в активний режим або режим енергозбереження
  • Відкриття «прозорого каналу» з іншим пристроєм в мережі
Кілька слів про «прозорому каналі». При переході в даний режим вся інформація, що надходить по інтерфейсу UART на радіомодуль транслюється на інтерфейс UART іншого радіомодуля. Цей канал є двонаправленим, а також успадковує переваги технології ZigBee – при наявності роутерів в мережі не буде відбуватися втрати даних в такому каналі зв'язку так як всі пакети «прозорого каналу» будуть в разі необхідності автоматично ретранслюватися. За рахунок цього можна організувати канал зв'язку з граничною дальністю в кілька кілометрів.


Програмна реалізація стека ZigBee

Якщо стандартних можливостей прошивки не вистачає, то можна використовувати реалізацію програмного стека ZigBee від компанії Silicon Labs – Ember ZNet PRO. Так як модулі виконані на базі мікросхеми EM357, то перехід від стандартної прошивки до розробки власної програми потребує лише придбання програматора-налагоджувача ISA3 з допомогою якого можна робити як внутрисхемную налагодження пристрою, так і налагоджувати додаток на мережному рівні.
Праворуч на малюнку показаний приклад того, як відображаються дані про шляху проходження пакету і його розшифровка.

Для спрощення процесу створення програми надається компонувальник додатків, який для обраної конфігурації ZigBee-пристрої генерує каркас додатка і створює функції, в яких розробник повинен дописати необхідну логіку програми.
Всі утиліти входять у програмний пакет Simplicity Studio, куди також входить демонстраційна версія стека Ember ZNet PRO. Тому можна прямо зараз скачати і подивитися, як це працює.
Інструкція для початку роботи з генератором додатківПісля того, як ви завантажили і встановили пакет Simplicity Studio, перевірте, чи встановлено Wireless-розширення.

Нас цікавить пакет Wireless Products

Виберіть утиліту Application Builder

Далі вибираємо фреймворк. Для ZigBee-додатків це буде ZCL Application Framework v2. Важливо: необхідно встановити галочку для відображення демонстраційних вбудованих стеків.

Вибираємо Internal Stack

Після цього можна почати працювати або з порожнім додатком, або вибрати зі списку готових додатків яке-небудь і вивчити його структуру.

Інструкція для початку роботи з аналізатором мережевого трафікуПісля того, як ви завантажили і встановили пакет Simplicity Studio, перевірте, чи встановлено Wireless-розширення.

Нас цікавить пакет Wireless Products

Після цього можна зайти в утиліту Network Analyzer і вибрати будь-яку доступну демонстраційну запис мережевої активності.


Результат



Висновок
Сподіваюся, що ця стаття допомогла зрозуміти, основні особливості бездротової технології ZigBee і ви зможете прикинути в яких додатках можна її використовувати. Сама технологія є повністю відкритою та всі її специфікації доступні для скачування з сайту альянсу ZigBee. А стандартна бібліотека кластерів це справжній мову взаємодії між пристроями, які оточують нас кожен день: пристрої домашньої автоматизації, системи безпеки, сенсорне обладнання та багато іншого.
P. S. Для тих, хто не зміг осилити текст, є можливість подивитися вступні відео технології ZigBee.
Зміст
Список використаної літератури
  1. Стаття з Вікіпедії – Bluetooth Low Energy

  2. Опис стандартизації рівня додатків на сайті альянсу ZigBee
  3. ZigBee Cluster Library
  4. Технічний опис модуля ETRX357
  5. Список AT-команд модуля ETRX357


Що ви хотіли б побачити в наступній статті?

/>
/>


<input type=«checkbox» id=«vv72705»
class=«checkbox js-field-data»
name=«variant[]»
value=«72705» />
Подробиці по роботі з модулями ETRX357
<input type=«checkbox» id=«vv72707»
class=«checkbox js-field-data»
name=«variant[]»
value=«72707» />
Робота з програмним стеком ZigBee (Ember ZNet PRO)
<input type=«checkbox» id=«vv72709»
class=«checkbox js-field-data»
name=«variant[]»
value=«72709» />
Інше (напишіть в коментарях)

Проголосувало 15 осіб. Утрималося-3 людини.


Тільки зареєстровані користувачі можуть брати участь в опитуванні. Увійдіть, будь ласка.


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.