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

point to multipoint with UART (multilink on the S120)

I'm interested in using BT LE to collect data from a number of serial based devices -- a point-to-multipoint configuration. I'm familiar with the UART examples and have seen the multilink example.

The "devices" would be connected to a BT "remote" via the UART (+ level shifter etc), any serial traffic needs to be sent over the BT LE link to a single master BT device connected to a PC which can read the data (probably via the UART again).

However, I'm not 100% sure of the model, maybe it's just the terminology. In the multipoint example, there is a central (Softdevice 120) and peripheral (Softdevice 110). The central connects to the peripheral(s) to collect data, which is the opposite to how I need it to work (or is this just convention and can either end initiate the xfer?).

Finally, what are the limitations, I think the multipoint allows up to 8 simultaneous connections, can I have more "parked" connections? i.e. how many device+BTLE "remotes" combinations can I associate with a single BT LE master? (even if only 8 can communicate concurrently).

Thanks!

  • I do actually need BLE for smartphone connectivity. I had thought Gazalle was limited to 8 "devices", I'll look again. Just to wrap this up, what kind of latency would I be looking at to go through the advertise/connect/disconnect cycle?

  • Gazell is limited to 8 pipes, but you can in principle have any number of devices sending data on one pipe.

    The latency for advertise/connect/disconnect will be very dependent on advertising intervals and scan window on the Central side. If you use a short advertising interval, and a scan window close to the scan interval, you should be able to achieve pretty short latencies, at the cost of higher current consumption. Take a look at section 2.1 of nAN-36.

  • For both the "uplink" and "remotes" current isn't an issue, so I can use the smallest possible interval (20ms) and I'm using nRF51822's on both ends so I can use a 7.5ms connection interval. Thinking about it, it really doesn't matter how long it takes if I can have 8 simultaneous connections. Even if it took 1s, I can still handle 8 concurrent connections per-second. If it was 500ms, I can handle 16/sec (with a 0-500ms latency before being able to initiate the connection).

  • In the SDK, I found a set of multilink app examples in Board/nrf6310/s120/experimental for both central and peripheral. It looks like this is exactly what I need, except that I need to (as Ole suggests):

    1. Configure the peripherals to only advertise when they have data to send (or to change the advertisement payload to indicate how much data is available)
    2. disconnect each peripheral after they are done with the data transfer

    Presumably, if I want to "ping" a peripheral outside of when the peripheral has data to send, I can simply make a direct connection to it? Or does the peripheral have to always be advertising ...

  • It is not possible to establish a BLE connection if the Peripheral is not advertising. If you want such pinging, I suggest that you make your Peripherals start advertising periodically, no matter if they have data to send or not. You could also keep them always advertising, but just change a field in the advertising data when they have new data to transmit. In the latter way, the Central would always be able to see them, but can choose to not connect if there isn't new data.

Related