- EliteDesk: 240x320 color ST7789 via Pico (Day 32 design)
- Pi: 128x64 mono SSD1306 horizontal bars (Day 85 redesign)
🦊 Built with love by Vixy
1.6 KiB
1.6 KiB
EliteDesk Cluster Status Displays
6x Raspberry Pi Pico + 6x Waveshare ST7789 2" LCD (240x320)
Overview
Each EliteDesk node gets a dedicated status display showing:
- Node name (ed1-ed6)
- CPU usage (bar + percentage)
- Memory usage (bar + percentage)
- Temperature
- Pod count
- Status indicator (healthy/warning/critical)
Hardware Setup
Wiring (per node)
ST7789 Display Pico
-------------- ----
VCC → 3V3 (pin 36)
GND → GND (pin 38)
DIN (MOSI) → GP11 / SPI1 TX (pin 15)
CLK (SCK) → GP10 / SPI1 SCK (pin 14)
CS → GP13 (pin 17)
DC → GP8 (pin 11)
RST → GP12 (pin 16)
BL → GP15 (pin 20) - backlight PWM
USB Connection
Pico connects to EliteDesk via USB for:
- Power (5V from USB)
- Serial communication (stats updates)
Software Architecture
1. Pico Side (MicroPython)
main.py- Display driver and serial listener- Receives stats via USB serial
- Renders status bars and text
- Color coding for thresholds
2. EliteDesk Side (Python daemon)
node_stats_daemon.py- Runs on each EliteDesk- Gathers CPU, memory, temp, pod count
- Sends to Pico via serial every 5 seconds
Serial Protocol
Simple line-based format:
NODE:ed1
CPU:45
MEM:62
TEMP:58
PODS:3
STATUS:healthy
Files
pico/main.py- MicroPython display codedaemon/node_stats_daemon.py- Stats collectordaemon/install.sh- Systemd service installer
Status
🚧 In development - sketched by Vixy, Day 32
Notes
- Consider Pico W for future network-based updates
- Could add mini graphs for historical data
- Backlight dimming at night?