A touchscreen WiGLE.net stats dashboard for the Waveshare ESP32-S3-Touch-LCD-1.69 (240×280 ST7789V2 IPS LCD, CST816T capacitive touch, QMI8658 IMU).
It pulls your wigle.net account stats over WiFi and cycles through six screens styled after the WiGLE mobile app. Swipe left/right to change screens manually; they also auto-rotate on a timer.
| # | Screen | Source endpoint |
|---|---|---|
| 5 | Profile / summary (username, rank, month rank, optional badge) | /stats/user |
| 0 | Your Statistics (WiFi / WiFi locations / Bluetooth / Cell) | /stats/user |
| 1 | Discoveries (big numbers + GPS %) | /stats/user |
| 2 | Leaderboard (top users) | /stats/standings |
| 3 | Top Groups | /stats/group |
| 4 | Uploads (recent files) | /file/transactions |
- Board: Waveshare ESP32-S3-Touch-LCD-1.69 (ESP32-S3R8, 8 MB PSRAM, 16 MB flash)
- Display: ST7789V2, 240×280, SPI
- Touch: CST816T, I²C
0x15 - IMU: QMI8658, I²C
0x6B(optional shake gesture)
- GFX Library for Arduino — moononournation
- ArduinoJson (v7) — Benoit Blanchon
- PNGdec — Larry Bank (only needed if the profile badge is enabled)
- Board: ESP32S3 Dev Module (or the Waveshare 1.69 board if listed)
- USB CDC On Boot: Enabled
- PSRAM: OPI PSRAM
- Flash Size: 16MB
Open WiGLE_Dashboard.ino and fill in the config block near the top:
const char* WIFI_SSID = "YOUR_WIFI_NAME";
const char* WIFI_PASS = "YOUR_WIFI_PASSWORD";
const char* WIGLE_API_NAME = "YOUR_WIGLE_API_NAME"; // from https://wigle.net/account
const char* WIGLE_API_TOKEN = "YOUR_WIGLE_API_TOKEN"; // NOT your login password
const char* WIGLE_BADGE_URL = ""; // optional profile-badge PNG URLDo not commit real credentials. Keep the WiFi/API fields as placeholders in any copy you push to GitHub; put your real values only in the copy you flash.
Get your WiGLE API Name and API Token from https://wigle.net/account (these are separate from your username/password).
TOP/BOT— safe-area insets for the rounded corners. IncreaseTOPif the top edge is still clipped on your unit.SWIPE_INVERT— settrueif swipe direction feels reversed.SWIPE_MIN_PX— how far you must drag before a swipe registers.SCREEN_ROTATE_MS/REFRESH_MS/SLOW_REFRESH_MS— auto-cycle and refresh timing.SCREEN_ORDER[]— reorder or remove screens (e.g.{5, 0, 1}).ENABLE_BADGE— set0to drop the profile badge and skip the PNGdec dependency.- If the badge colors look swapped, flip
PNG_RGB565_LITTLE_ENDIAN↔PNG_RGB565_BIG_ENDIAN.
The Serial Monitor (115200 baud) prints the touch chip ID, HTTP status codes, parsed stats, and the raw JSON for the leaderboard/groups/uploads screens — handy for confirming field names if any of those show "unavailable".
- WiGLE enforces a daily API query limit; the defaults poll your stats every 10 minutes and the global screens hourly to stay well within it.
- TLS certificate validation is disabled (
setInsecure()) for simplicity.