People around the world have been building their own versions of the Philips Ambilight system for their home cinema, usually connected to a computer via USB or serial.
I started developing my own version and after months of designing and testing I was ready to publish my prototype: The LiveLight USB Interface.
Project soon got a lots of interest on forums and related websites. The LiveLight Project was born.
Video of LiveLight system in operation.
You are now reading projects official page in which you will find all the info you need to build a fully configurable ambient lighting system for your Home Cinema or PC!
Dynamic back-lighting reduces eye strain, visibility of LCD back-light leaks of and it greatly enhances pictures color, contrast and size appearance.
Larger illuminated-surface also creates more immerse viewing experience when viewing in other ways dark room.
Easy to build
LiveLight is designed to be built by end-user, meaning you!
You will need basic tools, AVR-programmer and a little electronics know-how.
When everyone has access to source materials, the product can easily be built to match someone’s personal tastes and specifications. This also enables software development as a community!
Hardware is easily programmed via ISP.
LiveLight in operation
LiveLight works well with most games.
LiveLight is discrete dynamic back-lighting 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 back-light adjusts directly to the screen, it won’t take your attention off the media like static lighting would.
LiveLight connects to your HTPC using USB and uses program called AmbiBox or BobLight to calculate the average colors from areas of the screen. System has been successfully tested to work with Windows XP, Vista, Windows 7 and Windows 10.
Ambibox also has a Kodi Add-on.
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 USB 2.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.7456 MHz 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.
You can accidentally connect your PC’s USB port to devices LED-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!
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 color resolution suffers quite a bit!
LiveLight USB Interface has 8-bit output so it 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 51% loss of color space, just by compensating the little difference.
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 of course change from the Boblight config file.
Pin-out for the USB cable is following:
Color to color 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 re-position 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.
How it works
- Average color is calculated from specific sections of the screen by Ambibox or BobLight.
- 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 colors.
The most important single item for LiveLight USB Interface to work is it’s software.
The one is running in ATmega32 microcontroller. Firmware will be updated sometimes as bugs are found and fixed. Current version is available in downloads page.
Programming the microcontroller
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 multi-meter 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 Ambibox and LED strips.
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.
Programming the FT232
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!
Renaming the device with FT Prog. If you want RX led to blik when data is sent from controller to PC, set C0 to TX & RXLED.