Led Matrix: Unterschied zwischen den Versionen

aus Metalab, dem offenen Zentrum für meta-disziplinäre Magier und technisch-kreative Enthusiasten.
Wechseln zu: Navigation, Suche
 
(16 dazwischenliegende Versionen von 9 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Medien ===
+
=== WTF? ===
  
<div>
+
[[Bild:Matrix_frontside.jpeg|thumb|200px|hypnomatrix is hypnotizing]]
<div style='float:left'> [[Bild:Matrix_frontside.jpeg|thumb|left|300px|hypnomatrix is hypnotizing]]</div>
+
[[Bild:Matrix_backside.jpeg|thumb|200px|all hail to the hypnomatrix]]
<div style='float:left'>[[Bild:Matrix_backside.jpeg|thumb|300px|left|all hail to the hypnomatrix]]</div>
+
 
</div>
+
For the LED Matrix we wanted to build on the [[CCCamp2007]] we decided to design a GNU LEDMatrix Controller/Driver setup. It consists of two parts the FPGA board and a several driver electronics boards. Now almost one year later we're finally done!
<div style='clear:both'></div>
+
 
 +
''see also:'' [http://www.flickr.com/photos/1000points/2509802438/ metalab led matrix - demo "die ewigkeit schmerzt"](Video)
 +
 
 +
== Animations ==
 +
 
 +
Two Animations for the linuxwochen: [[Bild:Metalabanim.zip]]
  
  
Zeile 12: Zeile 17:
 
</div>
 
</div>
 
<div style='clear:both'></div>
 
<div style='clear:both'></div>
 
 
For the LED Matrix we want to build on the [[CCCamp2007]] we decided to design a GNU LEDMatrix Controller/Driver setup. It will consist of two parts the FPGA board and a several driver electronics boards. Now almost one year later we're still working on it :)
 
  
 
== Status ==
 
== Status ==
Zeile 20: Zeile 22:
  
 
* main svn: https://whatever.metalab.at/projects/FPGAMatrix/
 
* main svn: https://whatever.metalab.at/projects/FPGAMatrix/
* cliffords mplayer patch: http://svn.clifford.at/metaleds/
+
* cliffords mplayer patch: http://svn.clifford.at/handicraft/2008/metaleds/
  
 
== Usage examples ==
 
== Usage examples ==
Zeile 26: Zeile 28:
 
  netcat -l -p 7000 > /dev/lp0
 
  netcat -l -p 7000 > /dev/lp0
  
Format is: 0xC0 and then 72x48 bytes pixeldata (ranging from 0x00 to 0x0F)
+
 
 +
 
 +
Format is: 72x48 bytes of pixeldata (ranging from 0x00 to 0x0F) followed by a single 0x80 (to flip framebuffers)
 +
 
 +
 
 +
== Real-time access ==
 +
 
 +
=== Raw protocol ===
 +
 
 +
72x48 = 3456 octets of pixel data followed by a terminating 0x80 octet.
 +
 
 +
Each pixel data octet represents one pixel's brightness, ranging from 0 (0x00, off) to 15 (0x0F, brightest).
 +
 
 +
The pixels start at the upper left corner and are numbered in [http://en.wikipedia.org/wiki/Row-major_order row-major order] (see the diagram below).
 +
 
 +
All output is double-buffered on the fpga, so you have to send a 0x80 after the pixel data to flip the frame buffers.
 +
<pre>
 +
________________________
 +
| 1  2  3 ...          72|
 +
|73 50 ...            144| 
 +
|.                      |
 +
|.                      |
 +
|...                3456|
 +
|________________________|
 +
</pre>
 +
 
 +
=== Using with C/C++ ===
 +
You can use the metalib library from here; it comes with a couple of demos:
 +
 
 +
https://whatever.metalab.at/projects/FPGAMatrix/client/
 +
 
 +
=== Using with Python ===
 +
You can use functions like getpixel, setpixel, submit with the python classes in https://whatever.metalab.at/projects/FPGAMatrix/python/
 +
 
 +
It supports the (now encouraged) way of using TCP. A example (Game of Life) is available.
  
 
== Specs ==
 
== Specs ==
Zeile 43: Zeile 79:
 
* 74HC595 shifting registers
 
* 74HC595 shifting registers
 
== New MiniITX Board ==
 
== New MiniITX Board ==
VIA EPIA-PD
+
VIA EPIA-M 1000G
 
+
 
+
* http://robots.net/article/983.html article on this board
+
 
+
ok .. i2c will not work because via i2c is actually SMBus running at 16khz :(
+
.. but hey what about the OBVIOUS?
+
there is a parallelport which should give us 8-10 mbit :)
+
  
linux stuff in the works
+
1 Ghz
 +
1 Gig RAM
 +
MPEG2 Decoderchipset
  
  
 
[[Kategorie:WhateverLab]]
 
[[Kategorie:WhateverLab]]
 
[[Kategorie:Projekte]]
 
[[Kategorie:Projekte]]
__NOTOC__
 

Aktuelle Version vom 20. April 2009, 00:12 Uhr

WTF?

hypnomatrix is hypnotizing
all hail to the hypnomatrix

For the LED Matrix we wanted to build on the CCCamp2007 we decided to design a GNU LEDMatrix Controller/Driver setup. It consists of two parts the FPGA board and a several driver electronics boards. Now almost one year later we're finally done!

see also: metalab led matrix - demo "die ewigkeit schmerzt"(Video)

Animations

Two Animations for the linuxwochen: Datei:Metalabanim.zip


Status

Everything is soldered and it works. We can stream videos via the parallel interface of the via board to the matrix with 72fps :)

Usage examples

clifford/mplayer/mplayer-bin -vo metaleds:/dev/lp0 -framedrop -vf scale -zoom -x 72 -y 48 test.avi
netcat -l -p 7000 > /dev/lp0


Format is: 72x48 bytes of pixeldata (ranging from 0x00 to 0x0F) followed by a single 0x80 (to flip framebuffers)


Real-time access

Raw protocol

72x48 = 3456 octets of pixel data followed by a terminating 0x80 octet.

Each pixel data octet represents one pixel's brightness, ranging from 0 (0x00, off) to 15 (0x0F, brightest).

The pixels start at the upper left corner and are numbered in row-major order (see the diagram below).

All output is double-buffered on the fpga, so you have to send a 0x80 after the pixel data to flip the frame buffers.

 ________________________
| 1  2  3 ...          72|
|73 50 ...            144|  
|.                       |
|.                       |
|...                 3456|
|________________________|

Using with C/C++

You can use the metalib library from here; it comes with a couple of demos:

https://whatever.metalab.at/projects/FPGAMatrix/client/

Using with Python

You can use functions like getpixel, setpixel, submit with the python classes in https://whatever.metalab.at/projects/FPGAMatrix/python/

It supports the (now encouraged) way of using TCP. A example (Game of Life) is available.

Specs

72x48 pixels totals 3456 blue leds 54 column driver modules (current source). 1 row driver mudule (current sink)

The 8 rows are each connected to a powermosfet and are driven to ground one at a time (so the matrix is 8times multiplexed). For driving the mosfets we use two Quad-mosfetdriver which in turn are controlled by a 8bit shifting register.

For the columns we take almost the same components except that we have to source current. The mosfets can source up to 250mA but we limit it to about 20mA.

Used ICs

  • NID5001N MOSFETS for the row driver
  • TC4467 used as column driver
  • 74HC595 shifting registers

New MiniITX Board

VIA EPIA-M 1000G

1 Ghz 1 Gig RAM MPEG2 Decoderchipset