I really wanted to have an accent light at my desk at work that syncs with whatever color I have on my desktop. My objective was professional looking lighting solution as cheaply as possible. This is a simple writeup for those interested in doing something similar or interested in getting started with a good project.
tl;dr; Open the LED strip controller from the bottom
I got the LED strip off of Amazon and it seems like most of the strips use a very similar control module with an IR remote. A simple screwdriver is all it takes to pop off the bottom lid and inside it was quite empty. A simple one layer board with a few decoupling capacitors, an Atmel 2-wire flash chip, an unlabeled 8 pin microcontroller, 3 transistors driving the strips, and a few resistors preventing the transistors from pulling too much current. There are plenty of resources on transistors and mosfet's out there. We just want to make sure our Ib is staying under 40ma (which is our microcontroller max per pin) and we're staying in a good saturation region.
2
Step 2
tl;dr; desolder enough parts to get access to the resistors connected to the three transistors.
I desoldered the two chips and traced the pads that went to the three resistors connecting to the base of the three resistors. This is a decent diagram that shows the idea. An LED is a diode, but it can largely be thought of a non-inductive load since it's not a perfect diode and has a resistive element to it. Plus the strip itself has a good bit resistance.
Another good example is this one:
Most LED's strips generally have a 5-12v pin and then a connector for red, green, and blue ground. This allows the transistors to sink the current rather than source the current. In general, most micro controllers can sink much more current than source it.
In the above picture, you want to tap into the point where it says to connect to the PWM's. You can recognize the transistors by the fact that they have three pins.
The resistors are probably going to be 0603 and 0805 (which are surface mount component sizes). Trace back from pin# 1 in the picture above to find a little part. Attach a wire to the other side of that resistor.
I used an ATtiny85 since I have a few dozen of them already on hand since they're so useful to have. You can use any AVR programmer or any chip that supports V-USB but I'd recommend sticking to the ATTiny family if you want to simply reuse the sources I used. I used the TinyProgrammer from sparkfun (https://www.sparkfun.com/products/11801) but you can use anything you like. I recommend using windows for this particular build since my mac (which has my development environment all setup) had some trouble. I installed Atmel studio, avr-dude, and gcc-avr. I decided to use code from the blinkstick. It's a fantastic project that a lot of work and effort has gone into. Their build instructions were a little lacking but I'll do a little writeup to help you.
You could just do serial output and that would work fine, but I really wanted to use USB and do something a bit different. There are chips out there from microchip and atmel that include specialized USB hardware that makes it quite easy. For the rest of us, there's V-USB, which is a software bit-banging solution to provide USB over two digital I/O pins. There's a little snag we need to take care but we'll cover that in the next step. Anyway- onto flash the firmware.