Large LED Project, Possible?

Hello All. I would appreciate any feedback on the feasibility and design of this project.

I have a large data-center with rows of cabinets and overhead ladder rack. The idea here is to have LED strip lighting running along the rack. When a high level trouble ticket is submitted from customers then it would relay that to a java program which would then tell the Arduino to turn a section of LED strip next to the cabinet with the issue RED from GREEN.

I have not quite worked out how the program will work yet, but most likely I will be dividing up almost 100 meters of LPD8806 (3200 LED's) into virtual sections, most likely of 32 LED's each. Each section will have cabinets assigned to them in a table within the java program. So if that cabinet has an issue the java program will tell the Arduino which LED's to change color.

I know that I will likely have to power the LED's ever 5 meters and since there is power along the whole rack this is not an issue. However, can the Arduino Mega even handle this many LED's? Is this even feasible? Is there another way to do this?


You need to think about how long it takes to update 100 meters of LEDs. Do you have one single rack that's 100 meter long? Why not break it into smaller sections with custom controllers at each section? You don't need a Mega to drive them, an Uno will do just fine. In fact I have an Uno driving 4 separate strings of 3 meters each right now sitting on my desk. Ultimately I'm going to build a custom board, much smaller form factor. I already have one made that drives 2 strings and it cost a little under $5 per (completed) board.

Have all the boards linked together (mine had RF capabilities) and you can send data to each one when you need to do something. For example, you can send a 1 to board #23 and that board will turn its LED string red. Send a 0 to board #11 and that board turns its LED string green.

Just a suggestion.

That had not occurred to me. hmm, multiple clients all controlling a few 'segments' of led's being controlled by an Arduino attached to the computer. Only issue here is that I have never used RF and Arduino before.

I wonder if a Digispark or Nano would work as a client.... Never had to design a standalone board like that before. All it needs to be able to do is relay the IC commands to the LED strip which has a two wire connection.

Though, I have read that there are issues with longer LED runs with the memory in an arduino not being able to keep the state of each after a certain point(amount of led's) is reached. Would it be possible to have each 'client' module maintain the LED states and just have it controlled by the master? I am not going to be controlling all 3200 LED's individually, even thought that would be neat, but in segments corresponding to the cabinet location. Not even sure I can group them like that with the LPD8806 library.

Thoughts, suggestions, comments?

Let's take 3,200 LEDs (100 meters), why not. To make things easy, let's assume 2 meters per cabinet. This is a length that even a ATTINY can drive. So, at 2 meters per cabinet, 100 meters means 50x 2 meter segments. That's 50 nodes. Easy.

With a large datacenter, RF might be problematic due to other interference, however there are other protocols that you could use. You can link all the nodes together with an RS485 network. You should read Nick Gammon's page on the subject: Gammon Forum : Electronics : Microprocessors : RS485 communications

Once they're all linked together and to a master controller (which is connected to a computer), you can have the master controller send out signals to whatever node needs to change.

This gives you the added advantage of mounting the 2 meter strip vertically inside the cabinet, say along the mounting holes, and you can then light up LEDs that are right next to a server (as opposed to the entire strip.) So let's say the strip runs along 3 servers and the middle one fails. You can have those LEDs that are right next to that server start flashing red. Your technician at that point doesn't have to guess which machine has failed, it's indicated.

Make sense?

By the way, whether you’re using an LPD8806 string or a WS2801 string or the newer WS2811 string makes no difference. You can bit bang them, or you can drive them via ISP (with FastSPI_LED) which is what I use. If the string is 2 meters long for a total of 64 LEDs (based on 32 LEDS/meter, there are higher density ones), you can address each pixel, from 0 to 63. So if a server fails and you know the pixels that run along that machine’s mounting holes are pixels 20-23 (4 pixels), you can tell those four to start flashing red while the rest either remain green or do something else. You could even do some fancy sequence where the upper and lower part of the string start doing a chase towards the ones that are flashing. Think of a marque light chase where they’re all going one direction. So in a static visualization, you’re doing something like this:

XXX < < < <

where XXX is the failed server, and >>> and <<< are LEDs chasing that direction … but vertically. I can probably show you later when I get home. A video visual is way better.

Now those are some great ideas. Though I keep trying to work out the programming I would have to do to set that up and it is giving me headaches. To match the ticket to the correct led that is. Already creating a table of customerID's by trouble ticket to the segment of led's is giving me issues. I am trying to figure out a way to do that in either Java or C#, most likely Java. If I can have a Java app maintain the table with customer ID's to Rack\Server Location(LED Segment) then I would not have to mess with code afterwards. Admittedly that right there is a bit beyond my Java skills at the moment but I am working on that. Once I have that I should be able to have Java tell the arduino what to do over serial\usb. Though I am also playing with the idea of making it self contained within a Ethernet shield.

But honestly, a lot of that is ways off. I would be happy at the moment to get the Arduino talking to the LED strip and then setup the Master\Slave relationships. Now that I know this is possible I am going to order some example hardware to test

Do you know what the pixel limit is with the FastSPI_LED? Thinking of putting a node at the end of each row and wiring either strips in the cabinet or enough for that one row over head. Now I just want to play with the LED's for myself, never mind for work. :slight_smile:

Do you know what the pixel limit is with the FastSPI_LED?

There is none. Pixel limit is based on how long you want to wait for the string to update from pixel 0 to pixel N, and how often you plan on injecting voltage.
Consider that the AVR will be running at 16MHz, and FastSPI can blast data out at 6.6+ Mbps on the hardware SPI, or 2.7 Mbps on software SPI. There comes a point where it simply can't update the full length of the string before running over itself with the next cycle. This is why I suggested breaking it up per cabinet, as opposed to having one long strip. BUT, I have run 20 meters with no trouble. Just inject voltage every 5 meter or so.

Thinking of putting a node at the end of each row and wiring either strips in the cabinet or enough for that one row over head. Now I just want to play with the LED's for myself, never mind for work. :slight_smile:

They are fun to experiment with, and fairly easy to do with FastSPI. Just connect the DATA and CLK pins, supply voltage, load up FastSPI and set the proper chip select and just run the test sketch. Done.

Once you figure out how you want to implement their usage, then the real programming starts.

You could also have a stock Arduino with Ethernet shield connected to your network and have your Java programming communicate with that (or whatever other software really, it could be just a shell script that sends data via ethernet to the Arduino.) The arduino interprets the data and sends the appropriate signals down the line to the nodes.

Thank you for all the input. You have certainly given me a good direction to go in.

I will post back when I actually have some code written with the hardware. I will most likely be yelling for help at that point anyway. :slight_smile:

Thanks again.

Coding the strips is easy. The other stuff shouldn't be that hard to do. I have a feeling once you get your hands on a roll of LEDs, you won't want to put it down. Also, it's cheaper buying them directly from China, even with shipping.

I have found that out pretty quick. Been researching the best strips and where to get them for most of the day. So far I think I am going to settle on the following.

Does that product look good to you? There are so many different kinds that it is kind of hard to know which is any good. They had some with more LED's\meter but 32 should be more than enough for me.

I am thankful you mentioned the FastSPI_LED library, that is going to save me so many headaches it is not even funny. Been reading about his version2 code. Pretty exciting stuff.

Those are 7-bit PWM only and 2 LEDs per IC. I prefer 8-bit and single LED per IC, like either the WS2801 or newer WS2811. There's also 3 LEDs per IC. But that's a choice you have to make.

The WS28011 strips have the IC built into the LED, so they can pack more on a strip. Those usually come in 60 LEDs/m. The WS2801 strip is a separate IC and LED.

I guess the question here then is, do I really need that many LED's and does the extra bit really matter for my application?

Considering I am mostly going to be using solid colors I am not sure I will need the extra color depth.

That’s not a question I can answer. That’s your choice. If 7-bit is enough for fading, then go for it. If you’re okay with 2 LEDs per IC (think about when you need to cut the strips into shorter pieces), then go for it.

You can find 30 or 32LED per meter strips of both the 2801 and 2811 varieties. But it’s up to you. The LPD8806 are faster than the WS28* ones, however again, do you need the speed? Probably not. The WS2* series is pretty damned fast (faster than the eye can tell a difference.)

hmm. I Looks like I am going to need to do some more research. Getting an accurate floor-plan printed up currently, that should tell me how I can place the LED’'s and how many I will need.

Well, I learned a lot, I really appreciate it. This should help me to get going in the right direction.

This is what I'm referring to having a string mounted vertically along the mounting holes. Have the pixels right next to each server show you its status: