I am leaving for a University this weekend and my girlfriend is staying behind. I wanted to make her something that would remind her of me, so I decided to use my old rev. 1 Raspberry Pi to cook up something special. I decided to make some sort of photo frame, because she bought one for me a while back. Because I wanted to make it special, I decided to make it project the images on the ceiling. Even better, I wanted a way to send pictures to it remotely, so I added WiFi. However, I wasn't finished yet. Inspired by Snapchat, the smartphone app that lets users send self-deleting images, I added a feature that lets me send pictures, videos and audio files that could only be viewed once before being deleted.
Here is a list of parts I used:
-10 watt LED
-LED driver (LM317t as current regulator)
-Condenser Lens
-Heatsink and fan
-3.5" 320x240 LCD
-2x fresnel lenses
-Projector Lens
-Raspberry Pi Model B rev. 1 (model A would work just fine)
-Edimax WiFi dongle
-5v regulator
-Small speaker and amplifier
-2x pushbutton switches
-Red LED
-12v power supply
-2x wood boxes
-Wire, solder, tape, etc.
First, I used a bare LCD panel and driver, LED, and lenses to create the projector (like this). I then installed Pi3D, mplayer, and ddclient. I wrote a python script, based on the slideshow_2d.py demo from Pi3D, that gathers all photos in a certain folder and displays them in random order. A second thread logs into a Gmail account and waits for MMS messages from my cell phone. If a new image is received, it is copied into the folder and inserted into the photo loop. If the word "snapchat" is in the body of the message, it downloads any pictures, videos or sounds that are attached and lights an LED. When the button is pressed, the first snapchat is played and then deleted. This process continues until all snapchats are viewed, and the LED is then turned off. The script uses omxplayer for videos and mplayer for sounds. The projector also sends me texts to confirm that it received my picture/video/sound and also lets me know when the snapchats are displayed. There is also a second button which shuts down the Raspberry Pi.
I use ddclient and freedns to SSH into the projector from anywhere and provide software updates and update the firmware when necessary. I can also bulk upload photos and delete them this way.
Here is the finished projector:

(The papers on top are to block out the bright light for the photo. There is usually only a lens on top.)
I used two pieces of wood for the case. I put the main electronics in the bottom:

Here is closer view of the 10 watt LED, condenser lens, and heatsink:

Here is the finished bottom half:

(The green paper is used to block out excess light)
Here is the top half (without speaker):

(The projector lens is mounted on top. I adjusted it for focus and then glued it in place.)
The image quality isn't the best. There is very distinct pixelation and the lighting is a little uneven, but for the price and time I spent, I am satisfied. I'll upload a video later today when I go to my girlfriends house.
I'll make a tutorial and release my source code if enough people are interested.
Edit: Here is my code
-Eric