SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Ячеистые сети 6LOWPAN
на основе Contiki OS и
CC1310/СС2650: теория и
практика
Зайцев Владислав(vvzvlad), Unwired Devices
vvzvlad@gmail.com
Telegram: t.me/ru6lowpan
Что такое умный дом?
• Радио-система, не требующая прокладки проводов и ремонта
• Беспроводные выключатели на батарейках
• Датчики движения, присутствия, температуры, влажности,
освещенности
• Возможность создавать сложную логику управления
• Удаленное управление
Что такое автоматизированная система
управления наружным освещением (АСУНО)?
• Регулировка яркости каждого фонаря
• Расписание и удаленное управление
• Обратная связь — температура, мощность, сообщение об отказах
• Централизованная диспетчеризация
• Устройства рядом
• Быстрая реакция
• Есть устройства на батарейках
• Немного устройств в сети
Умный дом VS АСУНО
Fight!
• Устройства далеко
• Работа по расписанию
• Питание всегда есть
• Много устройств
Что внутри сети 6LoWPAN
• Application layer: Unwired Devices Binary Protocol
• Transport layer: UDP
• Network layer: IPv6, RPL
• Data link/network layer: 6LoWPAN 

(IPv6 over Low power Wireless Personal Area Networks), MAC
• Physical layer: IEEE 802.15.4 (868 МГц, 2400 МГц)
Чем сети 6lowpan отличаются от компьютерных
сетей?
• Скорость передачи мала (от 20 до 200 кбит/сек)
• MESH-сеть: много промежуточных устройств при передаче на
небольшие расстояния
• Устройства могут исчезать из сети: доставка (корректная работа
маршрута) не гарантируется
Передача данных в WiFi-сети
Роутер
Устройство
Устройство
Устройство
Устройство
Устройство
Устройство
Устройство
Передача данных в mesh-сети
Роутер
Устройство
Устройство
Устройство
Устройство
Устройство
Устройство
Устройство
Устройство
Перестройка маршрута при выпадении устройства из
сети
Роутер
Устройство
Устройство
Устройство
Устройство
Устройство
Устройство
Устройство
Устройство
Что внутри устройств 6lowpan
• Микроконтроллер и радио-передатчик (в нашем случае —
СС2650/СС1310)
• Contiki OS
• Сенсоры, датчики, актуаторы
• Неонка
Первая версия реле для "умного дома"
Микроконтроллер
Актуатор (реле)
Блок питания
Микроконтроллеры
TI СС1310
TI СС2650
Contiki OS
Главный разработчик: Adam Dunkels

Место разработки: Swedish Institute of Computer Science
Примечания: Характер твердый, нордический. Скрытна.
– Брет, какие специальности нам нужны больше всего?
Тринли пожал плечами.
– Очевидно. Программист-археолог.
Вернор Виндж, "Глубина в небе"
Программная археология — дисциплина, изучающая плохо
документированное или недокументированное ... программное
обеспечение, в целях его сопровождения.
Википедия
Кейс 1: Устройство с питанием от батарей
Проблема №1: Устройства в режиме ожидания потребляют 0.1мА и
больше.
Подробнее: Для экономии энергии устройства по-умолчанию
используют RDC (Radio Duty-Cycle), который экономичнее
постоянно включенного приемника. Но этого недостаточно.
Radio Duty-Cycle
Алгоритм, позволяющий снизить затраты энергии на прием сообщений:
частично или полностью синхронизированная активация приемника и чужих
передатчиков.
Отключаем Radio Duty-Cycle
• На устройствах с внешним питанием приемник постоянно активен
• На батарейных устройствах приемник всегда выключен, пока что-
то не потребуется послать
Устройства,
от которых
требуется
быстрая
реакция
Устройства,
работающие от
батарей
Минутка кода
core->contiki-default-conf.h:62
#define NETSTACK_CONF_RDC contikimac_driver
core->contiki-default-conf.h:62
#define NETSTACK_CONF_RDC nullrdc_driver
Минутка кода
Отключаем сетевую и радио-часть:
NETSTACK_MAC.off(0);
Включаем обратно
NETSTACK_MAC.on();
Отправляем
сообщение
координатору
Включаем
сеть и
радио
Отправляем
Дожидаемся
подтверждения
Выключаем
сеть и радио
Кейс 1: Устройство с питанием от батарей
Проблема №2: До батарейных устройств через некоторое время
перестают доходить подтверждения.
Подробнее: Без ответов ACK спящего устройства другие устройства
считают, что оно выключено и исключают его адрес из таблицы
маршрутизации
Таблица маршрутизации
После построения сети каждое устройство знает для каждого
другого устройства адрес соседа, через которое ему можно
передать сообщение
Минутка кода
core->net->rpl->rpl-conf.h:223
#define RPL_DEFAULT_LIFETIME 30
core->net->rpl->rpl-conf.h:214
#define RPL_DEFAULT_LIFETIME_UNIT 30
30 интервалов по 30 секунд
=
15 минут
core->net->rpl->rpl-conf.h:214
#define RPL_DEFAULT_LIFETIME_UNIT 60*60
10 интервалов по 3600 секунд
=
10 часов
core->net->rpl->rpl-conf.h:223
#define RPL_DEFAULT_LIFETIME 10
Кейс 2: Большая и протяженная сеть
Кейс 2: Большая и протяженная сеть
Проблема: В большой сети нельзя отправить сообщение некоторым
устройствам, хотя они могут отправлять сообщения координатору
Подробнее: Таблица маршрутизации не хранит больше 20 записей.
Координатор сети в ней присутствует всегда, а вот остальные
устройства — нет.
Z-wave
Координатор должен знать маршрут ДО отправления пакета устройству
6lowpan
Любое устройство хранит список маршрутов до всех устройство в его подсети
Минутка кода
platform->unwired->contiki-conf.h:231
#define UIP_CONF_MAX_ROUTES 20
platform->unwired->contiki-conf.h:231
#define UIP_CONF_MAX_ROUTES 130
Кейс 3: OTA-обновление
Проблема: Часто невозможно физически добраться до контроллера,
чтобы обновить его. Удаленное обновление не должно иметь
возможность сделать из устройства кирпич
Решение: Используем получение нового образа прошивки через
сеть, считаем контрольные суммы и используем флаг успешной
загрузки для бутлоадера
Бутлоадер
Бутлоадер курильщика Бутлоадер нормального человека
Программа
Стартовый адрес
Программа
Бутлоадер
Стартовый адрес
OTA: фаза 1, загрузка образа
Основная программа получает, записывает и проверяет контрольную сумму
образа во внешней памяти
Программа
Бутлоадер
Стартовый адрес Внешняя память
Золотой образ
Новый образ
Флаги
Внешняя память
OTA: фаза 2, запись образа
Бутлоадер запускается, видит установленный флаг обновления и записывает
образ из внешней памяти в основную, сбрасывает флаги обновления и запуска
Программа
Бутлоадер
Стартовый адрес Внешняя память
Золотой образ
Новый образ
Флаги
Внешняя память
OTA: фаза 3, проверка запуска
Бутлоадер передает управление новой программе, программа запускается и
проверяет, работает ли она корректно. Если да, устанавливает флаг запуска
Программа
Бутлоадер
Стартовый адрес Внешняя память
Золотой образ
Новый образ
Флаги
Внешняя память
Внешний
ресурс
OTA: фаза 4, восстановление
Если запуск неуспешен, то флаг запуска не устанавливается, и управление
передается бутлоадеру
Программа
Бутлоадер
Стартовый адрес Внешняя память
Золотой образ
Новый образ
Флаги
Внешняя память
Внешний
ресурс
Ячеистые сети 6LOWPAN
на основе Contiki OS и
CC1310/СС2650: теория и
практика
Зайцев Владислав(vvzvlad)
vvzvlad@gmail.com (пишите даже глупые вопросы)
Telegram: t.me/ru6lowpan (мы не кусаемся)
Unwired Devices (мы делаем железки)

http://unwireddevices.com/

Contenu connexe

Plus de Ontico

Plus de Ontico (20)

ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
 
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
 
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
 
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
 
