EricMid
Posts: 2
Joined: Tue Aug 13, 2013 6:20 am

Photo Frame Projector

Tue Aug 13, 2013 7:15 am

I've been working on a pretty unique Raspberry Pi project that is essentially an internet connected photo frame projector that cost less than $100 and took less than 3 weeks to build and program.

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:
Image
(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:
Image


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


Here is the finished bottom half:
Image
(The green paper is used to block out excess light)


Here is the top half (without speaker):
Image
(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
Last edited by EricMid on Wed Aug 14, 2013 5:37 am, edited 2 times in total.

User avatar
paddyg
Posts: 2555
Joined: Sat Jan 28, 2012 11:57 am
Location: UK

Re: Photo Frame Projector

Tue Aug 13, 2013 4:59 pm

Eric, it sounds brilliant. I'd love to see the tutorial and code if you can squeeze it into your busy schedule.

Paddy
also https://groups.google.com/forum/?hl=en-GB&fromgroups=#!forum/pi3d

EricMid
Posts: 2
Joined: Tue Aug 13, 2013 6:20 am

Re: Photo Frame Projector

Wed Aug 14, 2013 5:36 am

I uploaded the code to github: https://github.com/EricMiddleton/Raspro ... ojector.py
It requires ddclient to function (although that line could be commented out if outside access isn't needed)

I primarily write in C and this is my first Python program, so everything is written in that style (many functions, no classes).

Return to “Other projects”