AWS

Программные средства ESP-MDF для разработки Mesh-сетей

Беспроводные сети, построенные на основе топологии MESH, имеют целый ряд преимуществ по сравнению с традиционными сетями Wi-Fi: большая площадь охвата как внутри, так и вне помещений в рамках одной беспроводной локальной сети, самоорганизация, самовосстановление и пр. В приведенной ниже статье описывается набор программных средств от компании Espressif ESP-MDF для построения MESH-сетей с использованием системы на кристалле ESP32. Приведены шаги для быстрого начала разработки ESP-MDF приложений
3120
В избранное

ESP-MDF или Espressif Mesh Development Framework – это набор программных средств для разработки Mesh-приложений на основе SoC ESP32 и сетевого протокола ESP-MESH, построенного поверх протокола Wi-Fi.

ESP-MESH позволяет соединять многочисленные устройства (далее называемые узлами), расположенные на большой площади (как внутри, так и вне помещений), в рамках одной беспроводной локальной сети (WLAN). ESP-MESH является самоорганизующейся и самовосстанавливающейся сетью. Это означает, что сеть может строиться и поддерживаться автономно.

Традиционная инфраструктура сети Wi-Fi (Рис. 1) представляет собой многоточечную сеть point-to-multipoint, в которой один центральный узел, его называют точкой доступа (access point, сокр. AP), напрямую связан со всеми другими узлами, известными как станции. Точка доступа ответственна за арбитраж и передачу между ней и станциями. Некоторые точки доступа являются ретрансляторами из внешней IP-сети или во внешнюю IP-сеть через маршрутизатор. Традиционные инфраструктуры сети Wi-Fi отличаются тем, что имеют ограниченную зону покрытия. Кроме того, традиционные сети Wi-Fi подвержены перегрузке, поскольку максимальное количество станций, разрешенных в сети, ограничено возможностями точки доступа.

Архитектура традиционной Wi-Fi сети

Рис. 1. Архитектура традиционной Wi-Fi сети

ESP-MESH (Рис. 2) отличается от традиционной инфраструктуры Wi-Fi сетей тем, что узлам не требуется соединяться с центральным узлом. Вместо этого им разрешено соединяться с соседними узлами. Узлы несут взаимную ответственность за ретрансляцию информации друг другу. Это позволяет сети ESP-MESH иметь большую зону покрытия, поскольку узлы могут связываться друг с другом без необходимости находиться в зоне покрытия центрального узла. Аналогичным образом, сеть ESP-MESH также менее восприимчива к перегрузке, поскольку количество узлов, разрешенных в сети, больше не ограничено единственным центральным узлом.

Архитектура сети ESP-MESH

Рис. 2. Архитектура сети ESP-MESH

В таблице 1 приведена терминология, используемая для  ESP-MESH сетей

Таблица 1. Терминология, используемая для  ESP-MESH сетей 

Термин

Описание

Узел

Любое устройство, которое есть или может быть частью ESP-MESH сети

Корневой узел

Верхний узел в сети

Дочерний узел

Узел X является дочерним узлом, когда он подключен к другому узлу Y, где соединение делает узел X более удаленным от корневого узла, чем узел Y (с точки зрения номеров соединений).

Родительский узел

Обратное понятие дочернему узлу

Суб-Дочерний Узел

Любой узел, доступный путем повторного перехода от родительского к дочернему узлу

Sibling-узел (узел-брат)

Узлы, которые совместно используют один родительский узел

Связь (Connection)

Традиционная связь Wi-Fi между точкой доступа и станцией. Узел в ESP-MESH будет использовать свой интерфейс станции для связи с интерфейсом softAP другого узла, таким образом, формируя соединение. Процесс подключения включает в себя процессы аутентификации и ассоциации в Wi-Fi.

Восходящее (Upstream) соединение

Связь от узла к родительскому узлу

Нисходящее (Downstream) соединение

Связь от узла к одному из его дочерних узлов

Беспроводной переход (Wireless Hop)

Часть пути между узлом-источником и конечным узлом,  который соответствует одному беспроводному соединению. Пакет данных, проходящий через одно соединение, называется single-hop, в то время как прохождение через несколько соединений называется multi-hop.

