James Cranley, July 2025
A lightweight ESP32-based RSSI logger and display for BLE beacons.
This project uses the Waveshare ESP32-S3-LCD-1.47 microcontroller with integrated LCD to monitor signal strength (RSSI) from a specific BLE beacon—typically a Shelly BLU Button1.
It displays live signal strength as text and signal bars, syncs its clock over NTP, and logs data to SD card.
-
📟 Waveshare ESP32-S3-LCD-1.47
(ESP32-S3 microcontroller, 1.47" ST7789 LCD, HSPI interface) -
🔘 Shelly BLU Button1
(Bluetooth Low Energy beacon with long battery life)
Ensure your Shelly BLU Button1 is in Beacon Mode:
- Download the Shelly Smart Control app and pair your device.
- In the app, tap on the Shelly Button1 and enable Beacon Mode under advanced settings.
- Go to Device Info and note the MAC address—you'll need this for the sketch.
-
Install via Homebrew (for macOS):
brew install --cask arduino-ide
-
On Apple Silicon Macs, you may need Rosetta2:
softwareupdate --install-rosetta
- Plug the ESP32-S3-LCD-1.47 into USB.
- Open Arduino IDE.
- In the toolbar, select:
- Board: “WAVESHARE ESP32-S3 LCD 1.47”
- Port: Your device’s USB connection
- Open the Boards Manager (left sidebar).
- Search for
esp32by Espressif Systems. - Install the latest version.
- Open the Library Manager (left sidebar).
- Install the following:
Adafruit GFX LibraryAdafruit ST7789 Library
- Open the file:
/src/multi_MAC_with_logging.ino - Fill in:
- The MAC addresses of your Shelly tags
- Your Wi-Fi credentials for NTP time sync
- Upload to the device: Click the Upload button in the IDE.
If you get a Bad CPU Type error, then install rosetta2 (which is tiny), using softwareupdate --install-rosetta
The device will:
- Display current UTC time, MAC, SSID, and RSSI.
- It will log data to the on-baord micro SD card



