Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How increase throughput or high data sending rate in BLE mesh sdk using nRF52832 sdk1.0.1?

Hello,

We have developing solution for IIoT using Nordic BLE mesh technology for many node to other many node then send to own server. We have select one analog sensor and read this adc 3 channels using nRF52832 DK. Each channel of adc data is near about 8KB so total data size is 8*3= 24KB. Now we have successfully send this large amount of data sensor node to relay node.

Simply we are trying to like this:

Sensor Node1,2,3.....N------>Relay Node(use for re-transmit message and expand connectivity range)--------> Server Node(Receive data from relay node and send it to own server using WiFi).

In my server side i have merged  UART example from nRF5 SDK 14.1 into mesh sdk.  Not use mesh serial example in my application. UART example is used because i have interface external WIFI module for internet connectivity to own server.

But now my problem is When i send data Sensor node to relay node it sending very fast it take near about 3 second for sending all data into server.

But when i send this same data relay node to server node(with interface wifi module using UART)at this time it take more time near about 3-4 minutes.

Actually i have enable mesh instaburst feature in my code but not increase throughput.  On this i have few questions as per the following:

  1. Why it only through put low when i send sensor data to server node with merge example is UART?
  2. If i interface UART example into mesh light switch server example node due to this is it affect on throughput?
  3. If yes for increasing this is it have any new configuration for achieving high data rate.
  4. For sending all packets i have use access_model_publish method can you suggest other method for high data rate and also no packet losses between sending..

Thanks in Advanced.......!!!

  • Hi,

    Not sure why the throughput are low from relay node to server node. I don't think merging the UART example with the light switch server example would affect the throughput. I suspect that the Wifi module might cause this issue, can you try to turn off the wifi module and have only the UART running? Just to see if it is working with the UART example merged.

  • Hi,

    Thanks for reply, Now i have increase throughput by change some build configuration in SES. I have also checked by removing wifi module but it is not any affect on throughput. Now my all axis data is able to send 15-16 second but it only client to server.

    My all messages is not relying can you tell me why is not relaying to other node.

    I have written the following in my messages sending function:

    msg.p_buffer = (const uint8_t *) &adc_buff[(SAMPLE_POINTS - m_adc_evt_counter)*2];
    msg.length = m_adc_evt_counter*2;

    status = access_model_publish(m_clients[0].model_handle, &msg);

    What is the meaning or difference between m_clients[0] and m_clients[GROUP_CLIENT_INDEX] 

    If i set m_clients[GROUP_CLIENT_INDEX] in access_model_publish data sending is very slow. Is it need to relaying message. Because currently not transmit message to other node.

    Thanks...!!!

  • Hi,

    m_clients are a list of clients, and "0" and "GROUP_CLIENT_INDEX" are the index in this list. When combining examples you have to make sure that the different clients are placed, read and updated in the right place in the list. I'm still not sure why the throughput would be slower though...

    Does the relaying work when set m_clients[GROUP_CLIENT_INDEX]

  • Hi,

    Thanks for reply,

    But one of the problem when i set m_clients[GROUP_CLIENT_INDEX] data sending throughput is very slow.

    If i set m_clients[0] data sending throughput is better only work client to server but not relying message to other node.

    I want to relaying message and also data sending throughput is fast how i can do please tell me, i have stuck here until not able to find answer.

    Thanks.

    Looking forward your reply...!!

  • Hi,

    The reason you get lower throughput when setting m_clients[GROUP_CLIENT_INDEX] is probably because that client is relaying the message to other nodes. Since it have to retransmit the packages it might miss some incoming packages which causes it to have a lower throughput. 

    When you set it to m_clients[0] the server will only receive the package and not retransmit hence you get a higher throughput.

Related