playfultechnology / arduino-rfid-R200

Arduino/ESP32 code for R200 long-range UHF RFID reader
GNU General Public License v3.0
30 stars 9 forks source link

Fixed and Inconsistent RSSI Values in ESP32 Board and R200 Chip #1

Open hrefcl opened 7 months ago

hrefcl commented 7 months ago

Description:

I am working on a system that involves an ESP32 board and a R200 chip for UHF signal reading. I have encountered a significant issue with the RSSI value readings. Specifically, the value assigned to RSSI, which is stored in _buffer[6], remains constant and does not show the expected variability. Additionally, I have noticed a numeric value in _buffer[5] varying between 213 and 160, which does not align with typical RSSI values in dBm.

Additional Details:

Components Used: ESP32 board, R200 chip. Symptom of the Problem: The RSSI value, as defined in the code and located in _buffer[6], is constant and unchanging, suggesting a problem in the reading or interpretation of the RSSI value. Observation in _buffer[5]: A fluctuating numeric value between 213 and 160 is recorded, not corresponding to standard RSSI measurements in dBm. Steps to Reproduce:

Set up the ESP32 board with the R200 chip for UHF reading. Perform capturing and reading of RSSI values. Observe the reported values in _buffer[6] and _buffer[5]. Expected Results: RSSI values should reflect the detected UHF signal strength, showing appropriate variations in dBm.

Actual Results:

The value in _buffer[6], designated as RSSI, remains constant and does not vary across measurements. The value in _buffer[5] fluctuates between 213 and 160, not aligning with a typical range of RSSI values in dBm. Any assistance or suggestions for diagnosing and correcting this issue would be greatly appreciated. Thank you in advance for your collaboration and support.

adameus03 commented 3 months ago

@hrefcl Did you resolve this issue by any chance?

hrefcl commented 3 months ago

No, I have not solved this problem, my only solution was to measure the value delivered and based on the value delivered, make an approximate calculation of the distance, a similar example that I used to calculate the distance

float R200::calculateDistance(int rssi) { // RSSI a 0 metros (el valor más alto observado) const int rssiAtZeroMeters = 213; // RSSI a 1 metro const int rssiAtOneMeter = 190;

// La pendiente de la línea (cambio en RSSI por metro) float slope = float(rssiAtZeroMeters - rssiAtOneMeter);

// Calcular la distancia basada en la pendiente y la diferencia del RSSI observado float distance = (rssiAtZeroMeters - rssi) / slope;

return distance; }