Этот пример показывает энергетическое профилирование в сети mesh Bluetooth, пользующейся Библиотекой Communications Toolbox™ для Протокола Bluetooth®. Одной из основных функций mesh Bluetooth является своя пригодность для малой мощности и ограниченных энергией узлов. Этот пример моделирует энергетическое профилирование Малой мощности, узлы mesh Bluetooth с батарейным питанием, которые реализуют опцию энергосбережения под названием Дружба. Энергия вычисляется на основе времени, профилируемого в различных состояниях (передача, послушайте, спите и бездействуйте) каждого узла в сети mesh. Выведенные результаты показывают, что узлы Малой мощности всегда расходуют меньше энергии путем проведения большего количества времени в состоянии сна, таким образом приведения к энергосбережению и увеличенное время жизни.
Спецификация [1] Ядра Bluetooth включает низкую энергетическую версию для беспроводных персональных сетей области с низкой ставкой, называемых Bluetooth низкой энергией (BLE) или Умным Bluetooth. Стек BLE состоит из: Типовой Профиль Атрибута (GATT), Протокол Атрибута (ATT), Протокол менеджера безопасности (SMP), Управление Логической ссылкой и Протокол (L2CAP) Адаптации, Слой Link (LL) и Физический уровень. BLE был добавлен к стандарту для низких энергетических устройств, генерирующих небольшие количества данных, такие как предупреждения уведомления, используемые в приложениях как домашняя автоматизация, здравоохранение, фитнес и Интернет вещей (IoT).
Профиль mesh Bluetooth [2] задает основные требования, чтобы реализовать сетевые решения mesh для BLE. Стек mesh расположен сверху базовой спецификации BLE и состоит из: Слой Модели, Слой Модели Основы, доступ к Слою, Верхнему Транспортному уровню, Более низкому Транспортному уровню, Слою сети и Слою Несущей. Организация сети mesh Bluetooth позволяет сквозной коммуникации в крупномасштабных сетях устройства поддержать приложения как умная подсветка, промышленная автоматизация, организация сети датчика, отслеживание актива и много других решений IoT.
Стек mesh:
Фигура ниже показов mesh Bluetooth складывает по рекламной несущей.
Слой модели: Этот слой задает модели, сообщения и утверждает требуемый для пользовательских сценариев. Например, чтобы изменить состояние света к На или Прочь, Типовое сообщение Набора OnOff из модели Generic OnOff используется. Этот пример поддерживает только две модели, Типовой OnOff и Легкую Легкость с набором и сообщениями о состоянии.
Слой Модели основы: Этот слой задает модели, сообщения и утверждает требуемый сконфигурировать и управлять сетью mesh. Этот слой используется, чтобы сконфигурировать элемент, опубликовать и адреса подписки. Этот пример принимает, что узел сконфигурирован со всеми адресами.
Доступ к Слою: Этот слой задает интерфейс к верхнему транспортному уровню и формату данных приложения. Это также управляет шифрованием и дешифрованием данных приложения в верхнем транспортном уровне. Этот пример поддерживает повторные передачи и подтверждения на этом слое. Можно сконфигурировать слой доступа с помощью helperBLEMeshAccessLayer.
Верхний Транспортный уровень: функциональность верхнего транспортного уровня включает шифрование, дешифрование и аутентификацию данных приложения и спроектирована, чтобы обеспечить конфиденциальность сообщений доступа. Этот слой также ответственен за генерацию сообщений транспортного контроля (Дружба и heartbeat) внутренне и передает те сообщения коллеге верхний транспортный уровень. Эти сообщения шифруются и аутентифицируются в слое сети. В этом шифровании в качестве примера не поддержаны дешифрование, аутентификация и сообщения heartbeat.
Более низкий Транспортный уровень: функциональность более низкого транспортного уровня включает сегментацию и повторную сборку верхних сообщений транспортного уровня в несколько более низких сообщений транспортного уровня, чтобы передать большие верхние сообщения транспортного уровня к другим узлам. Этот слой также задает друга очередь, используемая Другом узел, чтобы хранить более низкие сообщения транспортного уровня для узла Малой мощности. В этом примере, сегментации и повторной сборке не поддержан. В этом примере реализованы и верхнее и более низкие транспортные уровни, когда один транспортный уровень возражает helperBLEMeshTransportLayer.
Слой сети: Этот слой задает шифрование, дешифрование и аутентификацию более низких сообщений транспортного уровня. Это передает более низкие сообщения транспортного уровня по слою несущей и передает сообщения mesh, когда 'Релейная' опция активирована. Это также задает кэш сообщения, содержащий все недавно замеченные сетевые сообщения. Если полученное сообщение, как находят, находится в кэше, то это отбрасывается. Кэш сообщения используется релейными узлами (узлы, в которых 'Релейная' опция активирована). В этом шифровании в качестве примера, дешифровании и аутентификации не поддержан. Можно сконфигурировать слой сети с помощью helperBLEMeshNetworkLayer.
Слой несущей: Этот слой является интерфейсом между стеком mesh Bluetooth и базовой спецификацией BLE. Это также ответственно за создание сети mesh путем настройки узлов mesh. Этот пример принимает, что все узлы уже настраиваются в сеть mesh. Два типа несущих, поддержанных mesh Bluetooth, рекламируют несущая GATT и несущая. Этот пример рассматривает только рекламную несущую.
Стек ядра BLE:
Типовой профиль доступа: Этот профиль задает типы рекламных данных (AD) для переноса сообщений mesh по рекламной несущей. Этот пример поддерживает "Тип AD" сообщения Mesh, и это используется в обмене сообщениями слоя сети между узлами mesh.
Слой ссылки: Этот слой задает роли Вещательной компании и Наблюдателя для обмена сообщениями между узлами в сети mesh Bluetooth. В роли Вещательной компании всегда дает объявление узел, тогда как в роли Наблюдателя узел всегда сканирует для рекламодателей. Каждый узел в сети mesh переключается между этими двумя ролями, чтобы служить узлом mesh Bluetooth. Можно сконфигурировать Слой Ссылки с помощью helperBLEMeshLLGAPBearer.
Беспроводная сеть датчика (WSN), как известно, высоко, ресурс ограничил класс сетей, где потребление энергии является одной из основных проблем. Большинство датчиков является устройствами c батарейным питанием. В WSNs узлы датчика развертываются в крупном масштабе, и таким образом это невозможно заменить батареи узлов датчика. Поэтому каждый узел датчика должен использовать энергосберегающим образом, чтобы выжить в течение долгого времени. Mesh Bluetooth задает функциональность Дружбы для ограниченных устройств энергии. Транспортный уровень (верхний и ниже) в стеке mesh Bluetooth в основном ответственен за функциональность Дружбы. Это задает два типа узлов.
Узел Малой мощности: узел Малой мощности имеет ограниченный источник питания и действует в уменьшаемых рабочих циклах получателя. Этот узел переключается на ON, утверждают только, чтобы получить пакеты данных.
Друг узел: Друг узел активирует Друга опция и хранит сообщения, предназначенные для узлов Малой мощности. Этот узел передает сообщения только, когда узлы Малой мощности явным образом запрашивают. Этот пример поддерживает Дружбу между одним Другом и одним узлом Малой мощности.
Дружба:
Дружба устанавливается между узлами Друга и Малой мощности. Узел Малой мощности инициирует Дружбу, как только это настраивается в сеть mesh Bluetooth. Этот пример принимает, что, Дружба уже устанавливается между узлами Друга и Малой мощности. После того, как Дружба устанавливается, Друг, узел хранит сообщения от имени узла Малой мощности в друге очередь. Механизм опроса используется в оптимизации потребления энергии в узлах Малой мощности. Обмен сообщениями mesh Bluetooth между узлом Малой мощности и Другом узел проиллюстрирован в этом рисунке:
Параметры синхронизации, используемые в Дружбе:
Получите задержку: Этот параметр задает время между узлом Малой мощности, отправляющим запрос и прислушивающийся к ответу от Друга узел. Узел Малой мощности находится в состоянии сна на полное время получить задержки.
Окно Receive: Этот параметр задает время, в течение которого узел Малой мощности прислушивается к ответу от Друга узел. Узел Малой мощности находится в состоянии сканирования на полное время, получают окно.
Тайм-аут опроса: Этот параметр задает максимальное время между двумя последовательными запросами от узла Малой мощности. В тайм-ауте опроса, если Друг узлу или узлу Малой мощности не удается получить запрос или ответ от другого узла, отключена Дружба.
Периодически, узлы Малой мощности опрашивает Друга узлы относительно любых сообщений данных, хранивших в друге очередь. После опроса Друга узел входят узлы Малой мощности, состояние сна на время получают задержку. Друг узел использует получить задержку, чтобы подготовить ответ к узлу Малой мощности. После получить задержки Друг узел отвечает на узел Малой мощности, прежде чем сумма получит задержку и получит окно.
% Check if the 'Communications Toolbox Library for the Bluetooth Protocol' % support package is installed or not. commSupportPackageCheck('BLUETOOTH');
Этот пример позволяет вам создавать и конфигурировать сеть mesh Bluetooth с различными типами узлов, такими как Конечные узлы, Релейные узлы, Друг узлы, узлы Малой мощности. Этот пример инициирует и передает демонстрационное сообщение mesh от сконфигурированного исходного узла до сконфигурированного целевого узла. Если тот же исходный узел передает сообщения mesh к нескольким целевым узлам, то все целевые узлы формируют группу, и сообщение mesh передается к адресу группы. Так, все узлы в той группе получат сообщение mesh. Наряду с сообщениями mesh, порожденными в исходном узле, сообщениями Дружбы также обмениваются между сконфигурированными узлами Друга и Малой мощности. Во время симуляции каждый узел вычисляет время, проведенное в различных состояниях (передача, послушайте, бездействуйте и спите) узла. Это помогает в вычислении времени жизни узла в сети.
Цели:
Создайте и сконфигурируйте сеть mesh
Визуализируйте лавинную рассылку сообщения
Анализируйте поведение Дружбы в сети mesh Bluetooth
Профилируйте энергию, расходуемую каждым узлом в сети mesh Bluetooth
Настройка:
Источник и целевые пары узла
Значение TTL для пакета, порожденного в каждом источнике
Друг и пары узла Малой мощности
Получите окно и опросите значение тайм-аута относительно каждых пар узла Друга и Малой мощности
Релейные узлы
Результаты:
Время, проведенное в различных состояниях (передача, послушайте, спите и бездействуйте) каждым узлом в сети mesh Bluetooth
Среднее время проведено каждым типом (Реле, Конец, Друг и узел Малой мощности) узла в различных состояниях
Создайте и сконфигурируйте сеть mesh:
Можно использовать helperBLEMeshNode и helperBLEMeshVisualizeNetwork для создания и визуализации сети mesh соответственно. В helperBLEMeshVisualizeNetwork, NumberOfNodes
задайте общее количество узлов в сети, тогда как Positions
задайте соответствующие положения узла. Значение по умолчанию для NodePositionType
'Сетка'. Можно также задать собственную сеть путем конфигурирования значения NodePositionType
к 'UserInput' и положениям узла к Positions
.
% Reset the random number generator seed sprev = rng('default'); % Number of nodes in the Bluetooth mesh network totalNodes = 55; % Initialize "meshNodes" with an object of type helperBLEMeshNode meshNodes(1, totalNodes) = helperBLEMeshNode(); for nodeIdx = 1:totalNodes % Create an object for a mesh node meshNode = helperBLEMeshNode(); % Unique identifier for a mesh node meshNode.Identifier = nodeIdx; meshNodes(nodeIdx) = meshNode; end % Load node positions load('bleMeshNodesPositions.mat'); % Visualization object for Bluetooth mesh network meshNetworkGraph = helperBLEMeshVisualizeNetwork(); meshNetworkGraph.NumberOfNodes = totalNodes; meshNetworkGraph.NodePositionType = 'UserInput'; meshNetworkGraph.Positions = bleMeshNodesPositions; meshNetworkGraph.VicinityRange = 25; meshNetworkGraph.Title = 'Energy Profiling: Bluetooth Mesh Network';
Сконфигурируйте параметры симуляции: можно задать количество источника и целевых пар в сети с помощью sourceDestinationPairs
. Можно задать количество пар узла Друга и Малой мощности в сети с помощью friendLowPowerPairs
. Количество релейных узлов в сети задано с помощью relayNodeIDs
. Объекты узла mesh, имеющие отношение к каждому узлу mesh, заданы в meshNodes
. Пути, полученные для источника и целевых пар, хранятся в paths
.
% Simulation time, in milliseconds simulationTime = 6000; % Enable/disable visualization enableVisualization = true; % Enable/disable the animation in the visualization. If the % "enableVisualization" is set to false, "enableAnimation" is not % considered. enableAnimation = false; % Source destination pairs - sample mesh message originates at the source % node and delivered to the 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]; % Time to live (TTL) value for each source and destination pair in the % range [0 127] ttl = [20 23 35 21 23 30 22 20 23 35 21 23 30 22]; % Friend Low Power pairs - assuming that Friendship is established between % the configured Friend and Low Power node pairs friendLowPowerPairs = [16 52]; % Receive window (in milliseconds) for each Friend and Low Power node pairs % (>= 120 milliseconds and <= 255 milliseconds) receiveWindow = 180; % Poll timeout (in seconds) for each Friend and Low Power node pairs % (>= 2 seconds and <= 95.9 hours) pollTimeout = 20; % 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 with the above configuration [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 of each node
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
Среднее время, проведенное каждым типом узла в различных состояниях, вычислено и построено ниже. Результаты приходят к заключению, что узлы Малой мощности тратят наиболее часто в состоянии сна, приводящем к энергосбережению и увеличенное время жизни.
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 функции периодически. Время передачи в Конечном узле зависит от трафика приложения. Точно так же время передачи в узле Малой мощности под влиянием сконфигурированного значения тайм-аута опроса.
Вычислите время жизни узла малой мощности:
Можно использовать helperBLEMeshNodeLifetime, чтобы вычислить время жизни узла в сети mesh Bluetooth в конце симуляции. Объект узла mesh типа helperBLEMeshNode дан как вход к helperBLEMeshNodeLifetime наряду с simulationTime
вычислить время жизни узла. Энергетические параметры аппаратно-зависимы, которые используются, чтобы вычислить время жизни узла. Можно обновить соответствующие аппаратные параметры в функции helperBLEMeshNodeLifetime.
% Fetch one of the Low Power nodes for calculating the lifetime meshNode = meshNodes(52); lifeTime = helperBLEMeshNodeLifetime(meshNode, simulationTime); fprintf('Lifetime of the node %d is: %.4f days.\n', meshNode.Identifier, lifeTime);
Configured hardware parameters for the battery capacity of 1200 mAh 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 (ms) _________________ _________ Transmission time 2.304 Listen time 720 Sleep time 5166.5 Idle time 103 Lifetime of the node 52 is: 34.8927 days.
Время жизни узла малой мощности путем варьирования тайм-аута опроса
Время жизни узла Малой мощности зависит от времени, в течение которого узел находится в, слушают состояние. Наиболее часто узел Малой мощности находится в, слушают или состояние сна для данного тайм-аута опроса. Время, в течение которого узел находится в, слушает, состояние определяется получить окном для каждого запроса опроса, выполненного узлом Малой мощности. Узел Малой мощности проводит остающееся время во сне, неактивном и состояние передачи. Однако время, проведенное в состоянии передачи, незначительно.
Этот результат показывает график времени жизни узла Малой мощности, когда функция тайм-аута опроса для получает значения окна 120 миллисекунд, 200 миллисекунд и 255 миллисекунд.
Результаты в выведенном графике приходят к заключению, что время жизни узла Малой мощности прямо пропорционально тайм-ауту опроса. Этот график может быть воспроизведен с помощью скрипта helperBLEMeshLPNLifetimeVSPolltimeout.
В этом примере показано, как создать и сконфигурировать мультиузел сеть mesh Bluetooth и затем анализировать обмен сообщениями mesh через статистические данные, собранные в каждом узле в сети. Этот пример также позволяет вам анализировать поведение и преимущества Дружбы. Сеть mesh Bluetooth симулирована с несколькими Друг и пары узла Малой мощности, чтобы вычислить время, проведенное каждым узлом на различных состояниях. Выведенный график среднего времени, проведенного каждым узлом в различных состояниях, показывает, что узлы Малой мощности всегда расходуют меньше энергии путем проведения большего количества времени в состоянии сна. Кроме того, можно также экспериментировать путем варьирования различных настроек, таких как получить окно и опросить значения тайм-аута как показано в 'Узле Малой мощности: Время жизни по сравнению с графиком' Тайм-аута Опроса.
Функции, использованные в этом примере:
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
helperBLEMeshQueue: Создайте объект для функциональности очереди mesh 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 /