Энергетическое профилирование узлов Mesh Bluetooth в беспроводных сетях датчика

Этот пример показывает энергетическое профилирование в сети mesh Bluetooth, пользующейся Библиотекой Communications Toolbox™ для Протокола Bluetooth®. Одной из основных функций mesh Bluetooth является своя пригодность для малой мощности и ограниченных энергией узлов. Этот пример демонстрирует энергетическое профилирование Малой мощности, узлы mesh Bluetooth с батарейным питанием, которые реализуют опцию энергосбережения под названием Дружба. Энергия вычисляется на основе времени, профилируемого в различных состояниях (передача, послушайте, спите и бездействуйте) каждого узла в сети mesh. Выведенные результаты показывают, что узлы Малой мощности всегда расходуют меньше энергии путем проведения большего количества времени в состоянии сна, таким образом приведения к энергосбережению и увеличенное время жизни.

Стек Mesh Bluetooth

Спецификация [1] Ядра Bluetooth включает низкую энергетическую версию для беспроводных персональных сетей области с низкой ставкой, называемых Bluetooth низкой энергией (BLE) или Умным Bluetooth. Стек BLE состоит из: Типовой Профиль Атрибута (GATT), Протокол Атрибута (ATT), Протокол менеджера безопасности (SMP), Управление Логической ссылкой и Протокол (L2CAP) Адаптации, Слой Link (LL) и Физический уровень. BLE был добавлен к стандарту для низких энергетических устройств, генерирующих небольшие количества данных, такие как предупреждения уведомления, используемые в приложениях как домашняя автоматизация, здравоохранение, фитнес и Интернет вещей (IoT).

Профиль mesh Bluetooth [2] задает основные требования, чтобы реализовать сетевые решения mesh для BLE. Стек mesh расположен сверху базовой спецификации BLE и состоит из: Слой Модели, Слой Модели Основы, доступ к Слою, Верхнему Транспортному уровню, Более низкому Транспортному уровню, Слою сети и Слою Несущей. Организация сети mesh Bluetooth позволяет сквозной коммуникации в крупномасштабных сетях устройства поддержать приложения как умная подсветка, промышленная автоматизация, организация сети датчика, отслеживание актива и много других решений IoT.

Стек mesh:

Фигура ниже показов mesh Bluetooth складывает по рекламной несущей.

  • Слой модели: Этот слой задает модели, сообщения и утверждает требуемый для пользовательских сценариев. Например, чтобы изменить состояние света к На или Прочь, Типовое сообщение Набора OnOff из модели Generic OnOff используется. Этот пример поддерживает только две модели, Типовой OnOff и Легкую Легкость с набором и сообщениями о состоянии.

  • Слой Модели основы: Этот слой задает модели, сообщения и утверждает требуемый сконфигурировать и управлять сетью mesh. Этот слой используется, чтобы сконфигурировать элемент, опубликовать и адреса подписки. Этот пример принимает, что узел сконфигурирован со всеми адресами.

  • Доступ к Слою: Этот слой задает интерфейс к верхнему транспортному уровню и формату данных приложения. Это также управляет шифрованием и дешифрованием данных приложения в верхнем транспортном уровне. Этот пример поддерживает повторные передачи и подтверждения на этом слое. Можно сконфигурировать слой доступа с помощью helperBLEMeshAccessLayer.

  • Верхний Транспортный уровень: функциональность верхнего транспортного уровня включает шифрование, дешифрование и аутентификацию данных приложения и спроектирована, чтобы обеспечить конфиденциальность сообщений доступа. Этот слой также ответственен за генерацию сообщений транспортного контроля (Дружба и heartbeat) внутренне и передает те сообщения коллеге верхний транспортный уровень. Эти сообщения шифруются и аутентифицируются в слое сети. В этом шифровании в качестве примера не поддерживаются дешифрование, аутентификация и сообщения heartbeat.

  • Более низкий Транспортный уровень: функциональность более низкого транспортного уровня включает сегментацию и повторную сборку верхних сообщений транспортного уровня в несколько более низких сообщений транспортного уровня, чтобы передать большие верхние сообщения транспортного уровня к другим узлам. Этот слой также задает друга очередь, используемая Другом узел, чтобы хранить более низкие сообщения транспортного уровня для узла Малой мощности. В этом примере, сегментации и повторной сборке не поддерживается. В этом примере реализованы и верхнее и более низкие транспортные уровни, когда один транспортный уровень возражает helperBLEMeshTransportLayer.

  • Слой сети: Этот слой задает шифрование, дешифрование и аутентификацию более низких сообщений транспортного уровня. Это передает более низкие сообщения транспортного уровня по слою несущей и передает сообщения mesh, когда 'Релейная' опция активирована. Это также задает кэш сообщения, содержащий все недавно замеченные сетевые сообщения. Если полученное сообщение, как находят, находится в кэше, то это отбрасывается. Кэш сообщения используется релейными узлами (узлы, в которых 'Релейная' опция активирована). В этом шифровании в качестве примера, дешифровании и аутентификации не поддерживается. Можно сконфигурировать слой сети с помощью helperBLEMeshNetworkLayer.

  • Слой несущей: Этот слой является интерфейсом между стеком mesh Bluetooth и базовой спецификацией BLE. Это также ответственно за создание сети mesh путем настройки узлов mesh. Этот пример принимает, что все узлы уже настраиваются в сеть mesh. Два типа несущих, поддержанных mesh Bluetooth, рекламируют несущая GATT и несущая. Этот пример рассматривает только рекламную несущую.

