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

Этот пример показывает профилирование энергии различных типов узлов в сетевой сети Bluetooth ® с помощью библиотеки Communications Toolbox™ для протокола Bluetooth ®. Энергия вычисляется на основе времени, профилированного узлами End, узлами Low Степени (LPN), узлами Friend и узлами Relay в состоянии передачи, прослушивания, сна и простоя. Используя этот пример, можно:

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

  • Визуализируйте влияние обмена сообщениями mesh на энергетическую эффективность узла End, LPN, узла Friend и узла Relay

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

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

  • Измените аппаратные энергетические параметры в соответствии с вашими требованиями

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

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

Mesh Bluetooth

Спецификация ядра Bluetooth [1] включает версию Low Energy для низкоскоростных беспроводных персональных сетей, называемых Bluetooth low energy (BLE) или Bluetooth Smart. Стек BLE состоит из типового профиля атрибутов (GATT), протокола атрибутов (ATT), протокола менеджера безопасности (SMP), протокола управления логическими ссылками и адаптации (L2CAP), канального слоя (LL) и физического слоя. Группа специальных интересов (SIG) добавила BLE в стандарт Bluetooth для устройств с низким энергопотреблением, которые генерируют небольшие объемы данных, таких как оповещения об уведомлениях, используемые в таких приложениях, как домашняя автоматизация, здравоохранение, фитнес и Интернет вещей (IoT). Для получения дополнительной информации о стеке протоколов BLE смотрите Bluetooth Protocol Stack.

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

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

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

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

  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 на несколько узлов назначения, исходные узлы передают сообщения на общий адрес группы. Во время симуляции узлы Friend и LPN обмениваются сообщениями Friendship. Каждый узел вычисляет время, проведенное в различных состояниях (передача, прослушивание, простой и сон), и вычисляет его время жизни.

Чтобы создать и визуализировать mesh, используйте классы helperBLEMeshNode и helperBLEMeshVisualizeNetwork. Задайте число узлов (NumberofNodes) и тип положения узла (NodePositionType) в функции helperBLEMeshVisualizeNetwork. По умолчанию позицией узла является 'Grid'. Чтобы задать свою собственную сеть, задайте значение 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 переменная. Чтобы задать узел Friend и пары LPN, используйте friendLowPowerPairs переменная. Чтобы задать узлы Relay в сети, используйте relayNodeIDs переменная. Сконфигурируйте объекты узла сетки, связанные с каждым узлом сетки. The 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. Время передачи в узле End зависит от трафика приложения. Время передачи в LPN зависит от значения тайм-аута опроса.

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

Вычисление срока службы LPN:

Используйте функцию helperBLEMeshNodeLifetime, чтобы вычислить время жизни узла в сетевой сети 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 моделируется несколькими парами узлов Friend и Low Power. График среднего времени, потраченного каждым узлом в разных состояниях, показывает, что LPN всегда потребляют меньше энергии, проводя больше времени в состоянии сна. Можно дополнительно изучить энергетическое профилирование LPN, варьируя тайм-аут опроса и получая значения окна.

Приложение

В примере используются следующие функции:

В примере используются следующие помощники:

Избранная библиография

  1. Bluetooth Special Interest Group (SIG). Bluetooth Core Спецификации. Версия 5.0. https://www.bluetooth.com/.

  2. Bluetooth Special Interest Group (SIG). «Профиль Mesh Bluetooth». Версия 1.0. https://www.bluetooth.com/.

Похожие темы