Подсеть (Subnetwork)

Подсеть - это подразделение ESP-MESH сети, состоящее из узла и всех его узлов-потомков. Поэтому подсеть корневого узла состоит из всех узлов сети ESP-MESH.

MAC адрес

Адрес управления доступом к среде (Media Access Control Address ) используется для уникальной идентификации каждого узла или маршрутизатора в сети ESP-MESH.

WDS (Wireless Distribution System)

Технология, позволяющая расширить зону покрытия беспроводной сети путём объединения нескольких Wi-Fi точек доступа в единую сеть без проводного соединения между ними.

Набор программных средств  ESP-MDF для создания MESH-сетей на основе SoC Espressif ESP32

Основанная на стеке протоколов ESP-MESH среда ESP-MDF обеспечивает следующие функции:

  • Быстрое конфигурирование сети: В дополнение к ручной настройке с помощью таких приложений для конфигурирования сети как ESP-MESH или аналогичных приложений от сторонних разработчиков, ESP-MDF предлагает цепочечный способ (chained way) настройки сети, в ходе которого устройства автоматически и быстро устанавливают сетевые соединения и формируют больший охват площади.
  • Стабильное обновление: процесс обновления стал более эффективным благодаря таким функциям, как автоматическая повторная передача неудачных фрагментов, сжатие данных, возврат к более ранней версии, проверка прошивки и т. д.
  • Эффективная отладка: поддерживаются различные подходы к отладке, такие как беспроводная передача логов и беспроводная отладка, отладка через командный терминал и т. д.
  • Управление LAN: сеть может управляться приложением, датчиком и т. д.
  • Демонстрация различных применений: предлагаются комплексные решения на основе ESP-MESH в области освещения, позиционирования внутри помещений и т. д.

Структура (Framework) 

В структуру ESP-MDF входят Утилиты, Компоненты и Примеры (см. Рис. 3).

Утилиты – это инкапсуляция* и сторонние библиотеки ESP-IDF API.

Компоненты - это функциональные модули ESP-MDF, использующие Utility API.  

Примеры – это  ESP-MESH решения,  основанные на Компонентах.

*Процесс передачи данных с верхнего уровня приложений вниз к физическому уровню для передачи по физической среде сети,  т. е. витой паре, WiFi и пр.)

ESP-MDF содержит Утилиты, Компоненты и Примеры