Стек ядра BLE:

  • Типовой профиль доступа: Этот профиль задает типы рекламных данных (AD) для переноса сообщений mesh по рекламной несущей. Этот пример поддерживает "Тип AD" сообщения Mesh, и это используется для обмена сообщениями слоя сети между узлами mesh.

  • Слой ссылки: Этот слой задает роли Вещательной компании и Наблюдателя для обмена сообщениями между узлами в сети mesh Bluetooth. В роли Вещательной компании всегда дает объявление узел, тогда как в роли Наблюдателя узел всегда сканирует для рекламодателей. Каждый узел в сети mesh переключается между этими двумя ролями, чтобы служить узлом mesh Bluetooth. Можно сконфигурировать Слой Ссылки с помощью helperBLEMeshLLGAPBearer.

Дружба в Mesh Bluetooth

Беспроводная сеть датчика (WSN), как известно, высоко, ресурс ограничил класс сетей, где потребление энергии является одной из основных проблем. Большинство датчиков является устройствами c батарейным питанием. В WSNs узлы датчика развертываются в крупном масштабе, и таким образом это невозможно заменить батареи узлов датчика. Поэтому каждый узел датчика должен использовать энергосберегающим образом, чтобы выжить в течение долгого времени. Mesh Bluetooth задает функциональность Дружбы для ограниченных устройств энергии. Транспортный уровень (верхний и ниже) в стеке mesh Bluetooth в основном ответственен за функциональность Дружбы. Это задает два типа узлов.

  • Узел Малой мощности: узел Малой мощности имеет ограниченный источник питания и действует в уменьшаемых рабочих циклах приемника. Этот узел переключается на ON, утверждают только, чтобы получить пакеты данных.

  • Друг узел: Друг узел активирует Друга опция и хранит сообщения, предназначенные для узлов Малой мощности. Этот узел передает сообщения только, когда узлы Малой мощности явным образом запрашивают. Этот пример поддерживает Дружбу между одним Другом и одним узлом Малой мощности.

Дружба:

Дружба устанавливается между узлами Друга и Малой мощности. Узел Малой мощности инициирует Дружбу, как только это настраивается в сеть mesh Bluetooth. Этот пример принимает, что, Дружба уже устанавливается между узлами Друга и Малой мощности. После того, как Дружба устанавливается, Друг, узел хранит сообщения от имени узла Малой мощности в друге очередь. Механизм опроса используется для оптимизации потребления энергии в узлах Малой мощности. Обмен сообщениями mesh Bluetooth между узлом Малой мощности и Другом узел проиллюстрирован в этом рисунке:

Параметры синхронизации, используемые в Дружбе:

  • Получите задержку: Этот параметр задает время между узлом Малой мощности, отправляющим запрос и прислушивающийся к ответу от Друга узел. Узел Малой мощности находится в состоянии сна на полное время получить задержки.

  • Окно Receive: Этот параметр задает время, в течение которого узел Малой мощности прислушивается к ответу от Друга узел. Узел Малой мощности находится в состоянии сканирования на полное время, получают окно.

  • Тайм-аут опроса: Этот параметр задает максимальное время между двумя последовательными запросами от узла Малой мощности. В тайм-ауте опроса, если Друг узлу или узлу Малой мощности не удается получить запрос или ответ от другого узла, отключена Дружба.

