WiFi Bus Timetable

ESP32-C3 based display showing live public transport departures from SL's API. Designed for hallway deployment without phone dependency.

Hardware

  • ESP32-C3 Super Mini
  • 240×320 ST7789 TFT display (SPI) — connected via soldered pin header

Pin Configuration

ESP32TFT
GNDG
3.3VVCC
GPIO4SCL
GPIO3SDA
GPIO2RST
GPIO1DC
GPIO0CS

ℹ Note — Despite the labelling, the display uses SPI not I²C. SDA maps to MOSI (GPIO3), SCL to SCLK (GPIO4).

User_Setup.h

User_Setup.hCPP
#define USER_SETUP_INFO "User_Setup"
#define ST7789_DRIVER
#define TFT_RGB_ORDER TFT_BGR
#define TFT_WIDTH  240
#define TFT_HEIGHT 320
 
#define TFT_MOSI 3
#define TFT_SCLK 4
#define TFT_CS   0
#define TFT_DC   1
#define TFT_RST  2
 
#define LOAD_GFXFF
#define SMOOTH_FONT
 
#define SPI_FREQUENCY  10000000

Critical Requirement

⚠ Warning — Use Arduino IDE ESP32 board package (esp32 by Espressif Systems) version 2.0.14 specifically. Later versions cause boot loops with TFT_eSPI on ESP32-C3 (see GitHub issue #3284).

Key Features

  • Differential screen updates — only changed rows redraw, preventing flicker
  • Badge column width adapts dynamically; geometry change triggers full repaint
  • Sleep mode 22:00–06:00: display powers down, API polling pauses, WiFi and OTA remain active
  • StaticJsonDocument prevents heap fragmentation during 20-second fetch cycles
  • Zero dynamic memory allocation at runtime
  • OTA serviced first in loop() and during sleep — never starved
  • Midnight-crossing sleep windows handled without special casing
Disclaimer

All content published on exploit.se is intended strictly for educational and informational purposes. Research is conducted responsibly under coordinated disclosure principles.

Techniques, tools, and writeups shared on this site are meant to advance the security community's understanding of vulnerabilities and defences. They are not intended to encourage or enable unauthorised access to any system.

The author bears no responsibility for any misuse of information presented here.

Cookie Settings

This site does not use cookies, analytics, or any third-party tracking technologies.

No personal data is collected. No fingerprinting. No ads. You are not the product.


 ██╗ ██████╗ ███████╗██╗███████╗███╗   ██╗██████╗
 ██║██╔═══██╗██╔════╝██║██╔════╝████╗  ██║██╔══██╗
 ██║██║   ██║█████╗  ██║█████╗  ██╔██╗ ██║██║  ██║
 ██║██║   ██║██╔══╝  ██║██╔══╝  ██║╚██╗██║██║  ██║
 ██║╚██████╔╝██║     ██║███████╗██║ ╚████║██████╔╝
 ╚═╝ ╚═════╝ ╚═╝     ╚═╝╚══════╝╚═╝  ╚═══╝╚═════╝
You found me.
↑↑↓↓←→←→ B A  ·  click to close