Thursday, December 8, 2011

DIY: Wireless Internet Enabled Photo Booth

Part V: Upload Images Captured By Photo Booth to the Internet!

I volunteered to come up with a photo booth solution for a friends wedding coming up at the end of 2011. They couldn't decide if they wanted to provide prints for the guests, or have everything available online after the fact. I decided that it would be a good idea to have the option of both. Hooking up a photo printer will not be a problem if they decide to go that route. As an alternative, I came up with the idea of uploading the files as they were taken to one of my online galleries. During my research, I did find a number of options for batch uploading of files, but I really needed a solution that would detect new files as they came into a folder, and them upload them to Flickr or SmugMug.

I stumbled across a number of possible solutions, but ended up going with a python script that runs on a Windows machine from the command line that will monitor the contents of a specified folder, and upload any images as they are saved to my Flickr account. The script is configurable, and can be set to run continuously. For the Photo Booth project, this is pretty slick, as it will provide an online backup of the images shortly after they are taken.

Requirement: Internet Access (Wired & Wireless Options included.)
The stand which holds my Photo Booth PC has been modified to include a RJ-45 port that can be hooked up to any standard internet connection through a patch cable, as well as a wireless network adapter to connect to any open nearby WiFi connection. I installed a Leviton quickport wall jack, used a RJ-45 quickport module, and manually modified a "Blank" insert to house the wireless antenna port. To do this, I drilled a hole into one or the blank inserts big enough to screw the female end of the RP-SMA to SMA cable. The cable was attached to the PCI card on the computer inside the cabinet. I'm not sure this was necessary, but wanted ensure a good signal to the PC. Modifying a blank insert was a simple solution to the fact that I don't think that these type of quickport modules exist, or at least not from Leviton.


The wall plate also has a USB port module as well as a HDMI port. These were added to ensure connectivity with an external Photo printer through USB, and the ability to connect a projector or HD TV to the booth to display a slide show via HDMI. The wall plate has 6 openings, and I've used 4 of them, leaving room for expansion if necessary. Here are the parts I used:



Automated Image Upload to Flickr: Python & upload.py
There are many options for uploading files to the internet, but needed something that would be automated. I personally use SmugMug and Flickr to host my online images. I started with trying to find a solution for SmugMug, but found that all of the available options were dated, and potentially broken by changes to the SmugMug API. I settled on using Flickr, and a command line uploader that leverages the Python programming language. I found uploadr.py from http://beserk.org/, a script offered by Cameron Mallory, which tested and worked perfectly for my requirements. You can edit the script to specify the image location, and set image attributes like tags and who can see them in your gallery. I set my script to private, kept the default tag of "auto-upload" and tested the script.

You can see by this screenshot that the command line needed to authenticate to Flickr, which brought up my default browser and asked for permission to allow this type of integration. After selecting "Y", it uploaded 3 existing images in the folder. It waited for 2 more cycles of checking at 60 second intervals, and then uploaded 3 more images that were added to the folder.


Basically, as people filter through the Photo Booth, all images captured will be uploaded to Flickr automagically within a few minutes depending on the upload speed of the internet connection. This not only provides an instant backup, but additional opportunities to display the images away from the photo booth. I think that the automated upload gives this DIY "booth" some flair, and isn't something I've seen before. Can't wait to test it out!

Update: The wedding venue did not have free WiFi, and I was not able to add this into the actual event. However, I think with a fast enough broadband connection with a decent upload speed, this would be a viable method for image backup.


Sunday, November 27, 2011

DIY: Photo Booth - Props



The wedding that the Photo Booth was built for, happened to land on New Year's Eve. This virtually guaranteed that there would be hats, noise makers, and tiaras. I wanted to have some other props that could be brought out later in the event, and started looking around the house for options. I also went online to find some ideas, and discovered that there are many free resources for photo booth props. Popular opinion states that "Mustache on a Stick" is SOOOO 5 years ago, but I loved the idea. Due to the nature of this event, I didn't want to spend tons of money on props, so making them is the next best, and cheapest alternative.


Inventory at latest Event:
  • Mustaches on a stick
  • Felt "Stick-on" Mustaches
  • Goofy glasses
  • Cheese Head
  • Batman Mask On a Stick
  • Pirate Bandana and Eye Patch On a Stick
  • Cowboy Hat On a Stick
  • Hawaiian Lei
  • New Year's Eve Party Hats and Glasses
  • Bunny Ears on a Stick