Периодически, узлы Малой мощности опрашивает Друга узлы относительно любых сообщений данных, хранивших в друге очередь. После опроса Друга узел входят узлы Малой мощности, состояние сна на время получают задержку. Друг узел использует получить задержку, чтобы подготовить ответ к узлу Малой мощности. После получить задержки Друг узел отвечает на узел Малой мощности, прежде чем сумма получит задержку и получит окно.

Проверяйте на установку пакета поддержки

% Check if the 'Communications Toolbox Library for the Bluetooth Protocol'
% support package is installed or not.
commSupportPackageCheck('BLUETOOTH');

Энергетическая симуляция профилирования Mesh Bluetooth

Этот пример позволяет вам создавать и конфигурировать сеть mesh Bluetooth с различными типами узлов, такими как Конечные узлы, Релейные узлы, Друг узлы, узлы Малой мощности. Этот пример инициирует и передает демонстрационное сообщение mesh от сконфигурированного исходного узла до сконфигурированного целевого узла. Если тот же исходный узел передает сообщения mesh к нескольким целевым узлам, то все целевые узлы формируют группу, и сообщение mesh передается к адресу группы. Так, все узлы в той группе получат сообщение mesh. Наряду с сообщениями mesh, порожденными в исходном узле, сообщениями Дружбы также обмениваются между сконфигурированными узлами Друга и Малой мощности. Во время симуляции каждый узел вычисляет время, проведенное в различных состояниях (передача, послушайте, бездействуйте и спите) узла. Это помогает в вычислении времени жизни узла в сети.

Цели:

  1. Создайте и сконфигурируйте сеть mesh

  2. Визуализируйте лавинную рассылку сообщения

  3. Анализируйте поведение Дружбы в сети mesh Bluetooth

  4. Профилируйте энергию, расходуемую каждым узлом в сети mesh Bluetooth

Настройка:

  1. Источник и целевые пары узла

  2. Значение TTL для пакета, порожденного в каждом источнике

  3. Друг и пары узла Малой мощности

  4. Получите окно и опросите значение тайм-аута относительно каждых пар узла Друга и Малой мощности

  5. Релейные узлы

Результаты:

  • Время, проведенное в различных состояниях (передача, послушайте, спите и бездействуйте) каждым узлом в сети mesh Bluetooth

  • Среднее время проведено каждым типом (Реле, Конец, Друг и узел Малой мощности) узла в различных состояниях

Создайте и сконфигурируйте сеть mesh:

Можно использовать helperBLEMeshNode и helperBLEMeshVisualizeNetwork для создания и визуализации сети mesh соответственно. В helperBLEMeshVisualizeNetwork, NumberOfNodes задайте общее количество узлов в сети, тогда как Positions задайте соответствующие положения узла. Значение по умолчанию для NodePositionType 'Сетка'. Можно также задать собственную сеть путем конфигурирования значения NodePositionType к 'UserInput' и положениям узла к Positions.

% Reset the random number generator seed
sprev = rng('default');

% Number of nodes in the Bluetooth mesh network
totalNodes = 55;

% Initialize "meshNodes" with an object of type helperBLEMeshNode
meshNodes(1, totalNodes) = helperBLEMeshNode();
for nodeIdx = 1:totalNodes
    % Create an object for a mesh node
    meshNode = helperBLEMeshNode();
    % Unique identifier for a mesh node
    meshNode.Identifier = nodeIdx;

    meshNodes(nodeIdx) = meshNode;
end

% Load node positions
load('bleMeshNodesPositions.mat');

% Visualization object for Bluetooth mesh network
meshNetworkGraph = helperBLEMeshVisualizeNetwork();
meshNetworkGraph.NumberOfNodes = totalNodes;
meshNetworkGraph.NodePositionType = 'UserInput';
meshNetworkGraph.Positions = bleMeshNodesPositions;
meshNetworkGraph.VicinityRange = 25;
meshNetworkGraph.Title = 'Energy Profiling: Bluetooth Mesh Network';

Сконфигурируйте параметры симуляции: можно задать количество источника и целевых пар в сети с помощью sourceDestinationPairs. Можно задать количество пар узла Друга и Малой мощности в сети с помощью friendLowPowerPairs. Количество релейных узлов в сети задано с помощью relayNodeIDs. Объекты узла mesh, имеющие отношение к каждому узлу mesh, заданы в meshNodes. Пути, полученные для источника и целевых пар, хранятся в paths.

% Simulation time, in milliseconds
simulationTime = 6000;

% Enable/disable visualization
enableVisualization = true;

