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

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

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

  • Визуализируйте удар обмена сообщениями mesh на энергетической эффективности Конечного узла, LPN, Друга узел и Релейный узел

  • Наблюдайте потребление энергии узлов mesh путем варьирования количества целевой источником пары, Друг пара узла-LPN и трафик приложения.

  • Оцените время жизни узла на основе специфичных для оборудования энергетических параметров

  • Измените специфичные для оборудования энергетические параметры, чтобы удовлетворить вашим требованиям

  • Исследуйте удар тайм-аута опроса и получите размер окна на времени жизни узла

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

Стек Mesh Bluetooth

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

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

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

Для получения дополнительной информации об устройствах, узлы и Дружба в сети mesh Bluetooth, видят, что Mesh Bluetooth Объединяется в сеть.

Основные цели этого примера:

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

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

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

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

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

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

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

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

Чтобы создать и визуализировать сеть mesh, используйте helperBLEMeshNode и helperBLEMeshVisualizeNetwork классы. Задайте количество узлов (NumberofNodes) и тип положения узла (NodePositionType) в функции helperBLEMeshVisualizeNetwork. Типом по умолчанию положения узла является 'Сетка'. Чтобы задать вашу собственную сеть, установите значение NodePositionType к 'UserInput' и положениям узла к Positions.

% Set random number generator seed to 'default'
sprev = rng('default');

% Specify the number of nodes in the mesh network
totalNodes = 55;

% Initialize 'bleMeshNodes' vector with objects of type helperBLEMeshNode
meshNodes(1, totalNodes) = helperBLEMeshNode();

% Configure each mesh node with unique identifier
for nodeIdx = 1:totalNodes
    meshNode = helperBLEMeshNode();
    meshNode.Identifier = nodeIdx;
    meshNodes(nodeIdx) = meshNode;
end

% Load node positions from the MAT file
load('bleMeshNodesPositions.mat');

% Create and Configure the visualization object for Bluetooth mesh network
meshNetworkGraph = helperBLEMeshVisualizeNetwork();
meshNetworkGraph.NumberOfNodes = totalNodes;

% Set the type of the node position allocation as 'Grid' or 'UserInput'
meshNetworkGraph.NodePositionType = 'UserInput';

% Set node positions based on number of nodes (applicable for 'UserInput'),
% in meters
meshNetworkGraph.Positions = bleMeshNodesPositions;

% Set vicinity range (in meters) based on node positions, in meters
meshNetworkGraph.VicinityRange = 25;

% Set title to the network visualization
meshNetworkGraph.Title = 'Energy Profiling in Bluetooth Mesh Network';

Задайте количество источника и целевых пар при помощи sourceDestinationPairs переменная. Чтобы задать Друга узел и пары LPN, используйте friendLowPowerPairs переменная. Чтобы задать Релейные узлы в сети, используйте relayNodeIDs переменная. Сконфигурируйте объекты узла mesh, связанные с каждым узлом mesh. paths переменная хранит пути, полученные для каждого источника и целевой пары.

% Specify the simulation time (in milliseconds)
simulationTime = 6000;

% Enable or disable visualization
enableVisualization = true;

% Enable or disable the animation in the visualization. If
% "enableVisualization" is set to false, the simulation does not considers
% "enableAnimation".
enableAnimation = false;

% Specify the source and destination pairs. Source node transmits sample
% mesh message to 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];

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

% Specify the Friend node and LPN
friendLowPowerPairs = [16 52];

% Specify the receive window (in milliseconds) for each Friend and LPN
% pair. This value is in the range [120, 255]
receiveWindow = 180;

% Specify the poll timeout (in seconds) for each Friend and LPN pair. The
% value is in the range [2 seconds, 95.9 hours].
pollTimeout = 20;

% Specify the 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
[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);

Результаты симуляции

В каждом узле mesh симуляция получает эти статистические данные.

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

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

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

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

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

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

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

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

  • Количество сообщений получено с отказами контроля циклическим избыточным кодом (CRC)

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

% Statistics for first five nodes
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             

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

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          

Симуляция состоит из одной передачи сообщения от исходного узла до целевого узла. Сконфигурируйте трафик между узлами mesh при помощи функции pushModelMessage периодически. Время передачи в Конечном узле зависит от трафика приложения. Время передачи в LPN зависит от значения тайм-аута опроса.

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

Вычислите время жизни LPN:

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

% Fetch one of the Low Power nodes for calculating the lifetime
meshNode = meshNodes(52);
lifeTime = helperBLEMeshNodeLifetime(meshNode, simulationTime);
fprintf('Lifetime of node %d is %.4f days.\n', meshNode.Identifier, lifeTime);
Configured hardware parameters for a 1200 mAh battery 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 (milliseconds)
    _________________    ___________________

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

Lifetime of node 52 is 34.8927 days.

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

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

Визуализируйте удар тайм-аута опроса и получите окно на времени жизни LPN при помощи функции helperBLEMeshLPNLifetimeVSPolltimeout.

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

В этом примере показано, как создать и сконфигурировать мультиузел сеть mesh Bluetooth и анализировать обмен сообщениями в сети. Этот пример также позволяет вам анализировать поведение и преимущества Дружбы между Другом узел и LPN. Чтобы вычислить время, проведенное каждым узлом на различных состояниях, узел mesh Bluetooth симулирован с несколькими Друг и пары узла Малой мощности. График среднего времени, проведенного каждым узлом в различных состояниях, показывает, что LPNs всегда расходуют меньше энергии путем проведения большего количества времени в состоянии сна. Можно далее исследовать энергетическое профилирование LPN путем варьирования тайм-аута опроса и получить значения окна.

Приложение

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

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

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

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

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

Похожие темы