Since my BLE reception was very poort, I’ve been running some test in the past days about the quality of antennas of ESP32 modules… and the results have been shocking to say the least.
ESP32 Generic DEV Board with integrated Antenna (Running OpenMQTTGateway 1.2.0)
A4C138xxxx06 = {"id":"A4:C1:38:xx:xx:06", "mac_type":0,"rssi":-83,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxxFB = {"id":"A4:C1:38:xx:xx:FB", "mac_type":0,"rssi":-89,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx05 = {"id":"A4:C1:38:xx:xx:05", "mac_type":0,"rssi":-94,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_ATC"
A4C138xxxxD6 = {"id":"A4:C1:38:xx:xx:D6", "mac_type":0,"rssi":-90,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx27 = {"id":"A4:C1:38:xx:xx:27", "mac_type":0,"rssi":-91,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
ESP32 WROOM with external Airgain antenna (Running OpenMQTTGateway 1.4.0)
A4C138xxxx06 = {"id":"A4:C1:38:xx:xx:06","name":"ATC_xxxx06","rssi":-62,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxxFB = {"id":"A4:C1:38:xx:xx:FB","name":"ATC_xxxxFB","rssi":-86,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx05 = {"id":"A4:C1:38:xx:xx:05","name":"ATC_xxxx05","rssi":-88,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_ATC"
A4C138xxxxD6 = {"id":"A4:C1:38:xx:xx:D6","name":"ATC_xxxxD6","rssi":-78,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx27 = {"id":"A4:C1:38:xx:xx:27","name":"ATC_xxxx27","rssi":-84,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
ESP32 Seeed XIAO with external provided antenna (Running OpenMQTTGateway 1.4.0)
A4C138xxxx06 = {"id":"A4:C1:38:xx:xx:06","name":"ATC_xxxx06","rssi":-39,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxxFB = {"id":"A4:C1:38:xx:xx:FB","name":"ATC_xxxxFB","rssi":-64,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx05 = {"id":"A4:C1:38:xx:xx:05","name":"ATC_xxxx05","rssi":-66,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_ATC"
A4C138xxxxD6 = {"id":"A4:C1:38:xx:xx:D6","name":"ATC_xxxxD6","rssi":-55,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
A4C138xxxx27 = {"id":"A4:C1:38:xx:xx:27","name":"ATC_xxxx27","rssi":-62,"brand":"Xiaomi","model":"LYWSD03MMC","model_id":"LYWSD03MMC_PVV"
The sensors were put the same location, and in the same position (+/- 5cm), and the readings have been taken simultaneously:
The first module, the one with the integrated PCB antenna, is the worst… more so because the PCB antenna is stacked on top of the dev board PCB. I did not expect much form it, but it is the most readily available on Amazon or Ebay. I bought a couple of them in hurry and they were delivered in a couple of days. They do work and are easy to use.
The ESP32U with Airgain antenna (bought separately: it is a well known brand, often used internally in routers) does way better! e.g. for the first sensor, going from -83db to -62db, a difference of +11db versus the no-name Dev board.
…but the real surprise here was the Seeed XIAO with the provided antenna… here the same sensor goes from -83db to -39db, a difference of +44db!
The measurements are in regards to the first sensor, but every sensor shows a similar pattern.
The best part? The Seed was also the cheapest (considering you don’t have to buy antennas or dev boards separately) and smallest board!
Keep in mind tho that it is an ESP32-C3 with a single core RISCV processor and BT5.0, while the others are ‘vanilla’ ESP32 with a dual core ARM processor and BT4.2)