% Enable/disable the animation in the visualization. If the
% "enableVisualization" is set to false, "enableAnimation" is not
% considered.
enableAnimation = false;

% Source destination pairs - sample mesh message originates at the source
% node and delivered to the destination node
sourceDestinationPairs = [1 52; 1 17; 12 7; 6 53; 54 51; 9 33; 18 52; ...
    29 52; 31 7; 12 9; 54 53; 55 1; 9 17; 18 35];

% Time to live (TTL) value for each source and destination pair in the
% range [0 127]
ttl = [20 23 35 21 23 30 22 20 23 35 21 23 30 22];

% Friend Low Power pairs - assuming that Friendship is established between
% the configured Friend and Low Power node pairs
friendLowPowerPairs = [16 52];

% Receive window (in milliseconds) for each Friend and Low Power node pairs
% (>= 120 milliseconds and <= 255 milliseconds)
receiveWindow = 180;

% Poll timeout (in seconds) for each Friend and Low Power node pairs
% (>= 2 seconds and <= 95.9 hours)
pollTimeout = 20;

% Relay nodes
relayNodeIDs = [3 4 5 8 10 11 15 19 20 21 23 25 28 30 32 34 36 37 38 39 41 ...
    42 43 44 45 46 47 48 49 26 2 16 13 27];

% Simulate the Bluetooth mesh network with the above configuration
[meshNodes, paths] = helperBLEMeshSimulation(meshNodes, totalNodes, meshNetworkGraph, ...
    simulationTime, sourceDestinationPairs, ttl, friendLowPowerPairs, receiveWindow, ...
    pollTimeout, relayNodeIDs, enableVisualization, enableAnimation);

% Restore the previous setting of random number generation
rng(sprev);

Статистика в каждом узле

Статистические данные, полученные в каждом узле:

  • Время проведено в состоянии передачи

  • Время проведено в состоянии слушания

  • Время проведено в состоянии сна

  • Время проведено в состоянии ожидания

  • Количество сообщений передается от узла

  • Количество сообщений получено узлом

  • Количество сообщений передается узлом

  • Количество сообщений пропущено в узле

  • Количество сообщений получено с отказами CRC

Переменная statisticsAtEachNode рабочей области содержит совокупную сетевую статистику всех узлов в сети. Однако для данного шанса симуляции, Вы видите сетевую статистику для максимума первых пяти узлов. Сетевые статистические данные для первых пяти узлов в сети:

% Statistics of each node
statisticsAtEachNode = helperBLEMeshNodesStatistics(meshNodes);
statisticsForFirstFiveNodes = statisticsAtEachNode(1:min(totalNodes, 5), :)
statisticsForFirstFiveNodes =

  5x14 table

              NodeType    TransmittedMsgs    ReceivedMsgs    ReceivedMsgsFromLPN    ReceivedApplicationMsgs    RelayedMsgs    DroppedMsgs    CRCFailedMsgs    TotalTransmittedBytes    TotalReceivedBytes    SleepTime (milliseconds)    IdleTime (milliseconds)    ListenTime (milliseconds)    TransmissionTime (milliseconds)
              ________    _______________    ____________    ___________________    _______________________    ___________    ___________    _____________    _____________________    __________________    ________________________    _______________________    _________________________    _______________________________

    Node_1     End               6                10                  0                        1                    0              9               0                   171                    284                       0                         123.5                        5871                           1.368             
    Node_2     Relay            15                 6                  0                        0                    5              1               0                   426                    170                       0                           187                        5800                           3.408             
    Node_3     Relay            15                24                  0                        0                    5             19               0                   426                    685                       0                           178                        5809                           3.408             
    Node_4     Relay            12                20                  0                        0                    4             14               2                   339                    566                       0                           168                      5821.5                           2.712             
    Node_5     Relay            12                10                  0                        0                    4              4               2                   339                    285                       0                           168                      5821.5                           2.712             

Среднее время, проведенное каждым типом узла в различных состояниях, вычислено и построено ниже. Результаты приходят к заключению, что узлы Малой мощности тратят наиболее часто в состоянии сна, приводящем к энергосбережению и увеличенное время жизни.

fprintf('Average time statistics of different Bluetooth mesh nodes are:\n');
meshNodesAvgStats = helperBLEMeshNodeAverageTime(meshNodes)
Average time statistics of different Bluetooth mesh nodes are:

