Digital Picture Frame

One of my more recent projects was a “Digital Picture Frame” or “Walltop”. In this project, I took an old laptop, and converted it into a digital picture frame, similar to those you can find on Amazon or eBay.

I had two primary goals:

  1. It had to be acceptable to my wife
  2. It had to be cheap (or free…)

The first goal is obvious. I wanted it to be useful, and to be useful it had to hang on a wall (picture frames in closets aren’t worth crap). In order to get permission to hang it on the wall, it must be acceptable to my wife.

The second goal works like this–I’m a techno-geek. I like technology. I like gadgets. However, I’m frugal (OK, cheap) and my money is better spent putting a new roof on the house (damn, still need to do that) than it is putting a fancy electronic gadget on the wall.

So with those two goals in mind, I set off to create this:

The Hardware
In order to display images, I knew I didn’t need a very powerful laptop. Even crappy laptops are going for $100 used at eBay or other resellers. Even $100 was too rich for my blood (see goal 2 above). So I figured I would ask around. I work in IT, and figured someone had an old laptop they would let go for almost nothing. The second or third person I asked said “Oh yeah. I’ve got one sitting in my closet that I haven’t used for 2 years. You can have it on one condition.” Damn, “how much?” I wondered. “You can’t give it back” he continued. Score! Laptop: $0.

The laptop is a Pentium 150Mhz with 24MB ram, Windows 98 (Of course I have the license for that!), 2GB hard drive, PCMCIA network card, C
D-ROM, Floppy, pretty much everything I could want.

So I took the laptop home, booted it up and started installing software to be sure it could do what I wanted it to do. More on the software later. This was simply my proof of concept phase.

After I was convinced that I could accomplish the software pieces, I took the laptop apart. Most other digital picture frame “HOW-TOs” go into great detail in how they accomplished the hardware feat. Since you are unlikely to have the exact same laptop, I won’t bore you with the details. (I didn’t bother to take pictures of it at this stage anyway). The hardware went through two phases:

  1. First I took apart only what was absolutely necessary to detach the screen from the base. Probably 90% of the laptop was still intact. The display data and power cables were just barely long enough so that I could fold the CPU up back behind the display. This worked very well until summer. When summer came, the fan ran constantly and drove me nuts. So next came phase two.
  2. I took the whole thing apart, and completely stripped out the innards. The display remained largely intact, I only removed a front bezel. The rest of the high voltage and display circuitry remained in the back part of the display case. I know how sensitive this stuff is, and I didn’t feel like messing with it. The rest of the laptop consisted of a) mother board, b) hard drive, c) PCMCIA slots, d) BIOS battery. No keyboard. No CD. No battery. No case. Just bare board. I then took the mounting screws from the serial and parrallel ports, attached them to mounting holes in the mother board, and epoxied them to the back of the display. You can see the view from the sides:

Some people have chosen to do without the harddrive, choosing to boot from CD, and pull images either from a wireless network, or pull them from compact flash card, etc. While this is certainly possible, my requirement 2 prohibited this approach for my project. Also, the sound of the harddrive is minimal (and is only on for 3 minutes out of every 15) so that requirement 1 is not in jeopardy.

The Frame
I searched all the art and craft supply stores to see if I could find a frame that would be deep enough and large enough to hold the laptop. I couldn’t. So I decided to build my own. I went to my local hardware store and bought three things: solid wood door moulding, 24×24 finish quality plywood, and 1/2″ dowel. I think I spent less than $10.

I cut the moulding using my mitre saw to fit my laptop display exactly (well, close). I glued the pieces together and let it dry well. I cut the plywood to be the same size as the front. I then futzed around with all kinds of bracketing techniques for hold the laptop and diplay in place. None worked like I wanted, so I settled on the four dowels method–two on the bottom and one on each side. The assembled laptop (walltop, whatever) slides in the top, snuggles in between the two side dowels, and rests on the two bottom dowels. I drilled holes in the back and the front frame (very carefully) and glued them in place.

