MicroRGB: A LED with a brain
A recent project required to create a matrix of RGB leds. First prototype was set to a 5x5 matrix. For quite some time I've been thinking on the cheapest and more powerful way of doing this. Other people already answered the question in different ways. Either they put a micro controller on board, like BlinkM or they use a PWM shift register like ShiftBrite.
A while ago I learned of a website with several PIC-based projects in the same line, one of them it was a serial addressable RGB led controller.
One of the factors I was taking into account was cost. When you are using a large amount of units the unit cost becomes important if your budget is limited. I decided I wanted to create my own device. Should I chose a Microchip micro controller I could use the software mentioned above. My fist take was to use a 12F675 8-pin micro controller I found for $1 each on eBay. Unfortunately it seems too limited for the task of handling 3 PWM channels and serial communications as it lacks of a UART. Next stop was 16F628A that has more memory, timers and a hardware UART (and some code I can use is available too).
Next stop was to decide the format of the device: I was thinking of a small board that would hold a Superflex RGB led, the micro controller plus a programming interface (using SMD parts you program by soldering some temporary wires to the programmer is something I do not want to do very often). This way I am able to change the firmware to fit different applications.
Ok, so I have to create my own PCB for SMD parts. Well ... I've never done this before for SMD parts. After checking several software packages I settled with the free version of Eagle CAD that works happily with my Mac and Linux computers.
After some browsing I learned that Futurelc was making prototype PCBs at affordable prices. I sent them my Eagle files as they accepted that format too. Unfortunately something went wrong in the process as they remained unresponsive for two weeks. After that period of time waiting for them to ask me to pay for my order I decided I no longer wanted to deal with a company that treats you like this before getting your money (discovering this after you'd paid puts you in an even more difficult situation). I cancelled my order and I searched for another company. This time I selected PCBCART that also had good comments online and though more expensive than Futurlec hopefully would deliver my boards. Process run smoothly, they also accepted Eagle CAD files and a few days later I received the boards from China by Fedex. Please note that in order to keep my costs low I ordered a single-side board with no solder mask nor labeling. Therefore I cannot comment on how well they work in multilayer designs.
If you do not factor in your time, I'd say this thing can be built for less than $3 per unit. A typical setup just needs three wires (VCC, GND, TX) connected in parallel to all the units. TX line can be driven from a PC or an Arduino controller.
For programming the finished devices I used an old TE20X, which is based on the JDM programming interface for Microchip processors. The only problem is that you need a real RS-232 port on your computer (a USB adapter won't work).