meshNodesAvgStats =

  4x5 table

    Type of Bluetooth mesh node    Transmission time (milliseconds)    Listen time (milliseconds)    Idle time (milliseconds)    Sleep time (milliseconds)
    ___________________________    ________________________________    __________________________    ________________________    _________________________

          Low Power node                         2.304                              720                         103                       5166.5          
          Friend node                            6.192                           5771.5                       205.5                            0          
          Relay node                            3.3869                           5801.4                       185.7                            0          
          End node                              0.4836                           5907.4                        90.3                            0          

Этот пример демонстрирует одну передачу сообщения от исходного узла до целевого узла. Однако можно сконфигурировать трафик приложения в исходном узле путем вызывания pushModelMessage функции периодически. Время передачи в Конечном узле зависит от трафика приложения. Точно так же время передачи в узле Малой мощности под влиянием сконфигурированного значения тайм-аута опроса.

Дальнейшее исследование

Вычислите время жизни узла малой мощности:

Можно использовать helperBLEMeshNodeLifetime, чтобы вычислить время жизни узла в сети mesh Bluetooth в конце симуляции. Объект узла mesh типа helperBLEMeshNode дан как вход к helperBLEMeshNodeLifetime наряду с simulationTime вычислить время жизни узла. Энергетические параметры аппаратно-зависимы, которые используются, чтобы вычислить время жизни узла. Можно обновить соответствующие аппаратные параметры в функции helperBLEMeshNodeLifetime.

% Fetch one of the Low Power nodes for calculating the lifetime
meshNode = meshNodes(52);
lifeTime = helperBLEMeshNodeLifetime(meshNode, simulationTime);
fprintf('Lifetime of the node %d is: %.4f days.\n', meshNode.Identifier, lifeTime);
Configured hardware parameters for the battery capacity of 1200 mAh are:

hardwareParameters =

  7x2 table

       Hardware parameters        Configured values (mA)
    __________________________    ______________________

    Self-discharge                      0.0013699       
    Transmission on channel 37               7.57       
    Transmission on channel 38               7.77       
    Transmission on channel 39                7.7       
    Listening                                10.3       
    Sleep                                     0.2       
    Idle                                     1.19       

Statistics at node "52" are:

statisticsAtNode =

  4x2 table

     Time variables      Time (ms)
    _________________    _________

    Transmission time      2.304  
    Listen time              720  
    Sleep time            5166.5  
    Idle time                103  

Lifetime of the node 52 is: 34.8927 days.

Время жизни узла малой мощности путем варьирования тайм-аута опроса

Время жизни узла Малой мощности зависит от времени, в течение которого узел находится в, слушают состояние. Наиболее часто узел Малой мощности находится в, слушают или состояние сна для данного тайм-аута опроса. Время, в течение которого узел находится в, слушает, состояние определяется получить окном для каждого запроса опроса, выполненного узлом Малой мощности. Узел Малой мощности проводит остающееся время во сне, неактивном и состояние передачи. Однако время, проведенное в состоянии передачи, незначительно.

Этот результат показывает график времени жизни узла Малой мощности, когда функция тайм-аута опроса для получает значения окна 120 миллисекунд, 200 миллисекунд и 255 миллисекунд.

Результаты в выведенном графике приходят к заключению, что время жизни узла Малой мощности прямо пропорционально тайм-ауту опроса. Этот график может быть воспроизведен с помощью скрипта helperBLEMeshLPNLifetimeVSPolltimeout.

В этом примере показано, как создать и сконфигурировать мультиузел сеть mesh Bluetooth и затем анализировать обмен сообщениями mesh через статистические данные, собранные в каждом узле в сети. Этот пример также позволяет вам анализировать поведение и преимущества Дружбы. Сеть mesh Bluetooth симулирована с несколькими Друг и пары узла Малой мощности, чтобы вычислить время, проведенное каждым узлом на различных состояниях. Выведенный график среднего времени, проведенного каждым узлом в различных состояниях, показывает, что узлы Малой мощности всегда расходуют меньше энергии путем проведения большего количества времени в состоянии сна. Кроме того, можно также экспериментировать путем варьирования различных настроек, таких как получить окно и опросить значения тайм-аута как показано в 'Узле Малой мощности: Время жизни по сравнению с графиком' Тайм-аута Опроса.

Приложение

Пример использует эти функции:

Пример использует этих помощников:

Выбранная библиография

  1. Специальная группа (SIG) Bluetooth. "Спецификация Ядра Bluetooth". Версия 5.0. https://www.bluetooth.com/.

  2. Специальная группа (SIG) Bluetooth. "Профиль Mesh Bluetooth". Версия 1.0. https://www.bluetooth.com/.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте