I am having trouble validating this idea through research. I was hoping someone could give me some ballpark feedback.
- 15 NRF52832 devices on custom PCB (30mmx50mm)
- All around 100m away outside with little to no obstacles in the way
- I need to stream data from each device. This means that the Bluetooth transfer speed needs to be faster than the combined data collection speed.
- Each device collects at 24kbps. So there is a combined 360kbps of data.
I imagine that I need to connect to each device individually and receive data. Then cycle through to the next device.
The connection parameters would be:
- BLE 5.0
- PHY: 2M
- TX power: 4dB
- connection interval 7.5ms
- data packet length extension on
- connection event length extension on
I can calculate theoretical transfer speeds using the nordic online power profiler. However, it's hard to get data at long distances. Also, I am not sure if I can cycle through the 15 devices fast enough?
Can I achieve this transfer rate (360kbps) at 100m? If not, what distance should be OK?
I don't think this would be at all feasible at 100m range I'm afraid. Sustaining just one connection at 100 meters using the 2Mbps (or 1Mbps for that matter) PHY is just the theoretical range. I don't think you'll be able to do what you describe at more than 20-25 meters between peripheral and central with the datarate you require in a low interference environment. You'll also have to keep in mind that you'll need time for the connection events as well, check out this post for a word of caution on the matter. You can also check out this post for additional info on the matter of this many links to one central.
Thanks for your response this has helped tremendously!
I can probably restrain the actual distance to more like 70meters (although 100m would be ideal). Without affecting the amount of data that needs to be streamed. Would either of these solutions work at 70meters?
1. Using 1M or LE Coded (S=2) PHY
2. Using multiple Bluetooth modules on the receiving end. For example 3 modules that only needed to stream data from 5 devices each. This would bring the transfer rate down to 120kbps and reduce the amount of connection events as well.
In the case of option 2, would there be significant interference due to multiple connections streaming at the same time? Or is this a non-issue as they will be on different channels?
mredp said:In the case of option 2, would there be significant interference due to multiple connections streaming at the same time?
Of course there will be collisions, as you have no way to synchronize modules - you can either divide frequency range with channel map, or ensure data rate that will cover probability of lost packets. I think one board and 15 slaves with the same connection interval is much more predictable solution. To maximize throughput, set up your connection interval to maximum allowed latency for your system, configure event length to a fixed value near 1/20 of connection interval, and do not set MTU to very high values (long packets have higher probability to be corrupted). To increase distance, you have an option to add PA/LNA to central device.
BTW, is BLE a requirement for your project? You could achieve your goal with a simple custom protocol (a start frame from central then 15 frames from devices) even at 500Kbit Coded PHY.
Ok great thanks for the advice!
BLE is not a requirement. When you say custom protocol do you mean something similar to the Nordic wireless UART example?
To confirm, you think a simple custom protocol could communicate with 15 devices 70 Metres away sampling at 360kbps (total)?
I was hoping to use the tiny BMD-350 module due to strict size constraints. However, I realise that this doesn't support coded PHY. So I will possibly use the BMD-340 then.
I mean an implementation that uses radio directly. In this case, you have no overhead of LL/L2CAP/ATT layers and acknowledgements, and you have full control over timings, thus avoiding collisions. Of course, this is more complex challenge than using BLE.
mredp said:To confirm, you think a simple custom protocol could communicate with 15 devices 70 Metres away sampling at 360kbps (total)?
I cannot confirm this (there are too many factors), you have to do some expreriments. What I can say exactly - Coded PHY will give you a longer distance, and in your case Coded PHY is possible only with custom protocol.