Mesh Bluetooth в беспроводных сенсорных сетях

Этот пример демонстрирует затопление слоя сети в mesh Bluetooth ® с помощью Library™ Communication Toolbox для протокола Bluetooth ®. Используя этот пример, можно:

  • Создайте и сконфигурируйте сетевую сеть Bluetooth путем позиционирования узлов в сетке.

  • Укажите собственную сеть путем конфигурирования позиций узлов и типа распределения позиций узлов.

  • Классифицируйте и конфигурируйте узлы сетки как исходные, целевые, ретрансляционные и конечные узлы и наблюдайте, как затопление слоя сети помогает в обмене данными между источником и адресатом даже после отключения нескольких промежуточных узлов ретрансляции.

  • Визуализируйте поток пакетов от источника к месту назначения.

Пример также показывает, как выполнить симуляции Монте-Карло в mesh Bluetooth, чтобы получить числовые результаты (как и количество требуемых узлов ретрансляции, критические узлы ретрансляции между источником и местом назначения), усредненные в течение нескольких итераций.

Mesh Bluetooth

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

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

Bluetooth mesh слоя сети выполняет эти основные операции.

  • Передайте сообщения верхнего слоя по сети с помощью слоя носителя

  • Ретрансляция сообщений mesh

  • Реализация управляемого затопления для оптимизации затопления сети

  • Присвоение сетевых адресов

  • Сконфигурируйте безопасность слоя сети

Для получения дополнительной информации об этих операциях mesh слоя сети смотрите Bluetooth Mesh Networking.

Этот пример использует рекламный носитель, чтобы продемонстрировать затопление mesh Bluetooth в беспроводной сети датчиков.

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

  1. Создайте и сконфигурируйте сетевой mesh Bluetooth

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

  3. Вывод пути между выбранным источником и местом назначения

  4. Статистика отображения (отсылают Статистику Слоя сети в Каждом Узле) в каждом узле

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

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

Создайте и сконфигурируйте сетевые сценарии Bluetooth Mesh

Этот пример позволяет вам создать и сконфигурировать два сценария mesh Bluetooth. Каждый сценарий является сетью с 50 узлами. Узлы в сети классифицируются как релейные, исходные, целевые и конечные узлы. Укажите соответствующее время жизни (TTL) значений исходного и целевого узлов. В первом сценарии пример определяет пути между исходным и целевым узлами. Вы можете визуализировать поток сообщений в сети с помощью статистики слоя сети. Во втором сценарии пример отключает некоторые узлы ретрансляции и конечные узлы. В этом случае симуляции показывают, что сеть имеет вероятность установления пути между заданной парой источников и получателем.

Чтобы создать и визуализировать mesh сеть, используйте функции helper BLEM esh Network Node и helper BLEM esh Visualize Network. Задайте число узлов (totalNodes) и тип положения узла (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 = 50;

% Initialize 'bleMeshNodes' vector with objects of type
% helperBLEMeshNetworkNode
bleMeshNodes(1, totalNodes) = helperBLEMeshNetworkNode;

% Configure each mesh node with unique identifier
for idx = 1:totalNodes
    meshNode = helperBLEMeshNetworkNode;
    meshNode.Identifier = idx;
    meshNode.NetworkLayer.ElementAddresses = dec2hex(idx, 4);
    bleMeshNodes(idx) = meshNode;
end

% Load node positions from the MAT file
load('bleMeshNetworkNodePositions.mat');

% Number of scenarios simulated in this examples
numberOfScenarios = 2;

% Initialize 'meshNetworkPlots' vector with objects of type
% helperBLEMeshVisualizeNetwork
meshNetworkPlots(1, numberOfScenarios) = helperBLEMeshVisualizeNetwork;

for idx = 1:numberOfScenarios
    meshNetworkPlots(idx) = helperBLEMeshVisualizeNetwork;
    meshNetworkPlots(idx).NumberOfNodes = totalNodes;
    % Set the type of the node position allocation as 'Grid' or
    % 'UserInput'
    meshNetworkPlots(idx).NodePositionType = 'UserInput';

    % Set node positions based on number of nodes (applicable for
    % 'UserInput'), in meters
    meshNetworkPlots(idx).Positions = bleMeshNetworkNodePositions;

    % Set vicinity range based on node positions, in meters
    meshNetworkPlots(idx).VicinityRange = 25;

    % Set title to the network visualization
    meshNetworkPlots(idx).Title = ...
        ['Scenario ' num2str(idx) ': Bluetooth Mesh Flooding'];
end

Укажите количество пар источника и назначения в сетевой сети с помощью srcDstPairs параметр. Задайте значения TTL для пакета, созданного на каждом исходном узле.

% Specify the simulation time in milliseconds
simulationTime = 600;

% Enable or disable visualization
enableVisualization = true;

% Specify the source and destination pairs
srcDstPairs = [1 7; 13 29];

% Specify TTL values for packet originated at each source node
ttl = [25; 25];

Симуляции

Чтобы запустить симуляцию и получить результаты, используйте функции helper BLEM esh Flooding Simulation и helper BLEM esh Flooding Simulation Results, соответственно.

  • Сценарий 1: В этом сценарии все пятьдесят узлов в сети активны. Некоторые из этих узлов выбраны в качестве реле, и в этом сценарии нет отказавших узлов.

% 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];

