Этот пример показывает энергетическое профилирование различных типов узлов в сети mesh Bluetooth®, пользующейся Библиотекой Communications Toolbox™ для Протокола Bluetooth®. Энергия вычисляется на основе времени, профилируемого Конечными узлами, узлы Малой мощности (LPNs), Друг, узлы и Релейные узлы в передаче, слушают, спит, и состояние ожидания. Используя этот пример, вы можете:
Создайте и сконфигурируйте сеть mesh Bluetooth
Визуализируйте удар обмена сообщениями mesh на энергетической эффективности Конечного узла, LPN, Друга узел и Релейный узел
Наблюдайте потребление энергии узлов mesh путем варьирования количества целевой источником пары, Друг пара узла-LPN и трафик приложения.
Оцените время жизни узла на основе специфичных для оборудования энергетических параметров
Измените специфичные для оборудования энергетические параметры, чтобы удовлетворить вашим требованиям
Исследуйте удар тайм-аута опроса и получите размер окна на времени жизни узла
Симуляция вычисляет время жизни LPN с заданной настройкой и специфичными для оборудования энергетическими параметрами. Результаты подтверждают это, LPN всегда расходуют меньше энергии путем проведения большего количества времени во сне, приведения к энергосбережению и увеличенное время жизни.
Спецификация [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 Объединяется в сеть.
Основные цели этого примера:
Создайте и сконфигурируйте сеть 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 к нескольким целевым узлам исходные узлы передают сообщения к общему адресу группы. Во время симуляции Друг узлы и 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 путем варьирования тайм-аута опроса и получить значения окна.
Пример использует эти функции:
bleLLAdvertisingChannelPDUConfig
: Создайте объект настройки для Слоя Ссылки BLE, рекламируя PDU канала
bleLLAdvertisingChannelPDU
: Сгенерируйте Слой Ссылки BLE, рекламируя PDU канала
bleLLAdvertisingChannelPDUDecode
: Декодируйте Слой Ссылки BLE, рекламируя PDU канала
Пример использует этих помощников:
helperBLEMeshNode: Создайте объект для узла mesh Bluetooth
helperBLEMeshAccessLayer: Создайте объект для функциональности слоя доступа к mesh Bluetooth
helperBLEMeshNetworkLayer: Создайте объект для функциональности слоя сети mesh Bluetooth
helperBLEMeshTransportLayer: Создайте объект для транспорта mesh Bluetooth (верхний и ниже) функциональность слоя
helperBLEMeshLowPowerNode: Создайте объект для функциональности узла Малой мощности mesh Bluetooth
helperBLEMeshFriendNode: Создайте объект для Друга mesh Bluetooth функциональность узла
helperBLEMeshFriendTimer: Создайте объект для друга mesh Bluetooth таймер
helperBLEMeshLLGAPBearer: Создайте объект для BLE LL рекламная функциональность несущей
helperBLEMeshAppGenericPDU: Сгенерируйте типовой PDU mesh Bluetooth
helperBLEMeshAppGenericPDUDecode: Декодируйте типовой PDU mesh Bluetooth
helperBLEMeshLightnessPDU: Сгенерируйте PDU легкости mesh Bluetooth
helperBLEMeshLightnessPDUDecode: Декодируйте PDU легкости mesh Bluetooth
helperBLEMeshAccessPDU: Сгенерируйте PDU доступа к mesh Bluetooth
helperBLEMeshAccessPDUDecode: Декодируйте PDU доступа к mesh Bluetooth
helperBLEMeshNetworkPDU: Сгенерируйте сеть PDU mesh Bluetooth
helperBLEMeshNetworkPDUDecode: Декодируйте сеть PDU mesh Bluetooth
helperBLEMeshTransportControlMessage: Сгенерируйте сообщение транспортного контроля mesh Bluetooth
helperBLEMeshTransportControlMessageDecode: Декодируйте сообщение транспортного контроля mesh Bluetooth
helperBLEMeshTransportDataMessage: Сгенерируйте транспортное сообщение данных о mesh Bluetooth
helperBLEMeshTransportDataMessageDecode: Декодируйте транспортное сообщение данных о mesh Bluetooth
helperBLEMeshGAPDataBlock: Сгенерируйте рекламные данные с сетью PDU mesh Bluetooth
helperBLEMeshGAPDataBlockDecode: Декодируйте рекламные данные с сетью PDU mesh Bluetooth
helperBluetoothQueue: Создайте объект для функциональности очереди Bluetooth
helperBLEMeshRetransmissions: Создайте объект для повторных передач в mesh Bluetooth
helperBLEMeshNetworkChannelMessage: Получите сообщение от канала сети mesh Bluetooth
helperBLEMeshPath: Возвратите путь между источником и местом назначения в сети mesh Bluetooth
helperBLEMeshVicinityNodes: Получите узлы близости данного узла
helperBLEMeshGraphCursorCallback: Отобразитесь статистические данные узла по мыши наводят действие
helperBLEMeshVisualizeNetwork: Создайте объект для mesh Bluetooth сетевая визуализация
helperBLEMeshSimulation: Симулируйте сеть mesh Bluetooth
helperBLEMeshNodesStatistics: Соберите статистические данные в каждом узле в таблицу
helperBLEMeshNodeLifetime: Вычислите время жизни узла mesh Bluetooth
helperBLEMeshNodeAverageTime: Вычислите среднее время, проведенное в различных состояниях узлами mesh Bluetooth
helperBLEMeshLPNLifetimeVSPolltimeout: Скрипт, чтобы вычислить время жизни Bluetooth поймал в сети узел Малой мощности для различного тайм-аута опроса и получает значения окна
helperBLEPrependAccessAddress: предварительно ожидайте PDU с указателем
Специальная группа (SIG) Bluetooth. "Спецификация Ядра Bluetooth". Версия 5.0. https://www.bluetooth.com/.
Специальная группа (SIG) Bluetooth. "Профиль Mesh Bluetooth". Версия 1.0. https://www.bluetooth.com/.