You can make your own Photo Booth Props using a number of available Online resources. Here are a few links to get you started.

Jordan's Oh Happy Day - Photo Booth Props
Photobooth Props Set #3


DIY: Photo Booth - dSLR Remote Pro

Part III: Photo booth software - dSLR Remote Pro

A friend requested that I come up with a solution for providing a photo booth for their upcoming wedding. I had created an Automate script for an old MacBook and Canon G9 as a cheap photobooth alternative a few years ago. However, I wanted to develop something a little more professional, and keep the cost cheaper than going out an renting a booth. My DIY Photo Booth project was born, and has been consuming my time for the past couple of months. One of the biggest challenges is deciding on which software to use for your booth, as there are many options available. I discovered dSLR Remote Pro by Breeze Systems, which is more than just a fully functional photo booth system, but also contains other features that can be used with my Canon dSLR cameras.

What I really liked about the photo booth features within dSLR Remote Pro was the ability to customize the interface to exactly what I needed. You can run the your system as a Photo Booth, or a Video Booth. You can customize and print photos, or just save them locally for use later. Since the DIY Booth was going to be used for a wedding, I wanted to be able to tailor the background images and user instructions for the event. I also wanted the interface to be user friendly and self-maintained. I installed arcade buttons to the enclosure that activated either photo mode, video mode, or start capture.

The computer that I used for this was an old HP dx2000 mini tower, running a Pentium 4, 2.80 Ghz processor with 2 GB of RAM. I was worried that this would be under-powered, as it was destined to be junked, and I saved it to recycle it in the booth. The phot obooth software by itself doesn't take that many resources, but you add a slideshow running at the same time, plus a full print queue, this old PC worked hard. I definitely think that a modern multiprocessor PC with more memory would be wise, but I was able to get through both events without any computer freezes.

Here are examples of the Backgrounds I used for the wedding:
This is the background that is displayed when live view is not active. The black button simulates a CTRL-S to switch to Live View Mode.

This background shows the booth users a mirrored image of themselves in the box. Pressing the green button simulates a left-click.

Since the users tend to look at themselves in the LCD screen, I created this image to remind them to look at the camera. It is displayed 1 second before the camera clicks the shutter.


When the 4 images are captured, a processing screen is displayed before going back to the beginning of the sequence.









DIY: Photo Booth - Teensy


The Teensy USB Development Board was used in my DIY Photo Booth Project to add arcade style buttons to the enclosure to enable the user to switch between Photo and Video Modes, Start the image/video capture, and enable/disable the camera's live view. I originally had one button to activate Photo Mode, and a different button to activate Video mode. However, I found that dSLR Remote Pro had a simpler keyboard shortcut that could alternate between both photo and video modes. Here is my original sketch planning on how I would use Teensy.


The big Green button is LED backlit, and will be used to initiate either the Photo or Video countdown. Wiring was simple and straight forward. Power to the Teensy is provided by the USB Cable going to the PC. I found other teensy projects that were similar and used online documentation to figure out how to wire up the board properly. Some people used resistors and power from the teensy, but I kept it as simple as possible.



You can used compiled C programming code, or Arduino to configure the Teensy. I used Arduino, and here is my script that was uploaded to the Teensy. The final version had the big green button simulating a left click of the mouse, the black button to toggle live view (F6 button), and the yellow button to toggle back and forth between Photo and Video modes. (CTRL-S)


/*
Photobooth LED Buttons
*/
// Setting variables that correspond to the PIN numbers that
const int boothStart = 8; // Green Start Button - 8
const int liveViewMode = 4; // Live View Mode Toggle - 6
const int videoPhotoMode = 6; // Photo / Video Mode Toggle Button - 4
int startButtonStatus = 0;
int liveViewButtonStatus = 0;
int cameraButtonStatus = 0;
void setup() {
pinMode(boothStart, INPUT);
pinMode(liveViewMode, INPUT);
pinMode(videoPhotoMode, INPUT);
}
void loop(){

// Check Button Status
startButtonStatus = digitalRead(boothStart);
liveViewButtonStatus = digitalRead(liveViewMode);
cameraButtonStatus = digitalRead(videoPhotoMode);

// If boothStart button is pressed
if (startButtonStatus == HIGH) {
Mouse.set_buttons(1, 0, 0); // click left button
// delay(100);
Mouse.set_buttons(0, 0, 0); // release buttons
delay(500);
}
// If liveViewButton button is pressed
if (liveViewButtonStatus == HIGH) {
Keyboard.set_key1(KEY_F6);
Keyboard.send_now();
Keyboard.set_modifier(0);
Keyboard.set_key1(0);
Keyboard.send_now();
delay(500);
}

// If cameraMode button is pressed
if (cameraButtonStatus == HIGH) {
Keyboard.set_modifier(MODIFIERKEY_CTRL);
Keyboard.set_key1(KEY_S);
Keyboard.send_now();
Keyboard.set_modifier(0);
Keyboard.set_key1(0);
Keyboard.send_now();
delay(500);
}
}


