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

Calculating RSSI without receiving user messages

Hey 

I am working on Bluetooth mesh. I am able to find the RSSI from server whenever i received the message from client in mesh(light switch example). Now I have to find the RSSI for 3 seconds even without receiving any user message. I know that the RSSI can be calculated only when signal is received, but I also came to know that to order to maintain the connection in Bluetooth, link layer sends the empty messages for connection maintaining. If possible how can I calculate the RSSI for those messages. Is there any other possibility for my requirement.

I also saw that RSSI is displayed continuously in nRF connect app using the advertising data of ble devices,I need such mechanism of finding RSSI for 2 to 3 seconds, how can i achieve that?

Regards

Sumanth

Parents
  • Hi Sumanth, 

    I think you maybe confused between Bluetooth Low Energy and Bluetooth Mesh. They are not the same. Bluetooth Mesh doesn't have empty packets to keep the connection, there is no connection in Bluetooth mesh. 

    But what you can do is to send HeartBeat packet instead. It's made for this purpose. Please have a look at section 3.6.7 in Bluetooth mesh spec v1.0 

    You would need to configure the server to send heartbeat to a particular group address, and then configure other node to subscribe to that address. 

  • Hey thanks and I have gone through the specs, My idea is I have two devices, one which publishes the data and other which subscribe, they should blink the led when both are out of range(ref distance), I want to do it in mesh because I have multiple publishers and one device that subscribes all publishers. I have also seen the post 

    https://devzone.nordicsemi.com/f/nordic-q-a/39270/ble-mesh-heartbeat-example 

    but couldn't understand the procedure, If possible explain the procedure and configuration of heartbeat messages and finding rssi?

    Regards

    Sumanth   

  • It's still possible to use BLE to connect a network with 40 nodes (by using multiple of BLE star network) But mesh maybe a better solution if power consumption is not your concern. 

    I would suggest to study the mesh spec to have a rough idea of Heartbeat how it's configured. And then check the example to see the modification made in node_setup.c and provisioner_helper.c file that I did. 

    Mainly it's about sending a configuration message to the configuration server to enable subscription and publication of heart beat. 

  • I would like use BLE since we need to restrict power consumption, What will be the procedure for that.(star network) to find the distance between the connected devices .                                                                                                                                                                                                                                                                                                                                                                                  

  • You would need to give us your exact application definition and requirements to be able to give you advice. You can convert this case to private if there is confidential information. 

    To get the distance between connected device, you can use RSSI. But be aware that RSSI is relative and can't be used to calculate the exact distance to a node. It can be affected largely by for example if a human is stand between the devices, if there is some reflection etc. 

  • Yes I know that, My idea is if two devices connected through BLE and when they are out of range it should generate some alert (ex-buzzer). I am using nrf52 DK. I will be using about 30-40 devices later(star network), power consumption is major factor i am considering,

    Right now I am working on BLE central and peripheral, I am able to calculate the RSSI of peripheral before and after the connection.

    I would like to use that RSSI, I am thinking to take RSSI reading for every 300ms, total of five times and take the average of it and compare with the reference value, Is that possible with low power consumption  or is there any other way to do it?

  • I don't see any problem with that. You can request the softdevice to report RSSI when there is any change in RSSI using sd_ble_gap_rssi_start() there is a threshold value and skip count that you can configure. Have a look here. 

    Should have pretty low power consumption with 300ms interval. You can calculate the estimated power consumption here.

Reply Children
Related