This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Single central multiple peripheral network for accelerometer sensor data

Hi

I plan to use nRF52832 based nodes with an accelerometer sensor which generates data at a rate of 468 bytes per second. For evaluation, I have two nRF-52 DK evaluation boards (PA10040). I would like to know if I can implement 10 such peripherals communicating to a single central device by using the following examples at the central node 

\nRF5_SDK\nRF5_SDK_15.3.0_59ac345\nRF5_SDK_15.3.0_59ac345\examples\ble_central\ble_app_multilink_central\pca10040\s132

and the following example in the peripheral nodes:

nRF5_SDK\nRF5_SDK_15.3.0_59ac345\nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_hrs\pca10040\s132

I want to know what would be the limitations in this implementation while transmitting such huge volumes of data. Ideally, the central node would be a gateway unit which connects to the server through a TCP/IP connectivity and is always powered on. This setup is for an initial raw data collection for an experimental trial and the battery life is not much of a concern. Please suggest what would be the potential roadblocks in implementing such a system and any other recommendations to be followed. 

Regards,

Vignesh M S

Parents
  • Hello,

    Please check out the softdevice specification regarding the throughput.

    The short answer is that this is feasible. You need to modify the example to support 10 connections, instead of 8 (which it does by default). 

    I would recommend that you just start with the ble_app_multilink_central example from SDK15.3.0, and change the LBS service (led button service) with the ble_app_hrs_c services that is used in the ble_app_hrs_c example, and be careful to handle the connection handles correctly in the multilink_central example when changing these services.

    Please also make sure that you use connection interval settings that are acceptable. You can't use a connection interval of 7.5ms for all connections, as there isn't enough time to handle all 10 connections every 7.5ms. Try to set it to 1s, and then try smaller than that if you need to.

    Best regards,

    Edvin

  • Hi Edvin

    Thanks for the reply. 

    I will implement as per your suggestion and keep you posted on the results. 

    One more query:

    The number of packets per connection interval seems to depend on the type of OS and device. If I am going to use nRF52832 as the central node which is dedicated to only be collecting data from sensor nodes, what would be the maximum number of packets allowed per connection interval? Can you please point to the part of documentation where I can get more info on this?

    Thanks,

    Vignesh

Reply
  • Hi Edvin

    Thanks for the reply. 

    I will implement as per your suggestion and keep you posted on the results. 

    One more query:

    The number of packets per connection interval seems to depend on the type of OS and device. If I am going to use nRF52832 as the central node which is dedicated to only be collecting data from sensor nodes, what would be the maximum number of packets allowed per connection interval? Can you please point to the part of documentation where I can get more info on this?

    Thanks,

    Vignesh

Children
  • Hello,

    That depends on the packet size and length of the event.

    If you want to experiment with different connection parameters, I suggest that you try to experiment with the SDK\examples\ble_central_and_peripheral\experimental\ble_app_att_mtu_throughput.

    You program this application to two x nRF52832 DKs. Read about how to test this example here:

    https://www.nordicsemi.com/DocLib/Content/SDK_Doc/nRF5_SDK/v15-3-0/ble_sdk_app_att_mtu

    these are the settings that gives a high throughput:

    throughput example:~$ config print
    ==== Current test configuration ====
    Board role:             tester
    ATT MTU size:           247
    Data length:            251
    Connection interval:    40 units
    Connection length ext:  on
    Preferred PHY:          2 Mbps
    GAP event length:       400
    throughput example:~$
    

    The best throughput is a result of fewer packets -> Lower header to payload ratio. However, this is optimized for one connection only, spending almost all time using the radio for this connection.

    If you have 10 connections, you will get a quite different result. But I did a test with the following settings:

    ==== Current test configuration ====
    Board role:             tester
    ATT MTU size:           23
    Data length:            27
    Connection interval:    320 units
    Connection length ext:  off
    Preferred PHY:          2 Mbps
    GAP event length:       400
    

    And it gave a throughput of 319Kbps (note that this is bits per second, not bytes). However, the connection interval of 320 (400ms) and no data connection length extension or data length extension should allow for many connctions, and the throughput is above what you intend to send per link each second.

    468 Bytes per second ≈ 3.65K bit per second. 

    Best regards,

    Edvin

Related