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

BLE Multilink, Aggregator and UART with fixed devices

I'm currently using this setup on a fitness device prototype that will send battery status, scores and relevant infos.

RPi >>>RFM69 915MHz ))))))           ((((( RFM69 >>> Adafruit Feather M0  and plans to add more RFM69+Feather M0. My problem is aside from higher power consumption compared with BLE is a working reliable communications in all the libraries I tested.

Currently I tested the ble multilink app with nRF52dk as aggregator, 1 nRF52 thingy and a smartphone.

Now my questions are:
1. I'm a bit confused on the ble multilink central example included on SDK with the one on github nrf52-ble-multi-link-multi-role. On ble multilink central info it says up to 8 concurrent devices but with nrf52-ble-multi-link-multi-role on github it indicates up to 20 devices. What are difference of this two aside from this number of devices that can connect? 

2.With concurrent connections sending via uart from 8 devices to the device connected on RPi will this setup work. A few ms of delay is allowable. 
  (I say this is the master)   RPi >>>nRF52840 usb dongle or a nRF52dk ))))                   ((((( 8 pcs nRF52832/nRF52840 (this are the slaves)

3. If #2 works assuming I have 2 or more masters how can I set that the specific master only connects to the slaves intended for it. Should I register like all the mac address of all slaves in each master? Or there are better ways to implement this? 

4. Assuming two slaves send data at the same time will one of the data will be lost? or the two will mixed up? or both loss? since based on what I understand all those slaves connects on one uart port on the master? or the master manages this slaves so only one can send at a time? (sorry this question seems noobish)

Thank you in advance!

Parents
  • Hi

    1. The ble_multilink_central example is mainly limited to 8 links for historical reasons, as the earlier versions of this example were based on the S130 SoftDevice which only supported 8 central links. 

    When using the S132 or S140 SoftDevices you can increase this to 20 if you want, by changing the NRF_SDH_BLE_CENTRAL_LINK_COUNT and NRF_SDH_BLE_TOTAL_LINK_COUNT defines in sdk_config.h, and increasing the RAM assigned to the SoftDevice accordingly. 

    If you are looking for a simple starting point for doing a multilink central the ble_multilink_central example is probably a better starting point compared to the nrf52-ble-multi-link-multi-role example. 

    2. Do you mean if it is possible for the nRF52840 USB dongle to be a peripheral (slave) to the RPi and a central (master) to 8 nRF52 devices at the same time?

    This is possible definitely, but the total bandwidth has to be divided by all the connected devices. 

    3. In this case you probably need to register a list of known slaves on the master side, and only try to connect to advertising devices that can be found in this list. 

    4. The master will poll each slave in turn, and the slaves are not allowed to send anything until they receive a packet from the master, so there is no risk that the slaves will interfere with each other as long as they are connected to the same master device. 

    Best regards
    Torbjørn

  • Thank you Torbjørn for clear answers. Some additional question.

    2. I mean the nRF52840 USB dongle is connected via USB of RPi and communicate via UART.

    4. So if during polling of a slave and another slave has data ready it will just be cued or there is a serial buffer like that so it will still be there when it is time to poll for that particular slave?

  • Hi

    2. Thanks for the clarification, this makes sense Slight smile

    4. The SoftDevice has internal buffers that will store pending data until the next connection event occurs, both on the master and slave side, and the buffers can typically hold several packets at a time. 

    If you push a lot of data the buffers can fill up, but then you will get an error message when trying to upload the packet telling you that you have to wait and try to upload the data at a later time. 

    Best regards
    Torbjørn

  • Thank you Torbjørn, all my questions are answered now. Cheers!

Reply Children
No Data
Related