В этом примере показано профилирование энергии различных типов узлов в ячеистой сети Bluetooth ® с использованием библиотеки Communications Toolbox™ Library для протокола Bluetooth ®. Энергия вычисляется на основе времени, профилированного конечными узлами, узлами низкой мощности (LPN), узлами друга и узлами ретрансляции в состоянии передачи, прослушивания, сна и ожидания. В этом примере можно выполнить следующие действия.
Создание и настройка ячеистой сети Bluetooth
Визуализация влияния обмена сообщениями ячеистой сети на энергетическую производительность узла End, LPN, узла Friend и узла Relay
Наблюдайте за энергопотреблением узлов ячеистой сети, изменяя количество пар «источник-назначение», «друг-узел-LPN» и трафик приложения.
Оценка срока службы узла на основе параметров энергии, специфичных для оборудования
Изменение параметров питания оборудования в соответствии с требованиями
Изучение влияния тайм-аута опроса и размера окна приема на время жизни узла
При моделировании рассчитывается срок службы LPN с заданной конфигурацией и параметрами энергии, специфичными для оборудования. Результаты подтверждают, что LPN всегда потребляет меньше энергии, проводя больше времени во сне, что приводит к экономии энергии и увеличению срока службы.
Спецификация ядра 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.
Основными целями этого примера являются:
Создание и настройка ячеистой сети Bluetooth
Визуализация переполнения сообщений
Анализ поведения дружбы в ячеистой сети Bluetooth
Профилировать энергию, потребляемую каждым узлом в ячеистой сети Bluetooth
% Check if the 'Communications Toolbox Library for the Bluetooth Protocol' % support package is installed or not. commSupportPackageCheck('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, изменяя время ожидания опроса и получая значения окна.
В примере используются следующие функции:
bleLLAdvertisingChannelPDUConfigСоздание объекта конфигурации для рекламного канала PDU уровня BLE Link
bleLLAdvertisingChannelPDU: Создание рекламного канала PDU канального уровня BLE
bleLLAdvertisingChannelPDUDecodeДекодирование рекламного канала PDU канального уровня BLE
В примере используются следующие помощники:
helperBLEMeshNode: Создание объекта для узла сетки Bluetooth
helperBLEMeshStartLayer: Создание объекта для функциональных возможностей уровня доступа к сетке Bluetooth
helperBLEMeshStartLayer: Создание объекта для функции уровня ячеистой сети Bluetooth
helperBLEMeshTransportLayer: Создание объекта для функций переноса сетки Bluetooth (верхний и нижний)
helperBLEMeshLowPowerNode: Создание объекта для функциональных возможностей узла Bluetooth mesh Low Power
helperBLEMeshFriendNode: Создание объекта для функциональности узла Bluetooth mesh Friend
helperBLEMeshFriendTimer: Создание объекта для таймера друга сети Bluetooth
helperBLEMeshLLLGAPBearer: Создание объекта для функциональности рекламного носителя BLE LL
helperBLEMeshAppGenericPDU: Создание общего PDU сетки Bluetooth
helperBLEMeshAppGenericPDUDecode: Декодирование общего PDU сетки Bluetooth
helperBLEMeshLightnessPDU: Создание Bluetooth mesh lightness PDU
helperBLEMeshLightnessPDUDecode: Декодирование Bluetooth mesh lightness PDU
helperBLEMeshStartPDU: Создание PDU доступа к ячеистой сети Bluetooth
helperBLEMeshStartPDUDecode: Декодирование PDU доступа к сетке Bluetooth
helperBLEMeshStartPDU: Создание PDU ячеистой сети Bluetooth
helperBLEMeshStartPDUDecode: Декодирование PDU ячеистой сети Bluetooth
helperBLEMeshTransportControlMessage: создание сообщения управления переносом сетки Bluetooth
helperBLEMeshTransportControlStartDecode: Декодирование сообщения управления переносом ячеистой сети Bluetooth
helperBLEMeshTransportDataMessage: Создание сообщения данных транспорта сетки Bluetooth
helperBLEMeshTransportDataStartDecode: Декодирование сообщения данных переноса ячеистой сети Bluetooth
helperBLEMeshGAPDataBlock: Создание рекламных данных с помощью Bluetooth ячеистой сети PDU
helperBLEMeshGAPDataBlockDecode: Декодирование рекламных данных с помощью Bluetooth ячеистой сети PDU
helperBluetoothQueue: Создание объекта для функциональности очереди Bluetooth
helperBLEMeshRetransmissions: Создание объекта для повторных передач в сетке Bluetooth
helperBLEMeshStartStartMessage: Получение сообщения от канала ячеистой сети Bluetooth
helperBLEMeshPath: Возврат пути между источником и назначением в ячеистой сети Bluetooth
helperBLEMeshThedNodes: Получение узлов окрестности данного узла
helperBLEMeshGraphCursorCallback: Отображение статистики узла при наведении курсора мыши
helperBLEMeshVisualityNetwork: Создание объекта для визуализации ячеистой сети Bluetooth
helperBLEMeshSimulation: моделирование ячеистой сети Bluetooth
helperBLEMeshNode Статистика: Сбор статистики на каждом узле в таблицу
helperBLEMeshNaseLifetime: Время жизни вычислительного узла сети Bluetooth
helperBLEMeshNaseAvereyTime: среднее время вычисления узлов сетки Bluetooth в различных состояниях
helperBLEMeshLPNLifedVSPoltimeout: Сценарий для вычисления времени жизни узла Bluetooth mesh Low Power для различных тайм-аутов опроса и получения значений окон
helperBLEPrependStartAddress: добавление PDU с адресом доступа
Группа специальных интересов Bluetooth (SIG). «Спецификация ядра Bluetooth». Версия 5.0. https://www.bluetooth.com/.
Группа специальных интересов Bluetooth (SIG). «Профиль сетки Bluetooth». Версия 1.0. https://www.bluetooth.com/.