SPI Display Weather Station
This project is a compact, standalone weather dashboard built on the Raspberry Pi Pico W using a 320×240 SPI TFT display (ILI9341). The Pico W reads environmental data from AHT20 (temperature & humidity) and BMP280 (pressure), then renders an animated interface using a custom MicroPython graphics layer.
In addition to the on-device display, the firmware runs a lightweight Wi-Fi HTTP server for quick viewing and integration:
/ provides a simple dashboard, and /data outputs JSON for logging or external tools.
⚙ Hardware Overview
- Microcontroller: Raspberry Pi Pico W
- Display: 320×240 SPI TFT (ILI9341)
- Temperature / Humidity: AHT20 (I²C)
- Pressure: BMP280 (I²C)
- Connectivity: Wi-Fi (embedded HTTP + JSON endpoints)
🖥 Display Interface
Sensor values are rendered on the SPI display using a custom graphics layer designed for fast refresh and a “weather appliance” feel. The UI includes:
- Time-of-day sky gradient (morning, day, evening, night)
- Sun and moon path animation
- Optional stars and cloud/rain effects based on pressure trend
- Large segmented numeric overlays for Temperature, Humidity, and Pressure
- Centered digital clock synchronized via NTP
The display pipeline is optimized for responsive SPI drawing and predictable embedded timing, targeting high SPI clock rates (up to 40 MHz) where supported by the wiring and display module.
🌐 Embedded Web Interface
/— Simple web dashboard/data— JSON output for integration or logging
The web interface is intentionally lightweight and designed to work reliably under typical home Wi-Fi conditions.
✅ Design Goals
- No operating system (microcontroller-only)
- Fast SPI rendering and smooth UI updates
- Deterministic embedded behavior
- Watchdog-based reliability
- Automatic Wi-Fi reconnect and periodic NTP sync
The result is a self-contained weather appliance that combines real-time SPI graphics, physical sensors, and wireless connectivity in one compact embedded platform.