Now, what to paint it with? Remember the two goals? Lucky me, I just happened to have a small can of left-over black satin Rustoleum. Score! Paint cost: $0. Two coats, with a gentle sanding in between made it look quite nice, if I do say so my self.

Initially, I cut the dowels so that the phase 1 configuration fit very snuggly between the frame and the back panel. When I removed all the casing for phase 2, it didn’t fit so snuggly any more. So I took some duct tape (YES!), folded it in half lengthwise so that there was no adhesive exposed, and used it as a strap with staples to hold the display against the front frame.

OS: Windows 98. That was not really a choice. It came on the laptop, and since I know Windows better than Linux, I figured my chances of completing the project were better on Win98. In addition, I created my own start up graphic which says “Please wait while your digital picture frame starts”.
I created a folder called “My Pictures” and I shared it on the network. I named the computer “Frame”, and set the network card to DHCP.

Display Software: Irfanview. I created a batch file to start Irfanview in slideshow mode, and put a short cut to it in the Startup group. I set the slideshow to look at the My Pictures directory, randomly show the images, and change them every 15 minutes. I set it this long because I wanted it to be like a piece of the environment, not something you sit and watch.

Remote Control: Since I don’t have a keyboard, I need to be able to administer it on the network. So I installed RealVNC. That way I can put the frame on my network, boot it up, and go to “http://frame:5800” and have complete control over the laptop.

Image copying: I could just copy images to \\frame\my pictures. However, I have only 800MB of free disk space (yes, I could probably make more if I was really willing to strip Win98… don’t need to yet) and over 2GB of images on my normal PC. So I downloaded ImageMagick and wrote this batch file:

@echo off
if not exist %LOCALFOLDER% mkdir %LOCALFOLDER%
if exist “\\frame\my pictures” net use z: “\\frame\my pictures”

if `%1`==“ goto done
for /f “delims=`” %%j in (%1) do set BASE=%%~nj%%~xj
echo %BASE%
convert %1 -resize 800×600 “%LOCALFOLDER%\%BASE%”
if exist z:\ ( copy “%LOCALFOLDER%\%BASE%” z: del “%LOCALFOLDER%\%BASE%”)


goto start
if exist z:\ net use z: /delete

I called this “send_to_frame.bat” and I put a shortcut to it in my “Send To” folder. Then any time I need to send a picture to the frame, I just right click on it, point to Send To, then choose Frame. This automatically resizes my photo to 800×600 (the diplay resolution of the laptop) and copies the file to the shared folder. If the laptop isn’t on the network, it copies the file to %TEMP%\Frame (which is easy to get to from Start, Run, “%TEMP%\Frame”). Then I can copy the files manually to the share when the frame is on the network the next time. One minor note with sending files this way, you can only select 20ish files at a time. I don’t know exactly what the number is, but if you go over it, you’ll get an ugly error.

Now I have a digital picture frame/walltop that cost less than $10. I leave it running all the time. The only noise (in phase 2) is the disk drive every 15 minutes for a minute or two. Nearly every time I look at it there is a different picture. The best part is when my kids look at it: “Oh, I remember that trip to the zoo!” or “Daddy, when was that?”. When I feel like it, I take it off the wall, and walk it up to my router, copy some files and take it back to its home. The whole process takes only a few minutes, and since I have so many pictures on it already, I don’t care if the latest photos don’t get on it for a month or two.

Next steps
I’ll probably get an 802.11g card for it, if they have Win98 drivers (haven’t looked into it yet). That way it will stay on the wall all the time. I could also script it to periodically pull up a web browser to get a weather image or something. Cool stuff like that. But I’ll wait until those cards are cheaper… (anyone have one they’d like to give me?)

I’d like to figure out how to get it to turn off and on the display at scheduled times. That way I can save some power at night when we aren’t looking at it.