DIY: Open Air "Photo Booth" - Overview

DIY Open Air Wireless Internet-enabled "Photo Booth" with Slide Show

Each section of this project is separated into different blog posts. To skip the overview, use the links below to dive deeper into this project. This blog will be updated as the booth is completed and time is allocated for updating the project blog.

Part I: The Idea and Overview
I had been thinking of building a Photo Booth for a couple of years, but never seemed to get around to it. A good friend is getting married at the end of the year, and I'm am the Official Photographer for the event. In speaking with him about the wedding, he had assigned another friend of ours to create a photo booth. I had mentioned that I could help on that project as I had already done heaps of research on the subject. In chatting with our mutual friend, he was having issues coming up with reasonable solutions, and I brought up additional concerns and options.
  • Did the Bride and Groom want an actual booth, as this might limit the number of people who could participate?
  • Would an "Open Air Booth" be acceptable, this allowing groups of people to participate?
  • Would they want the booth to product prints for the guests, and potentially themselves?
It was decided that a laptop running photo booth software and capturing images from a webcam would just not be good enough for this event. I said that I would take the lead on this and come up with a plan. Here are my personal requirements:
  • Must be able to utilize dSRL Canon camera to capture great shots within the booth
  • A Booth that is portable, and can be modified to use as a booth and open with a backdrop.
  • Built-in Softbox for proper lighting
  • Must be self-sufficient and users can figure it out themselves. Not sure if we'll have an attendant at this event. (Remember, I'm the Official Photog, and can't consume my time with the booth)
  • Booth PC would be internet enabled and wireless
  • Images would be automagically uploaded to the internet as backup as they were taken.
  • Can be used as either a Photobooth or a Video Booth.



I selected this post to be featured on www.photography-blogs.org. Please visit the site and vote for my blog!

DIY: Open Air Photo Booth - Construction

Part II: The Build

My DIY Photo Booth always included a built in softbox surrounding the camera and the LCD screen when I envisioned it in my head. I drew some sketches on my iPad and ventured to Home Depot to scout out supplies. Please keep in mind that I always intended to use as many supplies that I already owned. This included the base, which is a rolling work bench on casters that will hold my PC. I also already had multiple LCD screens that I wanted to mount to the booth. The PC was an old HP desktop that was destined for the dump, but powerful enough to run the photobooth software, so it got new life.

I began with a metal paint bucket and a florescent light cover as my base. What I discovered about the light cover is that the Acrylic was too brittle, and would probably have to abandon that idea. I pictured the LCD screen below the camera portal, or bucket, with a white, translucent material surrounding it to provide a lighting source.

I already had a couple of old 19" LCD screens in the basement, as I had upgrade my monitors on my home PC to widescreens. These Dell screens would work great for the booth. I knew that I was going to use dSLR Remote Pro as the software, in addition to BreezeViewer as a slide show. Using this combination allowed the Photo Booth to run off one monitor and the captured images to display on the second monitor. I planned on attaching the 2nd monitor to the outside of the booth enclosure so people could see their own images after they finished their session.

I purchased a couple of Adjustable Tilting Wall Mount Brackets for LCD from Amazon, as this would make my build easier as far as mounting the LCD screens.

I cut a 1x6" board to the height of my booth enclosure and positioned the bucket a the approximate level I was going to use. I also painted the inside a flat black using primer and then black paint. Using a second board, I attached the LCD mount. Now the LCD Monitor and the front lip of the paint bucket would be at about the same level.

I attached the bucket into its final spot, and drilled pilot holes and used 8 machine screws to hold it in place.