Синхронизация данных из PgSQL в Tarantool / Вениамин Гвоздиков (Calltouch)
Синхронизация данных из PgSQL в Tarantool / Вениамин Гвоздиков (Calltouch)Синхронизация данных из PgSQL в Tarantool / Вениамин Гвоздиков (Calltouch)
Синхронизация данных из PgSQL в Tarantool / Вениамин Гвоздиков (Calltouch)
 
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
 

Строим mesh-сети 6LOWPAN на основе Contiki OS: теория и практика / Владислав Зайцев (Unwired Devices)

  • 1. Ячеистые сети 6LOWPAN на основе Contiki OS и CC1310/СС2650: теория и практика Зайцев Владислав(vvzvlad), Unwired Devices vvzvlad@gmail.com Telegram: t.me/ru6lowpan
  • 2. Что такое умный дом? • Радио-система, не требующая прокладки проводов и ремонта • Беспроводные выключатели на батарейках • Датчики движения, присутствия, температуры, влажности, освещенности • Возможность создавать сложную логику управления • Удаленное управление
  • 3. Что такое автоматизированная система управления наружным освещением (АСУНО)? • Регулировка яркости каждого фонаря • Расписание и удаленное управление • Обратная связь — температура, мощность, сообщение об отказах • Централизованная диспетчеризация
  • 4. • Устройства рядом • Быстрая реакция • Есть устройства на батарейках • Немного устройств в сети Умный дом VS АСУНО Fight! • Устройства далеко • Работа по расписанию • Питание всегда есть • Много устройств
  • 5. Что внутри сети 6LoWPAN • Application layer: Unwired Devices Binary Protocol • Transport layer: UDP • Network layer: IPv6, RPL • Data link/network layer: 6LoWPAN 
 (IPv6 over Low power Wireless Personal Area Networks), MAC • Physical layer: IEEE 802.15.4 (868 МГц, 2400 МГц)
  • 6. Чем сети 6lowpan отличаются от компьютерных сетей? • Скорость передачи мала (от 20 до 200 кбит/сек) • MESH-сеть: много промежуточных устройств при передаче на небольшие расстояния • Устройства могут исчезать из сети: доставка (корректная работа маршрута) не гарантируется
  • 7. Передача данных в WiFi-сети Роутер Устройство Устройство Устройство Устройство Устройство Устройство Устройство
  • 8. Передача данных в mesh-сети Роутер Устройство Устройство Устройство Устройство Устройство Устройство Устройство Устройство
  • 9. Перестройка маршрута при выпадении устройства из сети Роутер Устройство Устройство Устройство Устройство Устройство Устройство Устройство Устройство
  • 10. Что внутри устройств 6lowpan • Микроконтроллер и радио-передатчик (в нашем случае — СС2650/СС1310) • Contiki OS • Сенсоры, датчики, актуаторы • Неонка
  • 11. Первая версия реле для "умного дома" Микроконтроллер Актуатор (реле) Блок питания
  • 13. Contiki OS Главный разработчик: Adam Dunkels
 Место разработки: Swedish Institute of Computer Science Примечания: Характер твердый, нордический. Скрытна.
  • 14. – Брет, какие специальности нам нужны больше всего? Тринли пожал плечами. – Очевидно. Программист-археолог. Вернор Виндж, "Глубина в небе" Программная археология — дисциплина, изучающая плохо документированное или недокументированное ... программное обеспечение, в целях его сопровождения. Википедия
  • 15.
  • 16. Кейс 1: Устройство с питанием от батарей Проблема №1: Устройства в режиме ожидания потребляют 0.1мА и больше. Подробнее: Для экономии энергии устройства по-умолчанию используют RDC (Radio Duty-Cycle), который экономичнее постоянно включенного приемника. Но этого недостаточно.
  • 17. Radio Duty-Cycle Алгоритм, позволяющий снизить затраты энергии на прием сообщений: частично или полностью синхронизированная активация приемника и чужих передатчиков.
  • 18. Отключаем Radio Duty-Cycle • На устройствах с внешним питанием приемник постоянно активен • На батарейных устройствах приемник всегда выключен, пока что- то не потребуется послать Устройства, от которых требуется быстрая реакция Устройства, работающие от батарей
  • 19. Минутка кода core->contiki-default-conf.h:62 #define NETSTACK_CONF_RDC contikimac_driver core->contiki-default-conf.h:62 #define NETSTACK_CONF_RDC nullrdc_driver
  • 20. Минутка кода Отключаем сетевую и радио-часть: NETSTACK_MAC.off(0); Включаем обратно NETSTACK_MAC.on(); Отправляем сообщение координатору Включаем сеть и радио Отправляем Дожидаемся подтверждения Выключаем сеть и радио
  • 21. Кейс 1: Устройство с питанием от батарей Проблема №2: До батарейных устройств через некоторое время перестают доходить подтверждения. Подробнее: Без ответов ACK спящего устройства другие устройства считают, что оно выключено и исключают его адрес из таблицы маршрутизации
  • 22. Таблица маршрутизации После построения сети каждое устройство знает для каждого другого устройства адрес соседа, через которое ему можно передать сообщение
  • 23. Минутка кода core->net->rpl->rpl-conf.h:223 #define RPL_DEFAULT_LIFETIME 30 core->net->rpl->rpl-conf.h:214 #define RPL_DEFAULT_LIFETIME_UNIT 30 30 интервалов по 30 секунд = 15 минут core->net->rpl->rpl-conf.h:214 #define RPL_DEFAULT_LIFETIME_UNIT 60*60 10 интервалов по 3600 секунд = 10 часов core->net->rpl->rpl-conf.h:223 #define RPL_DEFAULT_LIFETIME 10
  • 24. Кейс 2: Большая и протяженная сеть
  • 25. Кейс 2: Большая и протяженная сеть Проблема: В большой сети нельзя отправить сообщение некоторым устройствам, хотя они могут отправлять сообщения координатору Подробнее: Таблица маршрутизации не хранит больше 20 записей. Координатор сети в ней присутствует всегда, а вот остальные устройства — нет.
  • 26. Z-wave Координатор должен знать маршрут ДО отправления пакета устройству
  • 27. 6lowpan Любое устройство хранит список маршрутов до всех устройство в его подсети
  • 28. Минутка кода platform->unwired->contiki-conf.h:231 #define UIP_CONF_MAX_ROUTES 20 platform->unwired->contiki-conf.h:231 #define UIP_CONF_MAX_ROUTES 130
  • 29. Кейс 3: OTA-обновление Проблема: Часто невозможно физически добраться до контроллера, чтобы обновить его. Удаленное обновление не должно иметь возможность сделать из устройства кирпич Решение: Используем получение нового образа прошивки через сеть, считаем контрольные суммы и используем флаг успешной загрузки для бутлоадера
  • 30. Бутлоадер Бутлоадер курильщика Бутлоадер нормального человека Программа Стартовый адрес Программа Бутлоадер Стартовый адрес
  • 31. OTA: фаза 1, загрузка образа Основная программа получает, записывает и проверяет контрольную сумму образа во внешней памяти Программа Бутлоадер Стартовый адрес Внешняя память Золотой образ Новый образ Флаги Внешняя память
  • 32. OTA: фаза 2, запись образа Бутлоадер запускается, видит установленный флаг обновления и записывает образ из внешней памяти в основную, сбрасывает флаги обновления и запуска Программа Бутлоадер Стартовый адрес Внешняя память Золотой образ Новый образ Флаги Внешняя память
  • 33. OTA: фаза 3, проверка запуска Бутлоадер передает управление новой программе, программа запускается и проверяет, работает ли она корректно. Если да, устанавливает флаг запуска Программа Бутлоадер Стартовый адрес Внешняя память Золотой образ Новый образ Флаги Внешняя память Внешний ресурс
  • 34. OTA: фаза 4, восстановление Если запуск неуспешен, то флаг запуска не устанавливается, и управление передается бутлоадеру Программа Бутлоадер Стартовый адрес Внешняя память Золотой образ Новый образ Флаги Внешняя память Внешний ресурс
  • 35. Ячеистые сети 6LOWPAN на основе Contiki OS и CC1310/СС2650: теория и практика Зайцев Владислав(vvzvlad) vvzvlad@gmail.com (пишите даже глупые вопросы) Telegram: t.me/ru6lowpan (мы не кусаемся) Unwired Devices (мы делаем железки)
 http://unwireddevices.com/