Main Content

Create, Configure, and Simulate Bluetooth LE Network

This example shows you how to simulate a Bluetooth low energy (LE) network by using Bluetooth® Toolbox.

Using this example, you can:

  1. Create and configure a Bluetooth LE piconet with Central and Peripheral nodes.

  2. Create and configure a link layer (LL) connection between Central and Peripheral nodes.

  3. Add application traffic from the Central to Peripheral nodes.

  4. Simulate Bluetooth LE network and retrieve the statistics of the Central and Peripheral nodes.

Create a Bluetooth LE node, specifying the role as "central". Specify the name and position of the node.

centralNode = bluetoothLENode("central");
centralNode.Name = "CentralNode";
centralNode.Position = [0 0 0];                 % In x-, y-, and z-coordinates, in meters

Create a Bluetooth LE node, specifying the role as "peripheral". Specify the name and position of the node.

peripheralNode = bluetoothLENode("peripheral");
peripheralNode.Name = "PeripheralNode";
peripheralNode.Position = [10 0 0]              % In x-, y-, and z-coordinates, in meters
peripheralNode = 
  bluetoothLENode with properties:

        TransmitterPower: 20
         TransmitterGain: 0
           ReceiverRange: 100
            ReceiverGain: 0
     ReceiverSensitivity: -100
             NoiseFigure: 0
    InterferenceFidelity: 0
                    Name: 'PeripheralNode'
                Position: [10 0 0]

   Read-only properties:
                    Role: 'peripheral'
        ConnectionConfig: [1x1 bluetoothLEConnectionConfig]
          TransmitBuffer: [1x1 struct]
                      ID: 2

Create a default Bluetooth LE configuration object to share the LL connection between the Central and Peripheral nodes.

cfgConnection = bluetoothLEConnectionConfig;

Specify the connection interval and connection offset. Throughout the simulation, the object establishes LL connection events for the duration of each connection interval. The connection offset is from the beginning of the connection interval.

cfgConnection.ConnectionInterval = 0.01; % In seconds
cfgConnection.ConnectionOffset = 0;      % In seconds

Specify the active communication period after the connection event is established between the Central and Peripheral nodes.

cfgConnection.ActivePeriod = 0.01 % In seconds
cfgConnection = 
  bluetoothLEConnectionConfig with properties:

    ConnectionInterval: 0.0100
         AccessAddress: '5DA44270'
          UsedChannels: [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... ]
             Algorithm: 1
          HopIncrement: 5
     CRCInitialization: '012345'
    SupervisionTimeout: 1
               PHYMode: 'LE1M'
         InstantOffset: 6
      ConnectionOffset: 0
          ActivePeriod: 0.0100

Configure the connection between Central and Peripheral nodes by using the configureConnection object function of the bluetoothLEConnectionConfig object.

configureConnection(cfgConnection,centralNode,peripheralNode);

Create a networkTrafficOnOff object to generate an On-Off application traffic pattern. Specify the data rate in kb/s and the packet size in bytes. Enable packet generation to generate an application packet with a payload.

traffic = networkTrafficOnOff(DataRate=100, ...
                              PacketSize=10, ...
                              GeneratePacket=true);

Add application traffic from the Central to the Peripheral node by using the addTrafficSource object function.

addTrafficSource(centralNode,traffic,"DestinationNode",peripheralNode.Name);

Create a Bluetooth LE network consisting of a Central and a Peripheral node.

nodes = {centralNode peripheralNode};

Initialize the Bluetooth LE network simulation by using the helperWirelessNetwork helper object. This helper object uses these object functions.

  • runNode: Run the Bluetooth LE nodes.

  • pushChannelData and channelInvokeDecision: Apply the channel impairments to the transmitted packet and distribute the impaired packet to the receiving buffers of the nodes that intends to receive the packet.

networkSimulator = helperWirelessNetwork(nodes);

Set the simulation time in seconds and run the simulation.

simulationTime = 0.5;
run(networkSimulator,simulationTime);

Retrieve application, link layer (LL), and physical layer (PHY) statistics corresponding to the broadcaster and receiver nodes. For more information about the statistics, see Bluetooth LE Node Statistics.

centralStats = statistics(centralNode)
centralStats = struct with fields:
    Name: 'CentralNode'
     App: [1x1 struct]
      LL: [1x1 struct]
     PHY: [1x1 struct]

peripheralStats = statistics(peripheralNode)
peripheralStats = struct with fields:
    Name: 'PeripheralNode'
     App: [1x1 struct]
      LL: [1x1 struct]
     PHY: [1x1 struct]

References

[1] Bluetooth® Technology Website. “Bluetooth Technology Website | The Official Website of Bluetooth Technology.” Accessed November 22, 2021. https://www.bluetooth.com/.

[2] Bluetooth Special Interest Group (SIG). "Bluetooth Core Specification." Version 5.3. https://www.bluetooth.com/.

See Also

Functions

Objects

Related Topics