Skip to content

Latest commit

 

History

History
179 lines (103 loc) · 9.9 KB

README.md

File metadata and controls

179 lines (103 loc) · 9.9 KB

Poxelbox

Die Poxelbox ist ein Modulares 36-Boxen LED-System, welches über das WS2812B-Protokoll angesteuert und mittels eines Raspberry-Pi kontrolliert wird.

Mithilfe von eigenen Kontrollern kann man auf dieser LedWand verschiedene Retro-Spiele spielen.

Repos

Hier ist der einfachheitshalber eine listung aller Repositorys, welche aktuell zur Proxelbox gehören:

Name Beschreibung
Dokumentation Dieses Repository mit der Hauptdokumentation über das gesamte Projekt
Controller-Adapter Software für den Controller-Adapter
Haupt-Software Software, welche die Spiele/Animation etc. bereitstellt und sozusagen das Hirn ist.
Java-Config-Tool Java-application zur Konfiguration der Poxelbox
Web-Config-Tool Webapp zur Konfiguration der Poxelbox

Übersicht

Der Poxelbox-Aufbau sieht so aus:

Poxelbox System image

Im Normalfall ist das Poxelsystem 1 geschlossen zusammen angebracht und regengeschützt.

Poxelboxen

Mit Poxelboxen sind die einzellnen Boxen gemeint, welche zusammen als Poxelbox[] (2) bzw. PoxelboxArray (2) das "Display" darstellen.

Mehr zum Aufbau des Poxelbox[] (2) findet man hier

Die Verkabelung der Boxen erfolgt mittels 3-Pin DMX-Kabel, welches auch genutzt wird um die Verbindung (4) zum LED-Wand-Controller (3) herzustellen. Über dieses DMX-Kabel läuft das WS2812B-Protokoll

LED-Wand-Controller (3)

Der LED-Wand-Controller (3) besteht aus einem Raspberry-PI und ist das Hirn des Systems.

Er wird über die GPIO-Pins des Raspberry-Pi's an den Poxelbox[] (2) angeschlossen und über das WS2812B-Protokoll gesteuert.

Hier wird die Hauptsoftware ausgeführt, welche den Poxelbox[] ansteuert, spiele Bereitstellt und den Schnittstelle zur Konfiguration der Poxelbox.

In der Software-Section unterhalb wird diese genauer beschrieben.

Damit die Spieler über einen Controller auf die Poxelbox zugreifen können, wird der Controller-Adapter (5) gebracht.

Controller-Adapter (5)

Controller-Adapter-Image

Der Controller-Adapter (5) ist ein Arduino-Nano-Board, welcher über ein USB-Kabel am Debug-Port an einen der USB-Ports des LED-Wand-Controller (3) gesteckt wird.

Wichtig: Damit der Controller-Adapter funktioniert, muss er das einzige USB-Gerät am LED-Wand-Controller (3) sein, da er sonst nicht Identifiziert werden kann

Am Controller-Adapter (5) ist über Jumper-Kabel außerdem noch mit einem RJ45-Stecker verbunden, welcher zum Game-Controller (7) über ein LAN-Kabel (8) verbunden wird. Dies wird nur genutzt um die Knöpfe des Game-Controllers (7) abzufragen.

Der Erfahrung nach sollte das Kabel maximal 3 Meter länge haben, da längere Kabel zu größe Verluste in der Übertragung haben

Game-Controller (7)

Controller-Adapter-Image

Ein modifierter NES-Controller, welcher über ein Ethernet-Kabel (8) (Aber nicht dem Ethernet-Protokoll) an den Controller-Adapter (5) angeschlossen ist.

Software

Grundlegend besteht die Poxelbox aus folgenden Software-Systemen, welche wie folgt miteinander Kommunizieren:

Poxelbox System image

Für die Software-Produkte liegt im jeweiligen Git-Repo selber eine Anteilung zum Aufsetzen der Debug/Develop Umgebung, daher wird dies hier vernachlässigt!

Haupt-Software (3)

Hier findet man das Github-Repo der Hauptsoftware.

Die Hauptsoftware ist in Python3 geschrieben und für folgendes zuständig:

Ansteuerung der Poxelboxen

Über die GPIO-Pins des Raspberry-Pi's wird über das WS2812B-Protokoll das "Display" angesteuert.

Folgende Pins werden hierbei genutzt:

  • 5V: Logic-Level-Spannung
  • GND: Ground
  • D12: Datenübertragung

Kommunizieren mit dem Controller