Рис. 3. ESP-MDF содержит Утилиты, Компоненты и Примеры

  • Утилиты
    • Драйвер: драйверы для различных устройств, таких как часто используемые кнопки и светодиоды
    • Miniz: высокопроизводительная библиотека сжатия данных без потерь
    • Aliyun: Aliyun IoT kit
    • Mwifi: добавляет в ESP-MESH фильтр повторной передачи, сжатие данных, фрагментированную передачу и функцию многоадресной передачи P2P
    • Mespnow: добавляет в ESP-NOW фильтр повторной передачи, циклическую проверку избыточности (CRC) и функции фрагментации данных
    • Цикл событий: имеет дело с событиями ESP-MDF
    • Проверка ошибок: управляет ошибками кода ESP-MDF
    • Управление памятью: управление памятью для ESP-MDF
    • Хранение информации: хранение конфигурационной информации во флэш
    • Позиции от сторонних разработчиков:
    • Передача: способ передачи данных между устройствами
    • Mcommon: модули, совместно используемые всеми компонентами ESP-MDF
  • Компоненты:
    • Mconfig: сетевой конфигурационный модуль
    • Mupgrade: модуль обновления
    • Mdebug: модуль отладки
    • Mlink: модуль управления локальной сетью (LAN)
  • Примеры:
    • Пример MWiFi: Содержит примеры двух распространенных сетевых режимов ESP-MESH: с маршрутизатором или без маршрутизатора. Первоначально рекомендуется начать разработку, основываясь на этом примере, а затем добавить дистрибуцию, обновление, беспроводной тест и другие функции
    • Пример Mupgrade: пример обновления для устройства
    • Пример Mconfig: пример сетевой конфигурации устройства
    • Примеры Mcommon: это введение в вопрос использования функций в модуле Mcommon: хранение данных во флэш, добавление пользовательских событий и пр.
    • Консольный тест: Проверка пропускной способности ESP-MESH, конфигурации сети и задержка пакетов путем ввода команд через последовательный порт
    • Беспроводная отладка: отладка ESP-MDF по беспроводному каналу
    • ESP32-MeshKit Light (Рис. 4): решение для интеллектуальных систем освещения с ESP-MESH в качестве мастера сети. Кит содержит осветительные лампы с интегрированными чипами ESP Поддержка BLE + ESP-MDF для BLE шлюза, iBeacon (API сервис iOS) и BLE сканирования
    • ESP32-MeshKit-Sense (Рис. 5): отладочная плата, специально разработанная для приложений с режимами легкого и глубокого сна.
      Плата предоставляет решения для:
      • Мониторинга мощности потребления MeshKit периферии
      • Управление MeshKit периферией, основанное на данных от множества встроенных датчиков
    • Aliyun Linkkit: пример доступа ESP-MDF к Облачной Платформе Алибаба
    • AWS: доступ ESP-MDF к  примеру AWS Платформы
    • Демонстрация функций: пример использования каждого функционального модуля
    • Отладка: средства тестирования производительности и инструменты отладки
    • Отладочный набор: Пример использования ESP32-MeshKit для исследования и понимания ESP-MESH
    • ESP32-MeshKit-Button: интеллектуальное кнопочное решение, адаптированное для ESP-MESH приложений с ультрамалой мощностью потребления. Устройство просыпается только на короткое время, когда кнопки нажаты и идет передача пакетов в ESP-MESH устройства через ESP-NOW.
    • Облачная Платформа: ESP-MDF стыковочная облачная платформа

Разработка с ESP-MDF

Отладочные платы

ESP32-Meshkit

ESP32-MeshKit предлагает полное решение для освещения ESP-MESH Lighting Solution  (см. Рис. 4), дополненное приложением ESP-Mesh App (iOS и Android версия) для исследований, разработок и лучшего понимания ESP-MESH.

ESP32-MeshKit Light

Рис. 4. ESP32-MeshKit Light

ESP32-MeshKit Sense

Рис. 5. ESP32-MeshKit Sense

Продукция:

  • ESP32-MeshKit-Light: Интеллектуальные источники света RGBCW, которые визуально показывают результаты управления. Они могут использоваться для тестирования времени настройки сети, скорости отклика, стабильности, измерения расстояния и т. д.
  • ESP32-MeshKit-Sense: Этот комплект оснащен датчиком освещенности, а также датчиком температуры и влажности. Он может измерять энергопотребление. На его основе можно разрабатывать приложения с низким энергопотреблением. Комплект также можно использовать с ESP-Prog для загрузки и отладки прошивки.
  • ESP32-MeshKit-Button: служит в качестве контроллера включения/ выключения, готов к разработке приложений с низким энергопотреблением. Может использоваться с ESP-Prog для загрузки и отладки прошивки.

Отладочная плата ESP32-Buddy

Изделие ESP32-Buddy – отладочная плата, специально разработанная для тестирования при проектировании ESP-MESH. Благодаря небольшим размерам и USB-входу питания, плату удобно использовать для тестирования большого количества устройств и измерения расстояний между ними (будет доступна в ближайшее время).

Функции:

  • 16 МБ флэш-памяти: хранит журналы (логи);
  • OLED-экран: отображает информацию об устройстве, например, его слой, состояние подключения и т. д.;
  • LED: показывает статус платы;
  • Датчик температуры и влажности: собирает параметры окружающей среды.

Быстрый старт (Make) 

В этом разделе приведены шаги для быстрого начала разработки ESP-MDF приложений. Для получения более подробной информации, пожалуйста, обратитесь к ESP-IDF Get Started.

Каталог ~/esp будет использоваться в дальнейшем для установки компилирующего инструментария (тулчейна), ESP-MDF и демонстрационных программ. Вы можете использовать другой каталог, но обязательно в этом случае модифицируйте команды соответствующим образом.

  1. Установка инструментария (Toolchain): установите инструментарий, соответствующий операционной системе вашего ПК (WindowsLinux или Mac OS).

