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, I'm 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' under 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 specified 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 soldering!
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 appear a bit more professional.
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 in operation
LiveLight is discrete dynamic backlighting system designed for panel TVs and PC monitors. Colour and brightness of individual LED strips change depending on what is currently displaying on the screen. When backlight adjusts directly to the screen, it won't take your attention off the media like plain white lighting would.
LiveLight connects to your HTPC using USB and uses program called AmbiBox or BobLight to calculate colours from the computers desktop. System has been successfully tested to work at least with Windows XP, Vista, Windows 7 and Windows 10.
Note that AERO has to be disabled in Windows 7 and Vista for the software to function correctly.
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 behind the screen.
LEDs are simply controlled with high frequency pulse width modulation. Module is connected to PC with high-speed USB2.0 which also power both chips of the device.
External power is used only to power the LED-strips thus allowing input voltage vary from 2 to 20 volts
Main chip, ATmega32 is clocked with 14.7456MHz external crystal, which is fastest oscillator supported by the chip that has 0% UART error rate on all common BAUD rates. This is critical for successful 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. They are quick and handy to use and especially nice add-on if you plan to do software development.
On the downside, with right cable you can accidentally connect your PC's USB port to devices output, probably destroying your motherboard.
My setup consists of approximately 43W of 12V RGB LED strip although controller can handle much more power. I have attached my controller box behind the TV with pieces of Velcro-tape for easy removal and re-attachment. Makes re-programming a whole lot easier!
RGB LED Strip
LED strip is a long, thin and flexible circuit board that has lots LED's soldered on it. RGB LED is a single LED that houses Red, Green and Blue LED-component in the same casing.
RGB LED strip is a LED strip that can project infinite number of colours by mixing three main colours. LED strips can also be cut to length, they are perfect to TV backlighting!
Good quality LED strip is essential to get the desired effect. At first I used cheap DealExtreme LED strip on my setup but it was little bluish when it's supposed to be white. This of course can be compensated from software but colour resolution suffers quite a bit!
LiveLight USB Interface can produce 16777216 colours by default, but when you compensate green and blue component to 70% of maximum brightness, colour resolution drops to 8220836 colours. This means 51% loss of colour space, just by compensating the little difference.
I switched 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 colour resolution. Picture shows the colour difference between more expensive and the bluish Dealextreme LED strip.
At least 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 coloured light bulbs or good'ol christmas lights?
Installing the LEDs
There are nine independent RGB-channels around the perimeter of the TV that can be driven separately.
Two channels on each side, except for 3 channels at the top. Channel orientation is labelled on the PCB, for example TR means top right channel and BL means bottom left channel. These can be ofcourse change from the boblight config file.
Pin-out for the USB cable is following:Colour to colour an guess the rest. There is a 50% chance to get it right. If you don't feel like guessing, you can check the correct pin-out from here.
Installing the LED-strip itself is a breeze, just peel off the backing and stick it where you like. Please note that if you need to reposition the LED-strip, it is usually possible for couple of days after installation. After the strip heats up in use, the tape behind it activates and its stuck for good.
System as a whole
Average colour is calculated from specific sections of the screen by Ambibox or BobLight GetPixel.
Data is sent to LiveLight USB Interface via virtual serial port.
FT232RL chip then receives 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 (PDM) 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 giving us 9 unique RGB channels, each capable of display over 16,7 million colours.
FTDI FT232RL USB to UART converter
FT232RL is an USB to UART converter chip manufactured by Future Technology Devices International Limited. It provides fast and easy way to connect micro-controller based projects to USB.
When connected, VCP drivers will make the device show up as 'USB Serial Converter' in device management. Computer also assigns it a port number witch you have to configure to BobLight's configuration 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 received 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 micro-controller 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.
The most important single item for LiveLight USB Interface to work is it's software.
The one is running in ATmega32 chip. Firmware will be updated sometimes as bugs are found and fixed. Current version is available in downloads page.