8x8x8 LED Würfel
AVR LED Cube with Java Software and Music Visualization
Projekt gestartet am 27.10.2011.Zuletzt aktualisiert am 03.04.2016.
Downloade die aktuelle Codebase als Zip.
Als Schulprojekt und für den Explore-IT Wettbewerb von SAP in Markdorf haben meine zwei Teamkollegen, Max hutattedonmyarm@me.com und Felix, zusammen mit mir diesen einfarbigen 8x8x8 LED Cube gebaut. Für Interessierte hier alle Software sowie Schaltplan und Boardlayout unter der GPLv3. Viel Freude damit.
Hardware
Achtung: Frank hat mir gemailt und erklärt, dass das FRAM außerhalb der Spezifikation betrieben wird. Es sollte 3,3V statt 5V bekommen. Ich werde vermutlich bald Schaltplan und Layout updaten. Es scheint aber auch so zu funktionieren. Vorsicht!
Ein AtMega32 steuert über einen 8bit Bus 8 Latches. Diese 64 bit steuern über je einen PNP Transistor die Anoden von jeweils 8 übereinander liegenden LEDs.
Des weiteren steuert der Prozessor 8 N-Kanal MOSFETs welche die Kathoden von 64 in einer x-z Ebene liegenden LEDs steuern.
Ausserdem kommuniziert der AtMega32 über einen FT232RL per USB mit einem PC. Über den TWI (I2C) Bus wird auf ein 1MBit FRAM zugegriffen.
Zusätzlich ist ein AtMega8 auf der Platine. Dieser liest über einen MSGEQ7 ein Audiosignal und sendet dieses über TWI an den AtMega32.
Eine ausführlichere Bauteilliste findet sich im Github Repository, im Ordner Hardware als parts.txt.
Software
Die Software besteht aus 3 großen Teilen, die CubeFirmware für den AtMega32, die AudioFirmware für den AtMega8 und CubeControl. Letzteres ist eine Plattformunabhängige Java Software, welche es erlaubt, Animationen für den LED Cube zu erstellen und diese an den Cube zu übertragen. Hierfür wird Java3D benötigt.
Cube Firmware
Die Hauptaufgabe der CubeFirmware ist es, Animationen aus dem FRAM zu laden und anzuzeigen. Nebenbei wird auf Anfragen per USB gewartet und entsprechend gehandelt. Auf Knopfdruck steuert die CubeFirmware den AtMega8 an, um Audio Daten zu visualisieren.
Audio Firmware
Die AudioFirmware liest den MSGEQ7 aus, um bei entsprechender Anfrage über TWI diese Daten zu übertragen.
CubeControl
Neben einigen Java Klassen um einen 3D LED Würfel darzustellen und mit diesem zu interagieren, besteht CubeControl auch aus einer Java Native Interface (JNI) Library, welche sowohl unter Windows als auch unter Unix die serielle Kommunikation für CubeControl ermöglicht. Für die 3D Darstellung wird Java3D benötigt. In der OS X Lion Variante von Java ist dies bereits enthalten, für Windows und Linux muss es separat heruntergeladen werden.
Hardware Emulator
Ein kleines Projekt, welches unter Unix ein Pseudo Terminal öffnet und die Cube Hardware emuliert. Kann zum testen von CubeControl genutzt werden.
UploadTest
Ein kleines CLI Tool um Testdaten und mit CubeControl gespeicherte Animationen an den Cube zu senden.
Download
Im GitHub Repository findet sich der gesamte Code sowie die Eagle Dateien und Schaltplan und Layout als PNGs.
Frank hat den Cube nachgebaut, den Code etwas verbessert und dieses Slow-Motion Video gemacht. Man kann sehr schön das Multiplexing verfolgen:
Andrej hat den Würfel nachgebaut und eine Röntgenaufnahme der Platine angefertigt, da sein Arbeitgeber das Eledus - SCIOX X-Ray inspection device produziert. Vielen Dank dafür!