Programming the device
Once your light controller is built, you need to program or 'flash' it. This is done with AVR In system programmer. In my example, Im using AVR Studio 5 and AVRISP MKII programmer which is affordable and robust.
Check your USB voltage lines with multimeter to ensure they are not shorted. Connect your ISP programmer to the ISP header of the LiveLight USB Interface. Connect your USB Interface to your computer's USB port to power it. Red light on the programmer should turn green. Your device is ready to go!
Open AVR Studio 5, go to 'AVR Programming' uner Tools menu. Select your programmer and device (ATmega32) and click apply. Click 'Read' to confirm your setup is correct, if so, your device ID should turn up.
Go to 'Fuses' and set them like spesified in the picture below. Be extra careful when selecting clock source, if you set it wrong, your chip might be rendered useless. Hit 'Program' when ready. Then go to 'Memories', select HEX file for the chip and click 'Program'. If it fails, try decreasing ISP clock under 'Interface settings'. If it still won't work, check your solderings!
All done! Your controller has been programmed! Now you are ready to connect it to BobLight and LED strips.
This is not necessary for operation of the device, this step just makes it a bit more cool :P
Download FTDI drivers and FT Prog. Install drivers and open FT Prog. Click 'Scan and Parse' from devices menu and list of your FTDI devices should come up. Select 'USB String Describtors' and write your name on 'manufacturer' field and 'LiveLight USB Interface' to 'Product desciption'.
RX LED is connected to C0 pin, you can configure it's behavior from 'IO Controls' submenu. Default is 'TXLED#'. When youre done, click 'Program' and EEPROM will be rewritten. Replug your device and it's done!
LiveLight is discrete dynamic backlighting system designed for panel TVs and PC monitors. Color and brightness of individual LED strips change depending on what is currently displaying on the screen. When backlight adjusts directly to the screen, it cont take your attention like plain white lighting would.
LiveLight uses program called BobLight to calculate colors from PC screen. System has been successfully tested to work atleast with Windows 7, Vista and XP. It should be noted that Aero has to be disabled in Windows 7 and Vista for BobLight to function correctly. BobLight is also available for Linux!
LiveLight USB Interface
LiveLight USB Interface is the heart of whole system. It is the little black box that controls all the LED strips mounted behing the screen. Output signal is simply high frequency pulse width modulation. Light-controller is connected to PC with high-speed USB2.0 witch also power both chips of the device. External power is needed only to power LED-strips. Input voltage can vary from 2 to 20 volts cause of this.
ATmega32 is clocked with 14.7456MHz external crystal, witch is fastest oscillator supported by the chip that has 0% UART error rate on all common BAUD rates. This is critical for succeeded data-transfer.
LiveLight USB Interface uses MiniUSB-B connectors to connect RGB LED strips, this because they are cheap, have five pins and can handle enough current for this application. Only downside of this selection is that with right cable you can accidentally connect your PC's USB port to devices output, probably destroying the USB contoller chip on the motherboard.
My setup consists of approximately 17W of 12V RGB LED strip altought controller can handle much more power, 480W@12V. I attached my controller box behind my TV with pieces of velcro-tape, for easy removal and re-attachment. Makes re-flashig software a whole lot easier!
RGB LED Strip
LED strip is a long, thin and flexible cirucitboard that has lots LED's soldered on it. RGB LED is a single LED that houses Red, Green and Blue LED's in the same casing. RGB LED strip is a LED strip that can project infinite number of colors by mixing three main colors. LED strips can also be cut to length, they are perfect to TV backlighting!
Good LED strip is essential to get the desired effect. At first I used cheap DealExtreme LED strip on my setup but it's a little bluish when it's supposed to be white. This of course can be compensated from software but color resolution suffers quite a bit! LiveLight USB Interface can produce 16777216 colors by default, but when you compensate green and blue component to 70% of maximum brightness, color resolution drops to 8220836 colors. This means that 51% of colors are lost by compensating the diffrence. I swiched to quality 14,4W/m RGB LED Strip which has 60 pieces of SMD5050 RGB LEDs per meter. It's a bit more expensive but it's worth the money when you can match your backlighting to shade on the screen without losing color resolution. Picture shows the color difference between Leditalo and Dealextreme LED strip.
Atleast in theory LiveLight USB Interface should be able to run CCLF Transformers and Cold-Cathode Lights. Is there any sense to do that, I highly doubt that. LED strips are better and a lot cheaper option. Maybe a vintage version with colored lightbulbs, good'ol christmas lights?
How it works
Average color is calculated from spesific sections of the screen by BobLight GetPixel. Then another program, Boblight HD processes and sends data to LiveLight-controller via virtual serial port. FT232RL chip then recieves data from USB bus and outputs it to the RX-pin of devices main chip, ATmega32.
ATmega32 then checks arrived data for errors, if header byte is intact it accepts new data and drives 27 different MOSFETs via 8-bit PWM accordingly.
MOSFETs control the current coming from LEDs to ground, switching them ON and OFF. 3 channels go to a single output connector driving red, green and blue LEDs. This gives us 9 unique RGB channels, each capable of display over 16,7 million colors.
FTDI FT232RL USB to UART converter
FT232RL is an USB to UART converter chip manufactured by Future Technology Devices International Limited. It provides very easy way to connect microcontroller based projects to USB. When connected, VCP drivers will make it show as 'USB Serial Converter' in device management. Computer also assigns it a port number witch you have to configure to BobLight's conifg file, like 'COM4'. When you write something to this "COM port" it will end up coming out of chip's TX-pin at set BAUD rate. If you write something to chips RX-pin, it can be recieved to a program like hyper-terminal on PC.
Output and input voltages of FT232RL can be configured to work with CMOS logic, 1.8-3.3V or Ye'olde TTL level which is 5V. Because of this you can directly connect your microcontroller to the chip without any external components!
Chip also carries some EEPROM memory, editable through USB. It is used to store USB Vendor ID (VID), Product ID (PID), device serial number and product description string. Chip setting are also stored there. Everything can be edited with FTDI's utility, FT Prog. It's easy to use but you must know what you are doing, otherways you might render your FTDI chip useless.
Most important single item for LiveLight USB Interface to work is it's software. One that is running in ATmega32 chip. Here is a short review how this relatively simple source code is supposed to work. Firmware will be updated frequently so this section may be out of date but the principle is the same. Current version is available in downloads page.