% Specify the failed nodes (nodes that are out of network)
failedNodeIDs = [];

Этот график показывает соответствующие пути между каждой парой источников и получателей. The scenarioOneResults переменная рабочей области сохраняет результаты, содержащие полученные пути, в сценарии 1.

% Run the simulation with scenario 1 configuration
pathScenarioOne = helperBLEMeshFloodingSimulation(totalNodes, bleMeshNodes, meshNetworkPlots(1), ...
    simulationTime, srcDstPairs, ttl, relayNodeIDs, failedNodeIDs, ...
    enableVisualization);

% Display the results of the scenario 1
scenarioOneResults = helperBLEMeshFloodingSimulationResults(srcDstPairs, pathScenarioOne)
scenarioOneResults =

  2x4 table

    Source    Destination               Path                NumberOfHops
    ______    ___________    ___________________________    ____________

       1           7         {[1 46 19 4 39 41 48 23 7]}         8      
      13          29         {[     13 5 3 28 36 44 29]}         6      

  • Сценарий 2: В этом сценарии отключите функцию ретрансляции узла 41. Удалите узел 3 и узел 43 из сети.

% Specify the relay nodes
relayNodeIDs = [4 5 8 10 11 15 19 20 21 23 25 28 30 32 34 36 37 38 39 42 ...
    44 45 46 47 48 49];

% Specify the failed nodes (nodes that are out of network)
failedNodeIDs = [3, 43];

Этот график показывает соответствующие пути между каждой парой источников и получателей. The scenarioTwoResults переменная рабочей области сохраняет результаты, содержащие полученные пути, в сценарии 2.

% Run the simulation with scenario 2 configuration
pathScenarioTwo = helperBLEMeshFloodingSimulation(totalNodes, bleMeshNodes, meshNetworkPlots(2), ...
    simulationTime, srcDstPairs, ttl, relayNodeIDs, failedNodeIDs, ...
    enableVisualization);

% Display the results of the scenario 2
scenarioTwoResults = helperBLEMeshFloodingSimulationResults(srcDstPairs, pathScenarioTwo)
scenarioTwoResults =

  2x4 table

    Source    Destination                  Path                  NumberOfHops
    ______    ___________    ________________________________    ____________

       1           7         {[1 46 19 4 8 20 37 45 34 23 7]}         10     
      13          29         {[     13 30 45 34 28 36 44 29]}          7     

Статистика слоя сети

В каждом узле пример захватывает эту статистику слоя сети.

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

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

  • Количество полученных сообщений приложения

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

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

The statisticsAtEachNode переменная рабочей области содержит совокупную сетевую статистику всех узлов в сценарии 1 и сценарии 2. Для определенного прогона симуляции можно просмотреть статистику сети только для первых пяти узлов. Такова сетевая статистика для первых пяти узлов в сети.

statisticsAtEachNode = helperBLEMeshFloodingSimulationResults(bleMeshNodes);
statisticsForFirstFiveNodes = statisticsAtEachNode(1:min(5, totalNodes), :)
statisticsForFirstFiveNodes =

  5x6 table

    NodeID    TotalTxMsgs    TotalRxMsgs    TotalAppRxMsgs    TotalRelayedMsgs    TotalDroppedMsgs
    ______    ___________    ___________    ______________    ________________    ________________

      1            2              4               0                  0                   4        
      2            0              8               0                  0                   8        
      3            0              5               0                  2                   3        
      4            0             10               0                  4                   6        
      5            0              9               0                  4                   5        

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

