Note that the flickering of the leds is not as noticable in real life as it is in the video. This is due to the PWM of the lights being off from the camera rate.
This is fairly easy to build as long as you have patience. Although there is a lot of soldering, it's easy to do on the strip board. I recommend having some programming experience if you build this.
You will need:
A controller - I used an LED-Wiz. I plan on switching to an arduino later, but this got me up and running quickly and easily. This controller is capable of driving 32 channels at 500ma, since each led requires 3 channels at 20ma (Red, Green and Blue) this gives me support for 10 light bars with 25 led's each (500ma / 20ma = 25 led's).
RGB Leds - I bought a pack of 200 off ebay for about $65. They are poor quality and there's some variance in the color between them but they were cheap and do the job just fine. I chose to go with 10 bars of 19 leds to give me a few spare led's in my pack. The ebay auction I bought had the title "200X Diffused 5mm Common A Manual Control RGB LED 8Kmcd"
Stripboard - I found stripboard at my local electronics supply store for $6.
Some other people have found it online here:
Resistors - See Below
Wire - I used ribbon cable from my local store, it came in a 20 wire width which i tore into strips of 4 wires.This is the same type of cable used in floppy drive and ata33 cables.
Mounting hardware - I used vinyl siding from Home Depot, see step #5
Power Supply - You may be able to use your computer, see step #6
Software - See step 7. A computer is REQUIRED and the ambilight effects will only work with video being played from the computer. Unless you are using a video capture card to watch TV, it is not possible to have the effects from another source.
Calculating the resistor sizes:
The easiest way to figure it out is to use the online calculator here. My led's were listed as being 20ma forward current with green and blue at 3.6v - 3.8v and red at 2.0v - 2.4v.
Open the calculator and click on "Parallel leds" at the top. Entering 5 for supply voltage, 3.6 for voltage drop, 20ma for current and 19 led's gave me a value of 1 watt 3.9 ohm. Notice that the red led is different so it requires a different resistor.
The store I was at did not have nearly enough 1 watt resistors so I decided to just go for 500mW ones instead. The calculator says the resistor dissipates 503mW in my situation so I should be safe and thus far they have been reliable. I do not necessarily recommend this approach.
If you have questions about the build, please post them as comments instead of messaging me. I've received many questions that are similar and if they are posted in the comments it allows others to learn from them as well.
Step 1: Cutting the Stripboard
I cut it to this size without considering that I'd want to mount the resistor fully on the board, so you may want to make it a little larger like 4x62. If you mount the resistor fully on the board make sure to cut the copper trace beneath the resistor.
I drew lines along it with a sharpie, cut it most of the way through with a dremel, then it snapped fairly cleanly. A quick run with the dremel's sanding bit and they were ready.
Step 2: Insert the LED's
The spacing between the holes in the stripboard does not match the spacing on the led's so they could not be flush with the board. I pushed them in pretty firmly and they stayed in place fairly easily.
Step 3: Soldering the LED's Into the Board
1) Go through with a pair of cutters and trim one leg off each
2) Solder this leg to secure the led to the board
3) Cut the remaining legs and solder them
The solder does not want to adhere to the stripboard in between the copper so it's actually fairly difficult to do this wrong. Be patient and try to avoid leaving the soldering iron in one spot for too long or you may damage the LEDs / board.
Step 4: Soldering the Resistors to the Wire and Then to the Stripboard
Strip the ribbon cable, leaving one of the wires with more shielding for your common anode, since this will run directly into the board instead of through a resistor. Solder the resistors in the correct order and cover with tape or heatshrink. It does not matter which way the resistors go.
Next solder the entire set to the stripboard. I did the anode first, followed by the resistors. The resistors are easier to do if you bend them at an angle first before putting in, then you can fold the leg down onto the stripboard and just solder it in.
Congratulations, you just finished one! I'd recommend testing each one immediately to make sure you haven't soldered any LED's in backwards ;)
Step 5: Mounting
At this point I also ran some white electrical tape around the entire contraption so that the ends are not open. It's not the ideal solution but it works for now. If you are really determined, you could probably cut pieces of siding to fit into the ends as caps.
To mount the entire things on my wall I used the mounting tape again. Just two little small squares on either end were sufficient.
Step 6: Wiring Up the Controller
I'm running the power for my controller off the power supply for my media pc. The power supply is rated for 20A on the 5V line, but this system requires around 12A. The controller is not capable of powering off usb unless you are doing under 500ma total and this is way beyond that.
191 led's * 3 colors * 20ma = 11460ma. 11460 = 11.45A, plus a bit for the controller.
I initially powered this off my 550w power supply in my pc but with this on my 5v line drops to 4.85v from it's normal 4.98v and my usb devices start to act very sketchy. I grabbed a spare 400 watt very cheap no-name power supply which I had sitting around and it died after running this for 15 minutes. I recommend a decent brand which is separate from your computer.
If you want to use an external power supply, you can connect the green wire in the motherboard connector to a ground (any black) to power it on without a pc. You can find more details here or on google.
Step 7: Software
I've found a open source program called BobLight which was designed to do Ambilight effects using a custom controller. I've taken BobLight and modified to work with the LEDWiz under the name ShadLight.
In addition to this, I've also added support for sending it a new "command string" via UDP. This is to allow for a php interface on a different machine to set the colors. I run this program on my media PC at all times and use the web interface (on my fileserver) via my blackberry to remote control it.
ShadLight was my first attempt at C# programming and the php interface was hacked together pretty messily. I do not recommend leaving either of these exposed to the internet, definitely put an .htaccess on the php.
Download everything here
Command setting - This is a comma seperated list of settings for each port. 48 is maximum brightness. LR,LG,LB are the red, green and blue ports for the left side of the ambilight and RR,RG,RB are the right side. See the PBA command in the led-wiz developer documentation for more information. This allows you to set your room to be one color, disable a few lights and still have ambilight working on specific light bars.
PHP Configuration - All you need to change is the hostname at the top of the file. PHP must be compiled with sockets support for it to send UDP packets.
Making your media client work:
Windows Media Player (WMP) Classic (with Boblight): Start WMP Classic, go to view and select options. In the options menu go to playback and select output. In the output screen select under DirectShow Video VMR9 (renderless)**! Now restart WMP Classic and open a video (either DVD, avi, divx or something else). The Momolight system should now work with WMP Classic using the Boblight software!
Windows Media Player (WMP): The only way to get Momolight working with standard WMP is by turning of overlay (for example by turning of Hardware Acceleration with your video device). This also only works together with the Boblight software.
VLAN player (with Boblight): Setting the video output in the video options menu to OpenGL will enable AmbX lighting effects with playback of videoâ€™s (DVD, divx, etc) with the VLAN player.