Windows не имеет встроенной среды “make”, поэтому помимо установки toolchain вам понадобится среда, совместимая с GNU. Можно используем окружающую среду MSYS2. Вам не нужно использовать эту среду все время (вы можете использовать Eclipse или какой-либо другой фронт-энд), но среда будет работать в фоновом режиме.

УCТАНОВКА TOOLCHAIN (для Windows) 

  • Разархивируйте zip-файл в C:\ (или в другое место, но в этом руководстве предполагается C:\), и он создаст каталог msys32 с предварительно подготовленной средой. 

ПРОВЕРКА

Откройте окно терминала MSYS2 MINGW32, запустив C:\ msys32\ mingw32.exe. Среда в этом окне представляет собой оболочку bash. Создайте каталог с именем esp, который будет использоваться по умолчанию в качестве  местоположения для разработки приложений ESP32. Для этого выполните следующую команду bash:

mkdir -p ~/esp

Набрав cd ~/esp, вы можете перейти во вновь созданный каталог. Если нет сообщений об ошибках, то на  этом шаге вы сделали все правильно (Рис. 6).

Окно оболочки MSYS2 MINGW32 (bash)

Рис. 6. Окно оболочки MSYS2 MINGW32 (bash)

Используйте это окно в следующих шагах настройки среды разработки для ESP32.

  1. Получение ESP-MDF

    git clone --recursive https://github.com/espressif/esp-mdf.git

    Если вы клонируете без опции --recursive, перейдите в каталог esp-mdf и запустите команду

    git submodule update –init
  1. Установите путь ESP-MDF: Toolchain использует переменную окружения MDF_PATH. Установка этой переменной аналогична установки переменной окружения IDF_PATH. Пожалуйста, обратитесь к  Add IDF_PATH to User Profile.

    export MDF_PATH=~/esp/esp-mdf 

  2. Запуск проекта:  Слово «проект» относится к примеру связи между двумя устройствами ESP-MESH.  
    cp -r $MDF_PATH/ examples/ get-started/
    cd  get-started/

  3. Сборка и прошивка: Необходимо изменить только номер последовательного порта. В остальном, просто оставьте конфигурацию по умолчанию нетронутой.

    make menuconfig
    make erase_flash flash

  1. Монитор/Отладка: Если вы хотите выйти из монитора, используйте сочетание клавиш Ctrl+].

    make monitor 
  1. Обновление ESP-MDF 

        cd ~/esp/esp-mdf
        git pull
        git submodule update --init –recursive

Быстрый старт (CMake) 

В этом разделе приведены шаги для быстрого начала разработки приложений ESP-MDF. Для получения более подробной информации см. ESP-IDF Get Started (CMake).

Каталог ~/esp в дальнейшем будет использоваться для инсталляции тулчейна, ESP-MDF и демонстрационных программ. Вы можете использовать другой каталог, но не забудьте соответствующим образом изменить команды.

  1. Настройка тулчейна: пожалуйста, настройте в соответствии с операционной системой вашего ПК (Windows, Linux или Mac OS).
  1. Получение ESP-MDF:

         git clone --recursive https://github.com/espressif/esp-mdf.git

Если вы клонируете без параметра --recursive, перейдите в каталог esp-mdf и выполните команду 
git submodule update –init

  1. Настройка пути (Path) ESP-MDF: для доступа к ESP-MDF тулчейн использует переменную окружения MDF_PATH. Настройка этой переменной аналогична настройке переменной IDF_PATH. Пожалуйста, обратитесь к Add IDF_PATH & idf.py PATH to User Profile (CMake).

    export MDF_PATH=~/esp/esp-mdf
    export PATH="$MDF_PATH/esp-idf/tools:$PATH"
  1. Старт Проекта: Слово «Проект» относится к примеру связи между двумя устройствами ESP-MESH.

    cp -r $MDF_PATH/examples/get-started/
    cd  get-started/ 
  1. Сборка и Прошивка: Необходимо изменить только номер последовательного порта. В остальном, просто оставьте конфигурацию по умолчанию нетронутой.

    idf.py menuconfig
    idf.py erase_flash flash

  2. Монитор/ Отладка: Если вы хотите выйти из монитора, используйте комбинацию клавиш Ctrl+].

    make monitor

  3. Обновление ESP-MDF:

    cd ~/esp/esp-mdf
    git pull
    git submodule update --init --recursive 

