solderlab logo

banner

RGB LED Matrix - Modular Segments

This is our third project. A 32x16 RGB Led Matrix divided into segments of 8x8 Leds with Ping Pong Balls as diffusors.

The main challenge for this project was to control 1536 individual LEDs (512x RGB) with only one ATmega328. Not enough, we also claimed to have PWM one each LED.

What we achieved is a system that is capable to drive 512 RGB LEDs with 216 colors each and a frame rate of 20 fps. Furthermore, the microcontroller is still capable to manage real-time data transfer from a host PC via UART. Probably you may ask: Why 216 colors? This is a compromise between available memory (2 kB RAM) and speed (PWM, ...). Here we used six states for each color resulting in 216 colors fitting just well into one byte (256 different states). Therefore we only need 512 bytes of RAM for the complete matrix and PWM is still fast enough to manage the given color depth. We believe that this is really on the edge of what is possible (with Atmega328 and this design).

The matrix has two modes: First, it just receives data from a PC (via Processing) and displays it. In second mode the µC itself calculates a plasma algorithm real-time without any external connection. The mode can be chosen by a simple hardware switch on the back side of the wall.

 

Segments

The matrix is build modular in sections of 8x8 LEDs, thus it can be easily enlarged. However, for the moment we spend more than enough time in soldering and wiring. The size of one segment is 40x40 cm which makes 80x160 cm of wall size in total. Eyecandy!

 

First Segment

Here is a video after finishing the first segment:

As already mentioned the total matrix consists of eight of such segments. Each segment is controlled by one LED driver mounted on the backside. The LED driver has four 8 bit shift registers, 8 transistor and resistors, data-in and data-out plugs (2x2 RJ45) and a 34 ribbon cable plug (only 32 used) for the actual LED contacts. The data-out junctions serve as input for the next segments. The ATmega328 sits on a separate main controller board. Some nice images and schemes about data transmission of the LED driver and main controller boards are show below.

 

All eight Segments

After finished all 8 segments we just plugged them together and for stability and aesthetic reasons we put a wooden frame around them. Below you can find some unsorted images and a first video. Probably we will create another clip since we didn't show all of its capabilities. E.g. we are already able to stream any video source (web cam, video, ...) to the wall but we are still not happy with the colors, we need to tweak a little. In addition, we need to be a little bit more creative and invent some nice stuff to display.

 

Partlist

The partlist can be found here: PartList Modular Plasma Wall. We hope we did not forget too much!

 

Code, Schematics and Layout

You can find the source code in the download section. It is written in the arduino software environment which makes it easy to develop code and upload it to the board. But you can open it with any editor and you can use the C-code in your project if you like. In addition you can find the source code for the Processing program that is used to pass animations from PC to the plasma wall. Note that the microcontroller on the main board has to be in remote mode for receiving and displaying data from a PC. The remote mode is activated by switch SW1 (see schematics).

 


Comments   

 
0 # Sander 2014-01-24 18:20
Hello guys!

I will sell the PCB at the shop put i see only 2 data 1 in and 1 out,
but on the pictures i see 2 in 2 out??

How we can fix this???

cheers!!
Reply | Reply with quote | Quote
 
 
+1 # Rafa 2013-11-07 02:15
What would the pins to connect it to the arduino mega?

i want use a arduino mega for this proyect but i cant understand, how i can make the comunication with the program to arduino

I can use the program for the plasma wall "Main_Program_P rocessing.pde" to connect my arduino mega to PC
Reply | Reply with quote | Quote
 
 
0 # Pigsty 2013-09-12 17:08
Hi guys
Could you tell us how to connect a pc running glediator to the main board . Do I need to go via an ardiuno ? Do I need to load a sketch?

Cheers
Reply | Reply with quote | Quote
 
 
0 # Sam 2013-10-01 03:35
I don't think these will work with that software. its a separate project from the Gladiator software.
Reply | Reply with quote | Quote
 
 
0 # iam99pk 2013-07-17 13:29
hey i was wondering what inputs you use the arduino board and where on the first board they connect .. and the inputs of the power suply you use and how they are connected :) and how many 80 * 160, you can connect you after another? :)
it is a awsome projekt! : D
Reply | Reply with quote | Quote
 
 
0 # Sam 2013-04-15 18:19
very cool project! this may sound like a dumb question but will the 8x8 boards work with the gladiator software
Reply | Reply with quote | Quote
 
 
0 # J 2013-01-05 18:49
forgot something...
what if i put a cat6 in prog2 and from there in my pc what do i need to change/will it work?
Reply | Reply with quote | Quote
 
 
0 # J 2013-01-04 13:18
how many board can ya link together??

