Repository navigation
Pixelia 0.1.0 – Fundament
Pixelia 0.1.0 – Fundament
Hardware geprüft, Engine-Prototyp mit 30 fps, Simulator und Web-Flasher · 2026-10-18
Neu
- System: Firmware auf ESP-IDF 6.1 (C++20) mit eigener Partitionstabelle: zwei App-Plätze à 6 MB (A/B), Datenspeicher für Spielstände, Absturzberichte im Flash (Core-Dump), Rückfall über den Bootloader
- System: Programmcode und Konstanten laufen aus dem PSRAM (XIP), dadurch stört Flash-Schreiben die Anzeige nicht; der RGB-Interrupt ist IRAM-sicher
- Display: RGB-Panel 800×480 ohne eigenen Bildspeicher, Pixeltakt 24,6 MHz = 60 Hz, Timings 8/4/8, Bounce-Buffer 2 × 8 Zeilen im internen RAM
- Display: Bilddrehung um 180° ohne Mehrlast (Interrupt 20,2 → 20,5 %), Touch-Koordinaten drehen mit
- Display: Hintergrundbeleuchtung an GPIO 2 dimmbar (LEDC-PWM 200 Hz, 12 Bit)
- Touch: GT911 auf I²C-Adresse 0x5D (SDA 19, SCL 20, RST 38), Abfrage alle 20 ms ohne INT-Leitung
- Engine: 400×240 Pixel mit 256-Farben-Palette. Palette und 2× Hochskalieren laufen im Bounce-Buffer-Callback (ca. 1,8 CPU-Takte pro Ausgabepixel), Doppelpuffer im PSRAM mit Tausch am Bildende: stabil 30 fps
- Engine: Logik-Takt aus dem Bildzähler des Panels: ein Schritt pro Engine-Bild, nach einem verpassten Bild zwei, höchstens vier
- Engine: Szenen-Schnittstelle, die Gerät und Simulator gemeinsam nutzen; Zufallsgenerator PCG32; eigener PNG-Encoder (Deflate + LZ77) ohne Fremdbibliothek
- Engine: Weltzeit mit Zeitraffer; die Testszene zeigt Tag und Nacht mit Himmel nach Uhrzeit, Licht, Sternen und nachts schlafenden Vögeln
- System: Hardware-Detektiv mit Prüfbild (Farbbalken, Verläufe, Rand), Touch-Eckentest, Helligkeitsstufen, Pixeltakt- und Flash-Lasttest sowie geführten Tests im Tempo des Users (tour, tour2)
- System: Diagnose über die serielle Konsole mit Leistungsmonitor alle 2 s: Bildrate, Pixeltakt, Interrupt-Last, Aussetzer, Zeichen- und Logikzeit, CPU-Last pro Kern, freier RAM und PSRAM
- System: Weltzeit per Konsolenbefehl einstellbar (time HH:MM, speed X)
- Simulator: gleiche Szenen am PC im SDL3-Fenster (3.4.16) oder kopflos mit fester Uhrzeit, Vorspulen, Zeitraffer, PNG-Screenshot und Kontaktbogen mit 24 zufälligen Momenten
- Update: Web-Flasher auf GitHub Pages (ESP Web Tools 10.4.0) für die Erstinstallation per USB aus Chrome oder Edge
- Update: Release-Weg: Tag vX.Y.Z → Firmware mit dieser Version, Factory-Image und Release-Notes aus CHANGELOG.json
- System: GitHub Actions bauen bei jeder Änderung die Firmware (mit Größenbudget 75 % der App-Partition) und den Simulator (mit Screenshots und Kontaktbogen als Artefakt)
- System: Hilfsskripte zum Bauen, Flashen, Log-Mitlesen ohne Interaktion (mit Backtrace-Dekodierung) und für den Simulator
- Doku: Projektplan, Roadmap, geprüfte Hardware-Doku und verbindliche Lebendigkeits-Charta
Behoben
- Simulator: Der Linux-Build in der CI scheiterte an einem fehlenden Include (size_t mit GCC) und brauchte die ausdrückliche Erlaubnis, SDL ohne X11/Wayland zu bauen
Geprüft
- System: ESP32-S3 Revision v0.2, 16 MB Flash (QIO 80 MHz), 8 MB Octal-PSRAM im Chip (80 MHz), USB-UART CH340 mit Auto-Reset; per esptool und Systeminfo bestätigt
- Display: alle 16 Datenleitungen sowie DE, VSYNC, HSYNC und PCLK per Prüfbild bestätigt (Farbreihenfolge, gleichmäßige Verläufe ohne Sprünge, 1-Pixel-Rand an allen vier Seiten)
- Display: Pixeltakt fehlerfrei bis 40 MHz (ESP ohne Aussetzer, Panel ohne Bildfehler); gewählt 24,6 MHz mit Sicherheitsabstand
- Display: Hintergrundbeleuchtung mit 200 Hz still und flackerfrei; 500 Hz–1 kHz pfeifen hörbar, ab 2 kHz geht das Display unter 100 % aus
- Engine: Zeichenzeit 4,1 ms (48 Sprites), 8,4 ms (500) und 22,6 ms (2000); Interrupt-Last 20 %; interner RAM frei 299 KB, PSRAM frei 7,7 MB
- Engine: 664 KB Flash löschen und schreiben während der Animation: 0 Aussetzer, 30 fps, Zeichenzeit unverändert, im A/B-Sichtvergleich gleich flüssig
- Touch: Eckentest bestanden, Koordinaten passen auch bei 180°-Drehung
- Update: Factory-Image ab Adresse 0x0 startet normal; Web-Flasher am Board des Users getestet (Pixelia 0.1.0 aus dem Release, 60 Hz, 30 fps)
Hinweise
- Update: 0.1.0 hat noch keine Update-Funktion über WLAN, installiert wird per Web-Flasher
- Display: Steht das Gerät mit dem USB-Kabel rechts, braucht es die 180°-Drehung (Konsolenbefehl rot 180)
Pull Requests
Installation
- Update (ab 0.2.0): auf der Einrichtungsseite des Geräts unter „Update“ die Datei
pixelia-v0.1.0.binhochladen. - Erstinstallation: Web-Flasher https://baldesarra.github.io/pixelia/ öffnen (Chrome oder Edge am PC), Board per USB-Datenkabel anschließen, auf „Installieren“ klicken.
- Von Hand:
pixelia-v0.1.0-factory.binmit esptool ab Adresse0x0schreiben.