I created an Ambilight clone last month (Adalight) with an Arduino Uno, and my friends love it and a few have asked me to make them one. Problem is, they don't have a home theater PC. So, I've been trying to find if there's a way I could make an all-in-one solution for them. (I'm an experienced software developer who is learning electronics.)
What I'm thinking is to build a piece of hardware that has an HDMI input and HDMI output - it would pass all data from the input directly to the output without modification, but would periodically take data captures of the screen in order to send color information to an LED strip. This way, no extra software would be required as with current Ambilight clones, and it would work on any HDMI device. The hardware could even be enhanced to serve as an active DDC/EDID dongle (this relates to an issue I've experienced where a home theater PC coming out of sleep mode doesn't activate it's display correctly because the HDMI connection was lost).
I haven't worked with HDMI at a hardware level before, and have a feeling this is either beyond me, beyond the Arduino hardware, or both. What are your thoughts? Is this idea at least feasible? If so, how should I approach it?
HDMI is WAY beyond the capabilities of the Arduino. HDMI has a variety of clock speeds but all are above 160Mhz, and even if that wasn’t a problem the 5 Gbps of data would pile up far faster than you could deal with it. You are best off looking for dedicated hardware. This could be higher end microcontrollers with other integrated circuits, digital signal processing (dsp) chips, or higher end FPGA’s. These would have the power to read the HDMI data like you wanted.
I would start my search with Texas Instruments DSP chips. They have been trying to bring some decently powerful systems down in price a lot for people to get acquainted with. They had a $7.00 Arduino clone for a while. Look for ones that support HDMI, if they can they will advertise it.
These devices could then interface with an Arduino, but at that point the Arduino is completely unnecessary as any work it would be doing could be done trivially on the main HDMI board.
Ok thanks for the reply! I will start looking into other hardware to see if there's a better fit. If anyone on here knows of any specific controllers/ICs that can help, I'd love to hear about them. In the meantime, I will hunt around, starting with the components offered by TI.
I thought of another option last night. You could covert the signal to VGA. VGA's color signals are represented by red, green, and blue analog lines that vary from approximately 0.7V-1.0V. Picking out an individual pixel or set of pixels could be hard, but just getting an average color for the screen might be doable.