- EliteDesk: 240x320 color ST7789 via Pico (Day 32 design)
- Pi: 128x64 mono SSD1306 horizontal bars (Day 85 redesign)
🦊 Built with love by Vixy
71 lines
1.6 KiB
Markdown
71 lines
1.6 KiB
Markdown
# 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 code
|
|
- `daemon/node_stats_daemon.py` - Stats collector
|
|
- `daemon/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?
|