Luis Antonio Burgos Lopez

RSSI vs Distance measurements in an indoor environment using KW0x

Discussion created by Luis Antonio Burgos Lopez Employee on Oct 8, 2014
Latest reply on Sep 11, 2015 by Ben Houston

Received Signal Strength Indicator (RSSI) is measurement of the power presented in a received radio signal.

An RSSI use case could be its conversion to distance.

KW0x radio has a RSSI register where RSSI can be read after a reception. To convert the value of the RSSI register to the real RSSI value just apply the next formula:

Rssi_Value = - Rssi_Register / 2.


A range test was implemented in an indoor environment for 8 meters, one measurement each 1 meter to know the behavior of RSSI vs distance.

RSSI varies a lot with different factors like the things in the environment, the weather, etc. The measurements published in this post could be different in each scenario. 

Some measurements has been taken for each meter (an excel file it´s attached in the post).


In figure 1 we can see the Raw data measurements.

     figure 1.png

                                                                   Figure 1: RSSI vs Distance (Raw Data)

In figure 2, moving average it´s applied to Raw data.

    figure 2.png

                                                         Figure 2: RSSI vs Distance (Moving average applied)

In figure 3 we can see RSSI measurements with median applied.

  figure 3.png

                                                           Figure 3: RSSI vs Distance (Median applied)


Finally, in figure 4 Moving average it´s applied to the median RSSI.

    figure 4.png 

                             Figure 4: RSSI vs Distance (Moving average of median RSSI applied)



The firmware to test the application it´s attached too. Connect the RX device to hyperterminal to watch the results.

To find where to read RSSI just search @LB in the project.


Modify next lines to:

- Change between TX and RX devices:                  #define      gDeviceType_c                                   gRxNode_c      or      gTxNode_c 

- Change time delay between packets                  #define      gDelayBetweenPacketsInMs_c            800                          


Message was edited by: Luis Antonio Burgos Lopez

Original Attachment has been moved to: