Hallo zusammen,
nach einigen Jahren für Prototypen, Planung, Programmieren, Schrauben und Löten ist er nun endlich fertig:
Mein 12x12x12 RGB LED Cube powered by Raspberry Pi
--> Homepage zum Projekt <--
Auf der Seite gibt es einen Download-Bereich. Die Sourcen können auf dem PC kompiliert und in Matlab angezeigt werden.
Ein paar Zahlen, Daten, Fakten:
58711 Zeilen C-Code (2.12 Mb in 75 Dateien)
4717 Zeilen Animations-Steuer-Scripte (140 kb in 32 Dateien)
4507 Zeilen VHDL (695 kb in 24 Dateien)
1728 RGB LEDs + 1160 weitere elektronische Bauteile
Über 13.000 Lötpunkte
910 Löcher und Gewinde für 195 Schrauben
7m Alu-Profile
Ganz grob ein paar Worte zum Aufbau:
1) Hardware
- Die Darstellung erfolgt ebenenweise mit einer Bildwiederholfrequenz von 280 Hz (pro Ebene knapp 0,3ms)
- Die Farben der aktuell leuchtenden Ebene (144 RGB-LEDs) werden über 27 x TLC5940 gesteuert
- Die Auswahl der Ebenen erfolgt über insgesamt 36 FETs (IRF4905)
- Die Daten an die TLC5940 kommen über SPI vom Raspi (per DMA-Transfer)
- Für die Spannungsversorgung gibt es 2 Netzteile: Ein kleines für 5A und ein großes für 20A (das kleine erzeugt weniger Wärme, ist aber zu klein für ausreichende Helligkeit des Würfels bei Tageslicht)
- 2 PWM-gesteuerte 60mm-Lüfter sorgen für geregelte Kühlung, falls erforderlich
- Zur Messung diverser Spannungen (Diagnose, ...), für Audio-Eingänge und für die Regelung der Lüfter gibt es 2 AD-Wandler (3208) auf der Platine
- Zur Steuerung der Ebenen-FETs, der AD-Wandler, der Netzteile und der Lüfter gibt es ein FPGA (Außerdem: Abschalten der Netzteile, wenn der Raspi heruntergefahren ist)
- Das FPGA hängt ebenfalls über SPI am Raspi. Die Audio-Daten können als Samples oder als FFT ausgelesen werden.
2) Software
- pro 10ms werden die RGB-Daten für bis zu 6 Ebenen berechnet (idR wird das dargestellte Bild mit 50Hz neu berechnet)
- Wenn die Rechenzeit hierzu nicht ausreicht, dann werden entsprechend weniger Ebenen berechnet
- Die Daten der Darstellung stammen aus Animationsobjekten (z.B. Rubiks Cube, Regen, ...)
- Zusätzlich gibt es Objekte für die Transformation der Daten (Position, Skalierung, Drehung, Farbe, ...)
- Die Objekte werden dynamisch erzeugt, parametriert und für die Darstellung ausgewählt (und nach der Darstellung entfernt). Hierzu gibt es einen Interpreter, der zur Laufzeit parallel ein paar Skripte abarbeitet, welche Animation gerade mit welchen Parametern dargestellt werden soll (Die Übergänge zwischen den Animationen entstehen, indem Skripte die Transformationen und die Objekte steuern)
- Neben den Funktionen für die Darstellung gibt es Module für die Hardware-Steuerung, die Lüfterregelung, Diagnose, einen Fehlerbericht, einen Failsafe-Mode, die Bedienung etc.
- Zur Dartellung von Text liest die SW ein paar TTF-Schriftarten ein und wertet diese zur Laufzeit auf Oberflächen von 3D-Objekten aus.
- Nach der Initialisierung werden alle Funktionen als Timer-Tasks ausgeführt (meist im 10ms-Raster)
3) Schnittstellen
- An der Uhr gibt es nur einen Taster zum Ein- und Ausschalten, alle weiteren Bedienungen erfolgen über eine Webseite (nur im lokalen Netz verfügbar)
- Auf der Webseite werden Betriebsmodi, Helligkeit und Lebendigkeit eingestellt
- Für die Entwicklung zeigt die Webseite zudem wichtige Messwerte an, auch können wichtige Parameter über die Webseite verstellt werden. Ein Messfenster zeigt 3 auswählbare zeitliche Verläufe, z.B. Temperaturen oder CPU-Last ("Applikationswerkzeug").
- Ein Bericht auf der Webseite zeigt die letzten Fehlermeldungen etc an.
- Wenn ein Fehler auftritt, dann versendet die Uhr einen Fehlerbericht per E-Mail an mich
- Zur Entwicklung der Animationen können die dargestellten bzw. die darzustellenden Daten via TCP zwischen dem Würfel und Matlab ausgetauscht werden (MiL).
- Zudem läuft der Code auch in einer kleinen Progrmmierumgebung auf dem PC; auch zwischen PC und Würfel bzw. zwischen PC und Matlab können die RGB-Daten ausgetauscht werden (SiL).
Ein guter Rat zuletzt:
Bitte nur nachbauen, wer einen sozialverträglichen Aufstellort, mehr als 4 Jahre seiner Freizeit und ca. 2700 EUR übrig hat
Viel Spaß mit den Videos auf der Webseite wünscht
Flip