Основные моменты ESP-MESH 

  • Простая установка: ESP-MESH расширяет зону покрытия точки доступа Wi-Fi до самого удаленного узла в облаке mesh. Такая сеть автоматически формируется, самовосстанавливается и самоорганизуется. Это сохраняет усилия по прокладке кабелей. Все, что вам нужно сделать, это настроить пароль роутера. 
  • Бесплатный шлюз: Децентрализованная структура ESP-MESH с отсутствием шлюза исключает общий отказ сети в случае сбоя одного узла. Даже если есть одно устройство ESP-MESH, сеть все равно работает как обычно.
  • Более безопасная передача: как слой канала передачи данных, так и слой приложения могут быть зашифрованы.
  • Более надежная передача: передача и управление потоком данных между двумя устройствами имеют большую надежность. Также поддерживаются одноадресная, многоадресная и широковещательная передачи.
  • Большая емкость сети: ESP-MESH принимает форму древовидной топологии, поэтому одно устройство может подключаться максимум к 10 устройствам, а вся сеть может иметь более 1000 узлов.
  • Более широкая зона покрытия: Расстояние передачи между двумя устройствами составляет 30 м сквозь стены и 200 м без каких-либо препятствий между устройствами (относится к ESP32-DevKitC).
    • Умный дом: даже если в вашем доме всего три-пять устройств, они могут формировать сеть и связываться друг с другом через стены.
    • Уличное освещение: если ESP-MESH используется для сценария уличного освещения, два устройства могут связываться друг с другом на длинной дистанции.
  • Высокая скорость передачи: для передачи по Wi-Fi скорость может достигать до 10 Мбит/ сек.
    • Система контроля окружающей среды: непосредственно передает необработанные данные, собранные датчиками, и анализирует массивы данных для калибровки алгоритмов, тем самым повышая точность датчиков.
    • Система фоновой музыки: поддерживается передача, как аудио, так и видео.
  • Одновременный запуск стеков протоколов Wi-Fi и BLE: микросхемы ESP32 могут одновременно запускать стеки протоколов Wi-Fi и BLE и использовать ESP-MESH в качестве основной сети для передачи данных, приема данных от маячка BLE, отправки широковещательных сообщений BLE и подключения устройств BLE. При этом возможно, например, реализовать:
    • Отслеживание элементов: отслеживание пакетов данных BLE или Wi-Fi с устройства в нескольких выбранных точках.
    • Подсчет пешеходов: с помощью Wi-Fi мониторинга устройств, посылающих фреймы запросов (probe request).
    • Позиционирование внутри помещений: каждое устройство функционирует как Beacon API*, непрерывно отправляя сигнал Bluetooth в окружающую среду. Сеть может анализировать интенсивность сигнала устройства и вычислять его текущее положение.
    • Продвижение продукта: передача в режиме реального времени информации о продуктах и рекламных акциях через iBeacon.
    • Шлюз Bluetooth: традиционные устройства Bluetooth также могут быть подключены к сети ESP-MESH с использованием шлюза Bluetooth.

* Beacon API используется для отправки небольших по объему данных на сервер без ожидания ответа

Заключение

Для более глубокого изучения вопросов, связанных с разработкой MESH-приложений на основе SoC ESP32 и набора программных средств ESP-MDF рекомендуем воспользоваться следующими ресурсами:

  • Для доступа к документам ESP-MDF перейдите по ссылке ESP-MDF Programming Guide.
  • ESP-MESH – базовый беспроводной коммуникационный протокол для ESP-MDF.
  • ESP-IDF Programming Guide – описывает  Espressif's IoT development framework.
  • Если вы желаете добавить коды, связанные с ESP-MDF, пожалуйста, обратитесь к Code Contribution Guide
  • Чтобы посетить официальный форум ESP32, перейдите по ссылке ESP32 BBS
  • Для доступа к документации по аппаратному обеспечению ESP32-MeshKit, перейдите по ссылке Espressif Website.