Über den Controller-Adapter, welcher mittels USB am Raspberry-Pi angeschlossen ist (Mehr dazu im Übersicht's-Teil), werden Befehle von den Controllern/Spielen angenommen

Bereitstellung der Spiele und Animationen

Die Hauptsoftware (3) stellt verschiedene Spiele und Animationen bereit, welche über die Poxelbox (ab)gespielt werden können.

Bereitstellung der Config-Schnittstelle

Zur externe Konfiguration ohne Bildschirm, Tastatur, etc. an den Pi anschließen zu müssen, stellt die Hauptsoftware (3) auch eine Http-Config-Schnittstelle zur Verfügung, welche über ein Konfigurationstool angesprochen werden kann.

Aktuell gibt es verschiedene Konfigtools, welche mit dieser Http-Schnittstelle kommunizieren können.

Alle diese Tools werden auch hier im Software-teil separat erklärt.

Eine Liste der Konfigurationseinstellungen mit Erklärungen findet man in der unteren Sektion Konfiguration der Haupt-Software.

Hosten des Web-Config-Tool

Für mehr Infos hierzu bitte in die eigene Software-Sektion für das Web-Config-Tool schauen

Controller-Adapter (7)

Hier findet man das Github-Repo des Controller-Adapters

Über einen Rj45-Stecke (Nicht über Ethernet nur über diesen Stecker) ist der Controller-Adapter (7) mit dem Game-Controller (8) verbunden.

Und über USB mit der Haupt-Software (3) des LED-Wand-Controller (2).

Wichtig: Damit der Controller-Adapter funktioniert, muss er das einzige USB-Gerät am LED-Wand-Controller (2) sein, da er sonst nicht Identifiziert werden kann

Im NES-Game-Controller (8) ist ein Shift-register verbaut, welches alle Knöpfe des Controllers einliest. Dieses wird über den RJ45-Stecke direkt an den Controller-Adapter gemapped, welcher es einließt, interpretiert und als Spielersignal an die Haupt-Software (3) weitergibt.

Web-Config-Tool (4)

Hier findet mand as Github-Repo des Web-Config-Tool's

Webtool-Preview

Das Web-Config-Tool (4) ist zwar eine separate Software und wird nicht als Teil der Haupt-Software (3) gesehen. Jedoch wird ein Build von dieser immer über den Haupt-Software-Webserver, welcher auch die Config-Schnittstelle stellt, gehostet. Sprich sobald man Netzwerkzugriff zur Haupt-Software (3) hat, wird man automatisch bei einem Webseitenaufruf (Http-Request) auf das Web-Config-Tool weitergeleitet.

Für Informationen zu Konfigurationsmöglichkeiten bitte in die Sektion Konfigurationen schauen

Auch wenn das Web-Config-Tool nicht von der Haupt-Software (3) abgerufen und separat gehostet wird, kann es auf die Config-Schnittstelle der Haupt-Software (3) zugreifen.

Dazu muss nur der Advanced Mode aktiviert werden und in der sich öffnenden Sektion der Endpunkt auf den Server mit der Haupt-Software (3) geändert werden.

Java-Config Tool (6)

Hier findet mand as Github-Repo des Java-Config-Tool's

Webtool-Preview

Im gegensatz zum Web-Config-Tool muss das Javatool selber installiert haben und die Schnittstelle der Haupt-Software (3) angeben. Nach der Verbindung kann man dann die Einstellungen bearbeiten.

TODO: Bild preview / Info

Konfiguration der Haupt-Software

Wie oberhalb bereits beschrieben kann man über verschiedene Tools die Haupt-Software konfigurieren.

Nach jedem Speichern der Einstellungen im System, startet die Haupt-Software neu um alle Einstellungen korrekt zu übernehmen.

Heißt nach jedem Speichern muss man sich bei den Config-Tools neu mit dem System verbinden.

Im folgenden wird jede Einstellung erläutert.

General-Settings

Is Dev-Environment?

Die Haupt-Software kann in zwei verschiedenen Modi laufen. In der Entwicklungsumgebung (Dev-Environment) wird das Hauptprogramm, die Spiele und Animationen nicht über die Poxelbox, sprich andere Hardware, angezeigt. Sondern über Py-Game als Fenster simuliert. Weiter erfolgen auch die Eingaben der Spieler nicht über einen externen Controller, sondern über Pygame.

Sprich ist diese Einstellung aktiviert, wird keine externe Hardware der Poxelbox gebraucht um die Software zu entwickeln.

PyGame-Pixel-Scale

Im Verbund mit der obrigen Einstellung wird hier festgelegt wie viele PyGame-Pixel einen Poxelbox-Pixel darstellen.

Esp-Baud

In der Produktionsumgebung, also mit der Poxelbox-hardware, kommuniziert der Controller-Adapter mit der hier angegebenen BAUD-Rate.

Diese Eigenschaft heißt aufgrund von früheren Planungen Esp-Baud und nicht Controller-Adapter-Baud (Legacy)

Use test scene?

Zum testen der Poxelbox und zur Fehlersuche gibt es diesen Modus. Er startet nicht das Hauptprogram mit den Spielen und Animationen, sondern läuft nur eine Animation durch, welche sich von unten nach oben aufbaut.

Dies wird genutzt um zu schauen, ob die Verkabelung der Box korrekt erfolgt ist.

Use old WS2812B-Schema?

Im Verbunde mit der obrigen Einstellung wird hier festgelegt welches der beiden Ansteuerungssysteme genutzt werden soll.

Ansteuerungssystem

Der Nachteil des alten Systems ist, dass man die Poxelbox-Reihen immer abwechseln Umgedreht und Nicht-Umgedreht aufbauen musste. Dies kann beim neuen Vernachlässigt werden.

Wall-Size (X/Y):

Diese beiden Einstellungen geben an wie viele von den Poxelboxen, nicht Pixeln, Boxen aufgebaut sind. X ist die Breite, Y ist die Höhe.

Spiele und Animationen

Für alle Spiele und Animationen kann man einstellen ob diese aktiviert sind oder nicht. Nicht aktivierte Spiele/Animationen werden im Hauptmenu der Software nicht angezeigt und können somit nicht geladen werden.

Hilfreich, wenn man die Poxelbox in einer größe aufbaut, welche von einem der Spiele/Animationen nicht unterstützt wird.