Hello everyone!
I am having trouble with my current setup and I would like to ask you for your advice.
I am developing a central station featuring nRF5340+nRF7002. This station needs to receive data from BLE from 12 nodes (each one sampling data at 100Hz, 36 to 42 bytes) and forwarding them via UDP Socket. The nodes instead feature the nRF52840.
My current connection interval min is set by the station at 10x12.5ms and max is 15x12.5ms, the MTU is set to 67, the Maximum Link Layer transmission payload size in bytes is 251 and the Maximum Link Layer transmission payload time in us is 2120.
As of now, I am dealing with only one node.
I can see that the node starts streaming and notifications pop in the central station, but I have a couple of problems: the data rate is not fixed, meaning I see a lot of stuttering in the stream; also, the stream seems much smoother at the beginning, and just after 5-6 seconds. This behavior doesn't show If i place the node directly on top of the station. As I start to move, or obstruct with my body the line of sight between the node and the station, the connection sometimes drop and eventually the data stream is veeery low. I had packet loss also with ESB but not of this entity (I wanted to switch from ESB to BLE also because of packet loss)
I would like to improve the system: ideally, each data from a node is sent every 10 ms, at a constant rate, and each sample is sent on its own packet. What do you think is the best configuration that I can achieve?
The alternative would be to pack the data sampled and send them every N ms. By doing this way, do you think it is feasible to restore the temporal information over different nodes when I need to send the UDP packet? I mean, If I receive two packets from two different nodes, in which each one has 10 samples, then is there a way to order timewise the set of 20 samples?