Dieses Blog durchsuchen

ESP32 Video Pong – Retrogaming trifft moderne Mikrocontroller-Technik

Es ist schon eine Weile her, dass ich mir Zeit genommen habe, über eines meiner letzten Projekte zu berichten. Diesmal geht es um ein Thema, das zwei meiner großen Leidenschaften vereint: Die Faszination für Retro-Gaming aus meiner Jugend und die Möglichkeiten moderner Mikrocontroller-Technik.

Wer in den 1970er Jahren aufgewachsen ist, kennt es noch: Pong, eines der ersten kommerziell erfolgreichen Videospiele überhaupt. Zwei Paddles, ein Ball, ein Bildschirm – mehr brauchte es nicht für stundenlangen Spielspaß. Was damals mit dedizierter Analog-Schaltungstechnik realisiert wurde, lässt sich heute elegant mit einem einzigen Mikrocontroller umsetzen.

Die Herausforderung dabei: Ein echtes analoges PAL-Videosignal direkt aus einem ESP32 zu erzeugen. Kein HDMI, kein VGA – sondern gutes altes Composite-Video (FBAS), wie es ein guter alter Röhrenfernseher versteht.

Ursprünglich habe ich das Projekt für den FH-Day an der Fachhochschule Kärnten entwickelt. Die Idee war, Studierenden und Besuchern zu zeigen, was mit moderner Embedded-Hardware möglich ist – und gleichzeitig eine Brücke zur Technikgeschichte zu schlagen.

Das Vectorgameboard V1.0 – Hardware nach Maß

Für dieses Projekt habe ich nicht nur Software gebastelt, sondern auch eine dedizierte Platine entwickelt: Das Vectorgameboard V1.0. Diese Platine soll ein echtes "All-in-One"-Design sein (oder in künftigen Revisionen werden) und alle notwendigen Komponenten auf einem Board vereinen:

die Platine mit ESP32 als Rechenknecht

Hardware-Features im Überblick:
  • ESP32 als Herzstück
  • Zwei Potentiometer für die Paddle-Steuerung (analoges Spielgefühl!)
  • Zwei Taster für Modusauswahl und Spielstart
  • Video-Ausgang über RCA-Buchse (Composite/FBAS)
  • Audio-System mit integriertem Verstärker und kleinem Lautsprecher
  • Externer DAC für hochpräzise Vektordarstellung (X-Y-Modus)

Was das Board besonders macht: Es ist nicht nur für PAL/NTSC-Composite-Video ausgelegt, sondern auch für den X-Y-Modus. Das bedeutet, man kann es auch an ein Oszilloskop anschließen und damit klassische Vektor-Grafiken darstellen – ganz wie bei den alten Vektor-Spielautomaten der 1980er Jahre.

Die kompletten Schaltpläne und Eagle-Layouts sind im GitHub-Repository verfügbar. Open Hardware eben.

Schaltplan
https://github.com/ingmarsretro/ESP32_VideoPong
https://github.com/ingmarsretro/ESP32_vectorgame

Die Software: PAL-Signale erzeugen

Die Software-Seite des Projekts war mindestens genauso spannend wie die Hardware. Das Erzeugen eines PAL-Videosignals ist etwas zeitkritisch. Jede Bildzeile muss exakt getimed sein, sonst wird das Bild instabil oder gar nicht angezeigt. Hier habe ich auf die Arbeit von bitluni.net zurückgegriffen. Er hat hier ein tolles Projekt realisiert und eine eigene library erstellt. Die Grundlagen des PAL Videosignals und die Erzeugung mittels ESP32 hat er in seinem Blog ausführlich erklärt.

 

Videoausgabe auf PAL – Bildschirm

Technische Details:

  • Das Videosignal wird auf GPIO 25  ausgegeben (GPIO26 ist auch möglich)
  • Verwendung der bitluni ESP32Lib (Version 0.3.1)
  • Zwei Spielmodi: Singleplayer (gegen "Computer") und lokaler Multiplayer (Spieler gegen Spieler)
  • Sound-Feedback bei Ballkontakt, Punkten und Spielende über GPIO 27
  • Integration von Bitmaps für Logos und Spielergrafiken
Arduino IDE und Kompatibilität der Libraries

Ein wichtiger Hinweis für alle, die das Projekt nachbauen möchten: Die Video-Generierung funktioniert nur mit ganz bestimmten Library-Versionen! Ich habe viel Zeit damit verbracht, das herauszufinden und eine stabile Ausgabe zu erreichen. Die 3.x.x Versionen der ESP32-Bibliotheken sind aktuell nicht kompatibel.

Folgende Versionen müssen zwingend verwendet werden:

KomponenteVersion
ESP32 by Espressif Systems2.0.0
Arduino ESP32 Boards2.0.11
bitluni ESP32Lib0.3.1

Die Compiler-Warnungen, die dabei auftreten, können ignoriert werden. 

Der Spielspaß: Analoges Feeling im digitalen Zeitalter

Wenn man das fertige Board in Betrieb nimmt und den ersten Ball über den Bildschirm fliegen sieht, ist das ein besonderer Moment. Die Potentiometer sorgen für ein echtes analoges Spielgefühl – ganz anders als mit digitalen Gamepads. Und der kleine Lautsprecher auf dem Board gibt bei jedem Ballkontakt einen authentischen "Piep" von sich.

Im Startbildschirm kann man zwischen Singleplayer (gegen den Computer) und lokalem Multiplayer wechseln. Gerade der Zwei-Spieler-Modus macht richtig Spaß – man sitzt nebeneinander am Board, jeder an seinem Potentiometer, genau wie damals auf den alten Pong-Konsolen.

Pin-Belegung

Für alle, die das Projekt nachbauen möchten, hier die komplette Pin-Belegung:

KomponenteGPIOBeschreibung
Video Out25Composite Signal
Buzzer/Audio27Soundausgabe
Poti 135Spieler 1 (Links)
Poti 234Spieler 2 (Rechts)
Button 132Modus wechseln
Button 233Start / Aktion
Von PAL bis Vektor: Die Dual-Mode-Fähigkeit
 
PONG als X-Y Vectorausgabe am Oszilloskop

Auswahlmenue

Was das Vectorgameboard wirklich einzigartig macht, ist seine Dual-Mode-Fähigkeit. Während die hier beschriebene Pong-Software für PAL-Composite-Video entwickelt wurde, kann das gleiche Board auch für Vektor-Software genutzt werden.

Der interne DAC und auch ein  externer DAC (MCP4922 Dual 12 bit SPI DAC) ermöglicht es, präzise X-Y-Signale auszugeben. Damit kann man das Board an ein Oszilloskop anschließen und klassische Vektor-Grafiken darstellen – wie bei den legendären Spielautomaten “Asteroids” etc… Das ist ein Projekt, das ich definitiv noch weiterverfolgen werde.

Open Source und Open Hardware

Wie bei vielen meiner Projekte liegt mir auch hier die Reproduzierbarkeit am Herzen. Die Quellcodes der bisherigen Versionen sind auf GitHub verfügbar:

https://github.com/ingmarsretro/ESP32_VideoPong

Jeder ist eingeladen, das Projekt nachzubauen, zu modifizieren oder weiterzuentwickeln. Besonders freuen würde ich mich über Feedback von anderen Retro-Enthusiasten oder über Weiterentwicklungen der Software.

Ein besonderer Dank geht an bitluni für die hervorragende ESP32Lib, ohne die dieses Projekt in dieser Form nicht möglich gewesen wäre. Die Library ist ein Paradebeispiel dafür, wie gut durchdachte Open-Source-Software komplexe Projekte erst ermöglicht.

Brücke zwischen den Welten

Das ESP32 Video Pong Projekt zeigt eindrucksvoll, wie man mit modernen Mikrocontrollern die Technik vergangener Jahrzehnte nachbilden kann. Es ist mehr als nur ein nostalgisches Spielzeug – es ist eine funktionierende Demonstration dessen, wie Videosignale aufgebaut sind und wie zeitkritische Embedded-Programmierung funktioniert.

Für mich persönlich war es auch eine Reise in meine eigene Vergangenheit. Als Kind habe ich stundenlang auf verschiedenen Konsolen gespielt, ohne zu verstehen, was technisch dahintersteckt. Jetzt, Jahrzehnte später, kann ich nicht nur die Technik nachvollziehen, sondern sie auch selbst nachbauen und verbessern.

Vielleicht inspiriert dieses Projekt ja den einen oder anderen, selbst aktiv zu werden. Die Kombination aus Retro-Flair und moderner Mikrocontroller-Technik hat definitiv ihren Reiz.

Viel Spaß beim Nachbauen – und beim Spielen auf dem guten alten Röhrenfernseher oder Oszilloskop!

Keine Kommentare:

Kommentar veröffentlichen