1

We try to stabilize the signal strength for several beacons. We have beacon from kontakt.io and scans for beacons from raspberry pi zero. We get signal strength between -40db and -87db and we want it to be more stable. We want rssi not to differ more than + -10db and preferably have as low as possible. It is an indoor positioning system that we are working on and this is how code looks when we tried to stabilize the rssi signal strength. And it's written in python. These two are the formulas we are using in our code:

distance = 10^((rssi at 1m - rssi)/20)

distance = rssi *fiterFactor + oldDistance *(1 - FilterFactor)
Jossi94
  • 21
  • 1
  • 4

1 Answers1

3

It is normal and expected for the RSSI of a BLE detection to differ by a significant range. This range gets larger the further you go away from a beacon, because the signal to noise ratio is lower.

It is critical to set expectations properly when doing distance estimates with beacons. At an actual range of 1 meter, you might be able to estimate distance as between 0.5 and 2 meters 95 percent of the time. At larger ranges like 10 meters, your estimate might vary between 5 meters and 40 meters.

Will your use case work with results like above? If not, you may need to refine your use case or look at alternate techniques like RSSI fingerprinting.

Even achieving the above very rough results requires doing a few things:

  1. Set your transmitter power as high as the manufacturer allows for the best signal to noise ratio. This should be at a level that gives you about -59 dBm at 1 meter.
  2. Set your advertisement rate as high as possible, at least 10Hz
  3. Average all RSSI measurements for as long as your use case allows -- at least 1 second to get ~10 samples, or even 20 seconds if your use case allows it. (Apple Core Location averages over about 20 seconds). Averaging reduces the noise on the measurements.
davidgyoung
  • 63,876
  • 14
  • 121
  • 204