Кроме того, настоятельно рекомендуем использовать широкий спектр отладочных  плат на основе SoC ESP32, которые можно приобрести непосредственно на сайте компании Терраэлектроника.

Дополнительные материалы:

Источник: github.com

Производитель: Espressif Systems (shanghai) Pte. Ltd.
Наименование
Производитель
Описание Корпус/
Изображение
Цена, руб. Наличие
ESP32-DEVKITC
ESP32-DEVKITC
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2610249 ИНФО
Поиск
предложений
Набор начального уровня для работы с семейством модулей ESP32-WROOM.
ESP32-DEVKITC
-
Поиск
предложений
ESP32-DEVKITC-32D
ESP32-DEVKITC-32D
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2791131 ИНФО
Доступно: 77 шт. от 1 шт. от 1381,08
Выбрать
условия
поставки
Отладочная плата ESP32-DEVKITC-32D от компании  ESPRESSIF SYSTEMS
ESP32-DEVKITC-32D от 1 шт. от 1381,08
77 шт.
(под заказ)
Выбрать
условия
поставки
ESP32-DEVKITC-32U
ESP32-DEVKITC-32U
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2796548 ИНФО RND
Доступно: 363 шт. 924,00
Малогабаритная отладочная плата на основе модуля ESP32-WROOM-32D с 4МБ Flash, созданного на базе флагманской SoC ESP32-D0W, представляющей собой двухъядерный беспроводной процессор, поддерживающий WiFi 802.11 b/g/n (802.11n до 150 Mbps), Bluetooth v4.2 BR/EDR и BLE.
ESP32-DEVKITC-32U 924,00 от 3 шт. 803,00 от 10 шт. 791,00 от 20 шт. 755,00
86 шт.
(на складе)
277 шт.
(под заказ)
ESP32-DEVKITC-VB
ESP32-DEVKITC-VB
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2796550 ИНФО PDF RND
Доступно: 699 шт. от 1 шт. от 1216,23
Выбрать
условия
поставки
Небольшая отладочная плата общего назначения на основе встроенного WiFi-BT-BLE MCU модуля ESP32-WROVER-B с 4 МБ внешней SPI Flash, 8 МБ PSRAM и со встроенной PCB антенной.
ESP32-DEVKITC-VB от 1 шт. от 1216,23
699 шт.
(под заказ)
Выбрать
условия
поставки
ESP32-DEVKITC-VIB
ESP32-DEVKITC-VIB
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2796551 ИНФО PDF
Доступно: 618 шт. от 1 шт. от 1372,23
Выбрать
условия
поставки
ESP32 General Development Kit, embeds ESP32-WROVER-B (IPEX), 32Mbit flash, 64Mbit PSRAM
ESP32-DEVKITC-VIB от 1 шт. от 1372,23
618 шт.
(под заказ)
Выбрать
условия
поставки
ESP32-DEVKITC-32D-F
ESP32-DEVKITC-32D-F
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2796552 ИНФО RND
Доступно: 278 шт. 912,00
SP32 General Development Kit, embeds ESP32-WROOM-32D, female header connector
ESP32-DEVKITC-32D-F 912,00 от 3 шт. 793,00 от 10 шт. 780,00 от 20 шт. 745,00
24 шт.
(на складе)
254 шт.
(под заказ)
ESP-Prog
ESP-Prog
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2796576 ИНФО RND
Доступно: 410 шт. 1610,00
Плата Espressif ESP-Prog для программирования и отладки беспроводных микросхем и модулей производства Espressif. В отладчике применяется USB/UART-мост FT2232HL. При этом для отладки ESP32 используется JTAG, а для ESP8266 – последовательный интерфейс.
ESP-Prog 1610,00 от 2 шт. 1400,00 от 5 шт. 1380,00 от 10 шт. 1310,00
4 шт.
(на складе)
406 шт.
(под заказ)

Сравнение позиций

  • ()