Skip to content

Pixelia 0.1.0 – Fundament

Choose a tag to compare

@github-actions github-actions released this 18 Oct 16:20
· 48 commits to main since this release
595fcc5

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

#1, #2, #3

Installation

  • Update (ab 0.2.0): auf der Einrichtungsseite des Geräts unter „Update“ die Datei pixelia-v0.1.0.bin hochladen.
  • 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.bin mit esptool ab Adresse 0x0 schreiben.