For the lens to fit into the bucket, I used a 4" hole saw to cut the opening through the bucket and wood all at once.

I routed the back edge of the hole opening to be rounded. I plan on covering the inside of the enclosure with mylar to use as a reflective material to optimize the softbox.

Using a extra mylar emergengy blanket that I purchased for use with my DIY Octo Softbox project, I covered the boards and reattached the bucket and LCD mount.

To get a feel for how the monitor would look, I attached it to the board and balanced it on the cabinet to see it.

Next is building the enclosure. I knew that in order for this Booth to work for me, it had to be somewhat portable. I decided that I would use an existing tool cabinet for the base, and build the booth enclosure to fit on top of that rolling cabinet. I chose 2x2 boards, and created a frame.

Here you can see the back , which has a board to hold the 2nd LCD monitor, as well as the mylar covered board for the camera portal and main LCD, are fitted into the new frame.

The back side of the enclosure with LCD mount.

Testing the 2nd monitor. The LCD monitor on the front side is recessed into the frame, and is flush with the front edge of the portal opening. I wasn't concerned about the rear side, and although does get mounted inside the main frame, does stick out farther due to the mount.

Patching some holes and filling in screw heads.

Here is the side panel, which will be removable to gain access to the inside of the enclosure.

Adding the camera shelf. I will be using a manfrotto ball head to hold the camera and attached to this shelf.

The back panel of the inside of the frame, I'm using contact cement which will give a tacky surface to cover with additional mylar reflective material.

Emergency Blanket, which is already been pasted to the back wall of the enclosure.

Just need to trim the edges and let it dry.

After standing it back up, here is the enclosure with the sides and back panels attached.

I knew that I wanted the enslosure to light up, and not just use strobes, so I added a couple of light bulb sockets and wired them to a switch inside the enclosure.

Here is a shot of the enclosure with the 2 lights on. I know at this point I'll have to add a couple of more lights to the top.

For the front panel, I gave up on the idea of using acrylic, and settled on using white fabric. I went to JoAnne's fabrix to pick out some nice white silk material from the closeout section. Getting the fabric on sale makes my wife more happy than me, but it seemed to work out great. I dusted off my sewing skills and sewed some re-enforcement loops into the fabric. The idea was going to be to cut a hole in the fabric wear the portal needed to go through, but to ensure that there was still strength in the sheet to not tear when stretching it over the remainder of the box.

Ended up going with sewing 2 loops before cutting.

Cut the opening.

Test the can to ensure that it fits. It's really tight, and will work fine.

How it looks with the fabric attached from the front.

Reattached the bucket with the fabric installed back to the original upright brace.

I built the frame so that it would have an additional frame inside the outside frame to act as a mount for the fabric. I stretched the fabric around the inner frame and stapled the silk to the 2x2.

Once the fabric was stretched and stapled to the frame, I needed to cut holes for the LCD mount to go through. I pulled out the trusty Duct tape and attached a piece to each side of the fabric. I used this technique to prevent the fabric from ripping once I cut through, as it was under some strain from pulling it tight over the frame.

He it is with the LCD Monitor attached. You can see that the fabric goes all the way around the camera portal and the LCD monitor.

Another shot with the lights on the inside turned on. With this much done, I knew that I definitely needed more lights on the inside.

Here is the enclosure with the additional 2 light bulbs mounted, and the softbox is much brighter.

Welcome screen testing on for the dSLR Remote Pro software.

I added another piece of 1x3 wood to the bottom to act as a mount for the arcade buttons, which will be configured to initiate keyboard strokes and mouse clicks to the photo booth software using the Teensy USB Development Board.

Update: Final Booth @ Wedding Reception
1/2" pipe was used to create a bracket that was attached to the top of the photo booth to hold the 2 softboxes to either side of the booth. Pocket Wizard remotes and Canon 430 EXII flashes were used to add to the light of the built-in softbox. I used my vinyl cutter to create custom accents on the booth frame and behind the buttons. A white backdrop was placed in front of the booth, and tape was stuck to the floor in a box, to help users know where to stand. You can see in this next image where the boox was positioned in the corner of the reception call, and the slide show which is displayed on the back monitor. The projector is off during the father of the bride's speech, but you can see how the softboxes are hanging off the pipe-bracket. The table next to the booth housed 2 Canon Selphy printers and the guestbook for guests to sign.