cheers
Reply | Reply with quote | Quote
 
 
0 # Nick 2012-11-28 04:30
Hey guys, I love this and am real intrested in making my own, I need to figure out how to either make or get the PCB's made.. Any help?! D:
Reply | Reply with quote | Quote
 
 
0 # J 2013-01-05 18:22
this will work
http://www.youtube.com/watch?v=wY6oiEhyfIc&list=PLD86C5686FF01206A&index=3
Reply | Reply with quote | Quote
 
 
0 # Ryan 2012-11-03 15:50
Hi guys, nice proyect. Question! What is the perfect amp for this project and how many watts consumed? I want to know the limits to see what source should I buy. I do not understand exactly what point in the Partlist.
Cheers
Reply | Reply with quote | Quote
 
 
0 # Ryan 2012-11-03 16:15
By the way! I forget. The connection to the arrays is done this way? http://solderlab.de/images/led-projects/universal_matrix_controller_boards/wiring_rgb_matrix.jpg

cheers
Reply | Reply with quote | Quote
 
 
+1 # Thomas 2012-11-04 12:27
Hi Ryan,

yes - the connection is done that way. You can easily calculate the max current and thus the optimal power supply by yourself:

First you need to decide which max. current your LEDs are running. In normal (no PWM) mode the current should be around 20 mA (not above 30 mA) per color which corresponds to R=150 Ohm resistor in front of every color column. In PWM mode you can go higher (up to 100mA in 1/10 cycle). As far as I remember we used 80 Ohm resistors (not sure anymore). Anyway ... let's calculate the max current for 20mA per color in the worst case where all LEDs are on (! due to multiplexing, only one row is active at one time): 3*8*20mA = 0.48mA per Segment. Now you can scale it to your needs.

Hope this helps, Thomas
Reply | Reply with quote | Quote
 
 
0 # Ryan 2012-11-06 20:32
Thanks for explaining Thomas :-) . In this project, what power supply do you use?

Cheer
Reply | Reply with quote | Quote
 
 
0 # Sergio 2012-10-29 15:42
Hi how can probe only one module 8x8? what modification I have to do in the program?

Thanks
Reply | Reply with quote | Quote
 
 
+1 # Tomas_ 2012-10-20 19:45
I need help with the routine SPI. I do not understand how to use it and where in the firmware to change. would appreciate some help, Thanks
Reply | Reply with quote | Quote
 
 
+1 # Thomas 2012-10-21 21:06
Hi Tomas_,

sorry, I don't get your question. What and why do you want to change in the firmware?
Reply | Reply with quote | Quote
 
 
0 # Tomas- 2012-10-23 16:39
Quoting Thomas:
Hi Tomas_,

sorry, I don't get your question. What and why do you want to change in the firmware?

to use common anode RGB LED, thank Thomas.
Reply | Reply with quote | Quote
 
 
+1 # Eugenio Blas 2012-10-09 00:03
Great effect! Too bad that in my country (Colombia) not find common cathode RGB leds and do not understand the programming to edit firmware :sad:
Reply | Reply with quote | Quote
 
 
+1 # Richard 2012-10-05 15:27
Good work! Sorry, you used RGB LEDs 20mA?
Reply | Reply with quote | Quote
 
 
0 # Thomas 2012-10-21 20:57
Hi Richard,

yes, the LEDs have a forward current of 20 mA per color.
Reply | Reply with quote | Quote
 
 
0 # Tom 2012-10-04 07:20
Hey guys!
¿Was soll ich tun, wenn ich "gemeinsamer Anode" RGB LEDs setzen?
Thanks guys
Reply | Reply with quote | Quote
 
 
+3 # René 2012-10-04 07:47
Change the firmware to invert output AND change the transistors to BD140.

Cheers!
Reply | Reply with quote | Quote
 
 
0 # Tom 2012-10-04 13:13
Quoting René:
Change the firmware to invert output AND change the transistors to BD140.

Cheers!
Vielleicht eine dumme Frage, aber es ist sehr schwierig, um die Firmware zu ändern? Ich möchte dieses Projekt mit gemeinsamer Anode RGB LEDs und glediator verwenden. Ich würde gerne den Controller Boards Universar verwenden, aber nicht nach Amerika
Reply | Reply with quote | Quote
 
 
+3 # Tom 2012-10-05 05:49
Can you please give me a hint as modified the firmware, to use common anode LEDs. Really appreciate it in South America. :-)
Reply | Reply with quote | Quote
 
 
+2 # René 2012-10-05 06:21
There is a routine called SPI_out or something like that (I am not at home for the moment). Just got to that routine and INVERT the byte to be shifted out.

Cheers!
Reply | Reply with quote | Quote
 
 
+1 # Tom 2012-10-05 13:35
Quoting René:
There is a routine called SPI_out or something like that (I am not at home for the moment). Just got to that routine and INVERT the byte to be shifted out.

Cheers!
Thank you very much Rene. I'll work on that. I'd appreciate any help, when you have time. :D

Cheers!
Reply | Reply with quote | Quote
 
 
+1 # Carlos 2012-10-07 13:03
It would be great if we could help with that :-| cheers.
Reply | Reply with quote | Quote
 
 
0 # Eugenio Blas 2012-10-10 03:50
Quoting René:
There is a routine called SPI_out or something like that (I am not at home for the moment). Just got to that routine and INVERT the byte to be shifted out.

