Frame project: three images on one piece of paper

The finished frame.

Last month while he was visiting, my friend Rony and I built a picture frame that can display three images on a single piece of paper.  Two of the images are mapped to the red and blue channels and linearly combined, and the third image (the word MARCH in the video above) is projected onto the paper from behind using a stencil.

The stencil under construction.

Creating the stencil.

A microcontroller controls a set of red, blue, and white LEDs that light the picture, selecting each image in sequence by turning on one set of LEDs at a time. Rony built the frame itself out of the black foam-core that architects use to make models, and it is really gorgeous.

IMG_2159

The entire package slides out neatly.

One of the challenges was calibrating the red and blue levels in the printed image such that under blue light the blue-printed image disappears completely, and the red image shows with good contrast, and vice versa under red light.  This required a lot of different test printouts, which after the project was over I taped above my desk at home. I think they look pretty cool on their own.

Calibration images

Calibration images

The images were generated with a tiny opencv-based program that you can find here.  If you want to use it yourself, you’ll probably have to recalibrate the WHITE_POINT macros for your printer/paper.  We printed the final image on acid-free paper so the colors don’t change over time.

By the way, opencv is a great library for doing real-time computer vision.  We used it for a very trivial operation, but the samples that ship with the library do things like real-time face detection, and there’s even an eye tracker that uses commercial USB webcams that some people are working on.

IMG_2162

The light from the white LEDs is diffused a bit before it passes through the stencil.

This was my first project using an Arduino and I was completely blown away by the platform.  The Arduino is an Italian-made open-source electronics prototyping platform.  Ours was a very simple Arduino project, just fading in and out some LEDs (you can get the code here), but the platform can do a lot more.  We used a Duemilanove (“2009″) board (pictured below) which has many digital input/output and analog input pins.

arduinoduemilanove

The board comes with a very simple IDE based on Java, Processing, and avr-gcc.  You code for the device in C and a single click reprograms the onboard Atmel microcontroller over a USB cable.   The documentation is excellent and the platform is extremely easy to code for; it only took us about 15 minutes to get the basic functionality working for this project.  There’s a great serial interface you can use for printf-style debugging; just use Serial.println to send some output to your PC while your code is running.  And Arduinos are extensible via a series of pluggable shields that can provide additional functionality like GPS, WiFi, and touch-screen support.

It really is the perfect starter platform for hardware hacking, and if you have any interest in this sort of thing at all, I strongly urge you to go buy the Arduino starter pack from adafruit industries right now.

Overall, this was an awesome way to spend a couple of days, and it was also great to work on a project with Rony, who deserves full credit for this idea (which he had while we were jogging around the Nymphenburger Palace) and for the majority of the work.  You can see more photos of the project on Rony’s flickr photostream or mine.

Posted on 20 April 2009

7 comments

  1. BadGirl44’s avatar

    Like generations before them, Generation Y has often been discussed and studied. ,

    Reply

  2. Online Car Insurance >> onlinecarinsuranceclaims.com’s avatar

    [... - nat.org is another must see place of advice. Car insurance claims [... -

    Reply

  3. Kyle’s avatar

    Really cool deal!

    If you can please email me the song you have playing in the background of the video, I would very much appreciate it. It is very familiar and nostalgic. My email is Taurus1551@aol.com

    Thank you.

    -Kyle

    Reply