exponenta event banner

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

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

  • Создание и настройка ячеистой сети Bluetooth

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

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

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

  • Изменение параметров питания оборудования в соответствии с требованиями

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

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

Стек сетки Bluetooth

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

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

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

Дополнительные сведения об устройствах, узлах и дружбе в ячеистой сети Bluetooth см. в разделе Сетевая сеть Bluetooth.

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

  1. Создание и настройка ячеистой сети Bluetooth

  2. Визуализация переполнения сообщений

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

  4. Профилировать энергию, потребляемую каждым узлом в ячеистой сети Bluetooth

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

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

Моделирование профилирования энергии сетки Bluetooth

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

Для создания и визуализации ячеистой сети используйте классы helperBLEMeshNode и helperBLEMeshVisualityNetwork. Укажите количество узлов (NumberofNodes) и тип позиции узла (NodePositionType) в функции helperBLEMeshVisualityNetwork. По умолчанию используется позиция узла «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 переменная. Чтобы указать узел друга и пары LPN, используйте friendLowPowerPairs переменная. Чтобы указать узлы ретрансляции в сети, используйте relayNodeIDs переменная. Настройте объекты узла сетки, связанные с каждым узлом сетки. 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);

Результаты моделирования

В каждом узле ячеистой сети моделирование фиксирует эти статистические данные.

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

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

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

  • Время простоя

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

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

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

  • Количество сообщений, отброшенных на узле

  • Количество сообщений, полученных с ошибками проверки циклическим избыточным кодом (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             

На этом графике показано среднее время, затрачиваемое узлами сети различных типов в различных состояниях. Результаты приходят к выводу, что 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          

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

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

Рассчитать срок службы LPN:

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

% 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 с помощью функции helperBLEMeshLPNLifedVSPolltimeout.

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

В этом примере показано, как создать и настроить многорежимную ячеистую сеть Bluetooth и проанализировать обмен сообщениями в сети. Этот пример также позволяет проанализировать поведение и преимущества узла Дружба между другом и LPN. Для вычисления времени, затраченного каждым узлом на различные состояния, узел ячеистой сети Bluetooth моделируется несколькими парами узлов «Друг» и «Низкое энергопотребление». График среднего времени, проведенного каждым узлом в различных состояниях, показывает, что ЛПС всегда потребляют меньше энергии, тратя больше времени в состоянии сна. Вы можете дополнительно изучить профиль энергии LPN, изменяя время ожидания опроса и получая значения окна.

Приложение

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

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

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

  1. Группа специальных интересов Bluetooth (SIG). «Спецификация ядра Bluetooth». Версия 5.0. https://www.bluetooth.com/.

  2. Группа специальных интересов Bluetooth (SIG). «Профиль сетки Bluetooth». Версия 1.0. https://www.bluetooth.com/.

Связанные темы