Cheers!
Hi! Rene! could you please upload the firmware download section to use RGB LEDs (common anode) to move forward with our projects until puedamos get your tables in South America. Thank you! Greetings from Barranquilla, Colombia. I wish you success.
Reply | Reply with quote | Quote
 
 
+1 # Eugenio Blas 2012-10-10 03:56
Hi! Rene! could you please upload the firmware download section to use RGB LEDs (common anode) to move forward with our projects until we can get your Universal Boards in South America. Thank you! Greetings from Barranquilla, Colombia. I wish you success.
Reply | Reply with quote | Quote
 
 
0 # bob 2012-09-26 23:34
hy guys!!!
1. can y use an arduino mega (http://arduino.cc/es/Main/ArduinoBoardMega) for this project?
2. if so what do i have to modify ?
3. your program Gladiator will work with Arduino Mega?
Reply | Reply with quote | Quote
 
 
0 # René 2012-10-04 07:46
Hi Bob,

yes you can take Arduino Meaga instead.

However, we would highly recommend you to build your matrix with these guys:

http://www.solderlab.de/index.php/led-projects/matrix-controller-board

They are fully supported by Glediator, have more colors and are more convenient to build for you.

Cheers!
Reply | Reply with quote | Quote
 
 
0 # John 2012-09-20 17:46
Hola muchachos, yo compre leds rgb "anodo comun". Funcionan igual? por favor diganme que sí :sad:
Reply | Reply with quote | Quote
 
 
0 # John 2012-09-23 07:53
Quoting John:
Hola muchachos, yo compre leds rgb "anodo comun". Funcionan igual? por favor diganme que sí :sad:

Hi guys, I bought leds rgb "common anode". They work the same? Please tell me yes :sigh:
Reply | Reply with quote | Quote
 
 
+2 # René 2012-09-26 19:53
Yes.
Reply | Reply with quote | Quote
 
 
0 # Alex_Arg 2012-09-15 06:18
Hi! great creativity. But i have two questions:

1)Can be use gladiator in this project?
2)So many sections of 8x8 LEDs can be used thereby with an ATmega328 ?

sorry for the questions I'm from argentina and i don't understand well english and electronics

thanks end cheers!
Reply | Reply with quote | Quote
 
 
0 # Thomas 2012-09-16 21:11
Hi Alex,

1) Yes!

2) To be honest, I don't have an exact number but 32x16 RGB LEDs with one ATmega328 should be not far from the edge. I guess you might be able to double the size. But at the end you are limited by the 2 kByte RAM of the ATmega328 (32x16 needs 512 Bytes, only the data!).
Reply | Reply with quote | Quote
 
 
+1 # Alex_Arg 2012-09-17 06:33
Quoting Thomas:
Hi Alex,

1) Yes!

2) To be honest, I don't have an exact number but 32x16 RGB LEDs with one ATmega328 should be not far from the edge. I guess you might be able to double the size. But at the end you are limited by the 2 kByte RAM of the ATmega328 (32x16 needs 512 Bytes, only the data!).

Ok, but if used a Atmega 2560 (​​8kByte RAM) instead of Atmega328 (2 kByte RAM), something like could build your plasma modular wall (with more sections of 8x8 RGB LEDs)?? Say 4 times larger.
Reply | Reply with quote | Quote
 
 
0 # Alex_Arg 2012-09-18 20:35
Could you please tell me if it could work?
Reply | Reply with quote | Quote
 
 
+1 # René 2012-09-18 21:25
Hi Alex,

making this project 4 times bigger is not just a question of memory. :o

The more critical point is the timing for shifting out all data to the single driver boards. Since you can not just hook them up serially we had to go for a more sophisticated way using some creepy bit banging.

Thus we went for 8 data lines in total. You can get an idea of how it woks when looking to the schemes within the first picture gallery on this site:

http://www.solderlab.de/index.php/led-projects/modular-plasma-wall

However, if you plan to go bigger you have to consider that you have to do massive changes within the wiring and within the bit banging part of the micro controller's firmware.

Something says me that you may be should go for our universal driver boards:

http://www.solderlab.de/index.php/led-projects/matrix-controller-board

They are scaleable and kind of more handy!

Hope that helps!
Reply | Reply with quote | Quote
 
 
0 # Sergio H 2012-07-22 04:11
It's amazing but I don't understand how connect the arduino uno with the controller module to remote mode. If you can answer was great.
Reply | Reply with quote | Quote
 
 
+1 # René 2012-08-27 06:20
The connection to Arduino is pretty simple an just follows the standard connection of a 595 to the SPI interface of a µC. A simple google search for "Arduino + Shift Register" will bring you up to the Arduino Playground were you will see exactly the same way of wiring we used for this project.

Cheers!
Reply | Reply with quote | Quote
 
 
0 # George 2012-06-15 16:15
Wow, really beautiful project!
Did you use arduino IDE code and program the atmega328 while it was in the arduino board, or program it with ICSP?
Thanks

p.s. your led dealer must love you guys!
Reply | Reply with quote | Quote
 
 
0 # René 2012-06-22 06:04
Hi George,

yes we used the Arduino IDE for programming. Since we connected RX,TX, GND from the naked Arduino board to the controller board with the Atmega328 we even had not to transfer anything!

Cheers!
Reply | Reply with quote | Quote