Чтобы получить числовые результаты, усредненные по нескольким симуляциям, в примере реализуется метод Монте-Карло [3]. Чтобы проанализировать вероятность доставки сообщений от исходного узла к узлу назначения после включения или отключения узлов ретрансляции в сетевой сети, используйте скрипт helperBLEMeshMonteCarloSimulations. Каждый запуск симуляции следует этим шагам.

  1. Использует новый seed для генерации случайного числа.

  2. Случайным образом отключает узлы ретрансляции, пока между узлами источника и назначения не будет существовать только один путь.

  3. Сохраняет путь.

Симуляции Монте-Карло выводят эту статистику.

  • Вероятность доставки сообщения от источника к месту назначения, когда узлы ретрансляции случайным образом отключены в сети

  • Среднее количество скачков между исходным и целевым узлами

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

Пример выполняет симуляции Монте-Карло с использованием этих параметров конфигурации.

% Source and destination nodes
srcDstPair = [16 12];

% TTL value for the message originated at the above source node
ttl = 25;

% Relay nodes
relayNodeIDs = [21 15 25 11 38 19 46 8 39 20 37 32 30 5 45 49 43 3 28 36 47 ...
    34 23 48 41 44 42 10 4];

% Failed nodes (nodes that are out of network)
failedNodeIDs = [];

Пример выполняет 10000 симуляций при помощи вышеописанного строения. Чтобы просмотреть результаты симуляции, смотрите bleMeshMonteCarloResults.mat Файл MAT.

load('bleMeshMonteCarloResults.mat');
disp(['Probability of having a path between nodes Node ' num2str(srcDstPair(1)) ...
    ' and Node ' num2str(srcDstPair(2)) ' is ' ...
    num2str(probabilityOfSuccess) '%.']);
disp(['Average hop count between nodes Node ' num2str(srcDstPair(1)) ' and Node ' ...
    num2str(srcDstPair(2)) ' is ' ...
    num2str(averageHopCount) '.']);
disp(['Critical relay nodes required to derive a path between Node ' num2str(srcDstPair(1)) ...
    ' and Node ' num2str(srcDstPair(2)) ' are [' num2str(criticalRelaysInfo{1:5, 1}') ...
    '].']);
% Restore the previous setting of random number generation
rng(sprev);
Probability of having a path between nodes Node 16 and Node 12 is 88.6428%.
Average hop count between nodes Node 16 and Node 12 is 8.
Critical relay nodes required to derive a path between Node 16 and Node 12 are [39  37   8  38   4].

Чтобы выполнить симуляции Монте-Карло для пользовательских параметров конфигурации, измените и запустите скрипт helperBLEMeshMonteCarloSimulations.

Этот пример позволяет вам создать и сконфигурировать мультиузел сеть Bluetooth mesh и проанализировать наводнение слоя сети. Чтобы изучить поведение наводнения, в примере рассматриваются два сценария симуляции. В первом сценарии путь между исходным и целевым узлами идентифицируется и визуализируется путем выбора некоторых промежуточных узлов в качестве узлов ретрансляции. Во втором сценарии некоторые узлы (Relay и End) сбрасываются, и функция ретрансляции для некоторых узлов ретрансляции отключена. Полученные результаты показывают, что между исходным и конечным узлами существует путь, даже если узлы (Relay и End) отказывают в сети случайным образом.

Этот пример позволяет вам создать собственный mesh Bluetooth и визуализировать статистику затопления mesh и сети. Чтобы получить числовые результаты, усредненные в течение нескольких итераций, можно выполнить симуляции Монте-Карло в mesh Bluetooth.

Приложение

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

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

  1. Bluetooth Special Interest Group (SIG). Bluetooth Core Спецификации. Версия 5.0. https://www.bluetooth.com/.

  2. Bluetooth Special Interest Group (SIG). «Профиль Mesh Bluetooth». Версия 1.0. https://www.bluetooth.com/.

  3. Митрополия, Николай и С. Улам. Метод Монте-Карло. Журнал Американской статистической ассоциации 44, № 247 (сентябрь 1949): 335-41. https://doi.org/10.1080/01621459.1949.10483310.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте