Этот пример показывает профилирование энергии различных типов узлов в сетевой сети Bluetooth ® с помощью библиотеки Communications Toolbox™ для протокола Bluetooth ®. Энергия вычисляется на основе времени, профилированного узлами End, узлами Low Степени (LPN), узлами Friend и узлами Relay в состоянии передачи, прослушивания, сна и простоя. Используя этот пример, можно:
Создайте и сконфигурируйте сетевой mesh Bluetooth
Визуализируйте влияние обмена сообщениями mesh на энергетическую эффективность узла End, LPN, узла Friend и узла Relay
Наблюдайте энергопотребление узлов mesh путем изменения количества пар источник-адресат, пары узел-LPN Friend и трафика приложения.
Оцените срок службы узла на основе аппаратно-специфических энергетических параметров
Измените аппаратные энергетические параметры в соответствии с вашими требованиями
Исследуйте влияние тайм-аута опроса и размера окна приема на время жизни узла
Симуляция вычисляет время жизни LPN с заданным строением и аппаратно-специфическими энергетическими параметрами. Результаты подтверждают, что LPN всегда потребляют меньше энергии, проводя больше времени во сне, что приводит к энергосбережению и увеличению срока службы.
Спецификация ядра 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.
Основными целями этого примера являются:
Создайте и сконфигурируйте сетевой mesh Bluetooth
Визуализация затопления сообщений
Анализируйте поведение Дружбы в сетевом mesh Bluetooth
Профилируйте энергию, потребляемую каждым узлом в сетевом mesh Bluetooth
% Check if the 'Communications Toolbox Library for the Bluetooth Protocol' % support package is installed or not. commSupportPackageCheck('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, варьируя тайм-аут опроса и получая значения окна.
В примере используются следующие функции:
bleLLAdvertisingChannelPDUConfig
: Создайте объект строения для рекламного канала BLE Link Layer PDU
bleLLAdvertisingChannelPDU
: Сгенерируйте рекламный канал BLE Link Layer PDU
bleLLAdvertisingChannelPDUDecode
: Декодируйте рекламный канал BLE Link Layer PDU
В примере используются следующие помощники:
helperBLEMeshNode: Создайте объект для узла mesh Bluetooth
helperBLEMeshAccessLayer: создайте объект для функциональности слоя доступа к mesh Bluetooth
helperBLEMeshNetworkLayer: Создайте объект для функциональности слоя сети mesh Bluetooth
helperBLEMeshTransportLayer: создайте объект для функций переноса (верхнего и нижнего) слоя mesh Bluetooth
helperBLEMeshLowPowerNode: создайте объект для функциональности узла Bluetooth mesh Low Степени
helperBLEMeshFriendNode: создайте объект для функциональности узла Bluetooth mesh Friend
helperBLEMeshFriendTimer: создайте объект для таймера друга сетки Bluetooth
helperBLEMeshLLGAPBearer: Создайте объект для функциональности рекламного носителя BLE LL
helperBLEMeshAppGenericPDU: Сгенерируйте сетку Bluetooth mesh типовой PDU
helperBLEMeshAppGenericPDUDecode: Декодируйте сетку Bluetooth типовой PDU
helperBLEMeshLightnessPDU: Сгенерируйте Bluetooth mesh lightness PDU
helperBLEMeshLightnessPDUDecode: Декодируйте Bluetooth mesh lightness PDU
helperBLEMeshAccessPDU: Сгенерируйте Bluetooth mesh доступа к PDU
helperBLEMeshAccessPDUDecode: Декодируйте доступ к mesh Bluetooth PDU
helperBLEMeshNetworkPDU: Сгенерируйте сетевой mesh Bluetooth PDU
helperBLEMeshNetworkPDUDecode: Декодируйте Bluetooth mesh сетевом PDU
helperBLEMeshTransportControlMessage: Сгенерируйте сообщение управления переносом mesh Bluetooth
helperBLEMeshTransportControlMessageDecode: Декодируйте сообщение о переносе mesh Bluetooth
helperBLEMeshTransportDataMessage: Сгенерируйте сообщение Bluetooth mesh transport данных
helperBLEMeshTransportDataMessageDecode: Декодируйте сообщение Bluetooth mesh transport данных
helperBLEMeshGAPDataBlock: Создавайте рекламные данные с помощью Bluetooth mesh PDU
helperBLEMeshGAPDataBlockDecode: Декодируйте рекламные данные с помощью Bluetooth mesh PDU
helperBluetoothQueue: создайте объект для функциональности очереди Bluetooth
helperBLEMeshRetransmissions: Создайте объект для повторных передач в mesh Bluetooth
helperBLEMeshNetworkChannelMessage: Получать сообщение от сетевого канала mesh Bluetooth
helperBLEMeshPath: Верните путь между источником и местом назначения в сети mesh Bluetooth
helperBLEMeshVacinityNodes: Получите узлы окрестностей данного узла
helperBLEMeshGraphCursorCallback: отображение статистики узла по действию наведения мыши
helperBLEMeshVisualizeNetwork: Создайте объект для визуализации сетевой сетки mesh Bluetooth
helperBLEMeshSimulation: Симуляция сетевого mesh Bluetooth
helperBLEMeshNodesStatistics: Собирайте статистику на каждом узле в таблицу
helperBLEMeshNodeLifetime: Вычисление срока службы узла mesh Bluetooth
helperBLEMeshNodeAverageTime: Вычислите среднее время, проведенное в различных состояниях узлами mesh Bluetooth
helperBLEMeshLPNLifetimeVSPolltimeout: скрипт для вычисления времени жизни узла Bluetooth mesh Low Power для различного времени ожидания опроса и получения значений окна
helperBLEPrependAccessAddress: Предварите PDU с адресом доступа
Bluetooth Special Interest Group (SIG). Bluetooth Core Спецификации. Версия 5.0. https://www.bluetooth.com/.
Bluetooth Special Interest Group (SIG). «Профиль Mesh Bluetooth». Версия 1.0. https://www.bluetooth.com/.