I am trying to use the RSSI of the BLE scanning on Wipy to send some message when some threshold is reached. But unfortunately, the reported values during the scan seems to be randomly generated. It goes from -15 to -60 without any update of the emitter location. And there is no significant change in values when the emitter us far away and still detectable.
I thought it was related to the onboard antenna, but with the external antenna plugged, behaviour is still unchanged.
Did you already noticed that ? Is there a way to activate the use of external antenna?
Did i make something wrong or is there a problem with my WiPy chipset?
You are certainly right. That is the same problem. Actually the returned values are strange, with the same variation pattern. It is like the decoding was wrong, maybe some inversion in some bits or a Little or big endian inversion.
Thanks for your support. I hope it will be corrected soon.
I found a post on the ESP32 forum about the same problem so it seems it's happening at a lower level. Maybe some calibration isn't correct or maybe something due to the recent WiFi coexistence.
When it's fixed by Espressif in the ESP-IDF it should reflect very quickly on MicroPython, the values come directly from there.
I tried using the Lopy with or without external antenna and the RSSI level provided are too inconsistent and not reliable.
It is a showstopper for what I have planned to use the chipset. I hope it could be solved quickly. Usually BLE chipset are quite good at Signal Strength measurement.
It could anyway be interesting to see if someone have the same poor results when executing the code . Here after is my short test code.
I have made the test. Actually it did not changed anything in the RSSI level accuracy.
I will try using a LoPy instead WiPy and give you some feedback.
Yes, you need to activate the external antenna even for Bluetooth.
replace WLAN.STA with WLAN.AP if you're not connecting to your own WiFi and want the WiPy to create it's own WiFi network (the default). You can also use the wlan.antenna(WLAN.EXT_ANT) function.
then use your Bluetooth code as usual. I've not checked the accuracy of the RSSI values yet though.