A Makers Wedding - Photo Booth





Introduction: A Makers Wedding - Photo Booth

This Instructable is about:
building an automated photo booth. The total build cost was around $150 as I re-used a lot of the components and materials I already had in my garage - in addition to what I could salvage from scrap yards.

Why? - I decided to build my own photo booth after trying to rent one from local photography studios. The going rate for a rented photo booth is around $600 in addition to the hourly rate of the attendent to watch over the equipment. As this was not in my wedding budget, and I did not want to deal with an additional vendor, I decided to build my own for under $200.

My Goal - Build an automated photo booth for under $200 - that could be easily operated by anyone at a party - and is durable and compact enough to fit into a compact car.

(Note* this photo booth does not print pictures. I have been working on a script that automatically uploaded the photo to flickr, but I did not finish it in time for the wedding. I'll try and include that in a future post )

Step 1: How It Works

The photo booth operation is simple. Users walk up to the back side of the camera - See themselves on the screen - Press a button and strike a pose.

The mechanics of the photo booth are a little bit more complicated, but ideally, the user never has to know what is going on under the hood.

The guts behind this photo booth are based on OSX lion. With Lion, the photobooth application can be extended to full screen and it can be set to use an external camera. So I connect a logitech web cam and an external monitor to a laptop running OSX Lion. The only thing i needed to build in addition to this hardware setup was an array of lights and a button (mapped to the enter key) to trigger the photobooth application to take a picture.

The "business end" of the photo booth can be seen in this step.

Step 2: Software and Trigger Button

A Brief Overview
As previously mentioned, this photobooth uses the OSX Photobooth application. The OSX Photobooth application was chosen because it was the most stable software i could find - and it comes with every MAC computer. Like most applications, users can trigger features and functions with mouse clicks and keyboard commands.

Triggering the Photobooth Application
With OSX Photobooth, pressing the Enter Key triggers the program to take a photo. I didn't want to expose my computer to people hammering on the keyboard (espeically if they had been drinking). This is why i decided to use an external button, connected to an arduino microcontroller, to trigger the photobooth application.

This is how it works:

The button is pressed - A Staples Easy button was modified to act as a regular button. It's really durable, so people can beat on it without breaking it.

An Arduino registers the button press - When it registers a button press, it sends a serial command to the computer. In this case, it sends the [enter] serial command.

AAC Keys listens to the serial port for serial commands - AAC keys is a free application which litens for serial commands and emulates mouse and keboard events. You can download it here. In this case, when AAC keys receives the [enter] serial command, it tells the computer (and the photobooth application) that someone has just pressed the enter key on the keyboard.

When the photobooth application registers the enter key being pressed, it takes a photo.

Wiring the circuit - If you do not know how to make a button circuit for an arduino, read this tutorial - http://www.arduino.cc/en/Tutorial/button

e sure to connect the button to pin 10 on your arduino. If you choose to wire your button to a different pin, be sure to change [int buttonPin = 10] in the arduino code to match the pin number you selected.

Writing the code - Here is the code i wrote to send an [enter] serial command to the AAC Keys. If you are not familiar with writing arduino code, use this tutorial here. It's pretty easy once you get the hang of it. http://arduino.cc/en/Guide/HomePage

const int buttonPin = 10; // the number of the pushbutton pin

int buttonState = 0; // variable for reading the pushbutton status

void setup() {

pinMode(buttonPin, INPUT);
Serial.begin(9600); // open the serial port at 9600 bps:

void loop(){

buttonState = digitalRead(buttonPin);

if (buttonState == HIGH) {
else {
// nothing


Installing AAC keys - As previously mentioned, AAC keys is a free program. "That receives commands through your computer's serial port and translates them into keystrokes and mouse movements, giving you full control of your computer from another device such as an [arduino]". You can download the program here: http://www.oatsoft.org/Software/aac-keys

Using AAC Keys is quite simple. Make sure you have an arduino plugged in via usb, running the code seen above. Open AAC keys application and access the applications preferences. When the dialogue appears, check to see that you have selected the serial port associated with the connected arduino (generally it's selected by default, but it is good practice to check), and that it is running at 9600 bps.

If you've done this, AAC keys should be interpreting the button press from the arduino as an [enter] command on the keyboard. open a text editor and give it a shot. Type a few lines of text and press the button attached to your arduino instead of using the enter key. You can also open photobooth at this time and see that pressing the button triggers the program to take a picture.

Step 3: Booth Design

The photo booth was modeled after an old school LOMO camera, instead of the traditional box with a curtain, for three reasons:

- Ease of construction - Its basically a box with a fake lens on it
- Recognition - People will be able to see a large camera from far away, and they might easily deduce that it must take photos in some form or fashion.
- Novelty - The accentuated size of the camera will create a conversation piece in addition to eliminating the fear of social contract (the users fear of approaching and using it without permission or instruction)

After settling on the design, I sketched it out in adobe illustrator (the .AI file is included on this page). Illustrator is a good tool to make quick "blueprints" which can be easily scaled and printed. if you don't already own adobe illustrator, you can get the demo right here http://www.adobe.com/cfusion/tdrc/index.cfm?product=illustrator

With this quick blueprint, I created a front and side view of the camera. The size of the camera is dictated by the size of the LCD monitor and a a varying height range of users - something that would be easily accessible for people who are 5'2" - 6'4".

After completing the design, I measured the size of the panels and started building.

The Adobe Illustrator file (.AI) is attached to this page.

Step 4: Cut the Panels

The panels were cut out of 1/2" Plywood. They are thin enough to be light weight, but thick enough to screw / nail into without worrying about additional reinforcements inside the case.

Step 5: Bottom Panel - Tripod Mount

The camera body was designed to mount onto a heavyweight tripod. Inorder to make it stable, I had to provide an additional support in which the tripod tube could slide into and lock.

I borrowed this tripod from a friend. it has a 1 1/4" Outer Diameter tube which i used to mount onto. Home Depot sells galvanized pipe with an Inner Diameter that is slightly larger than 1 1/4" in addition to the necessary surface mounting hardware.

The galvanized pipe has a hole drilled into it, allowing me to insert a pin (which intersects with holes in the tripod tube), creating a stable mount that can only be released from inside the camera box.

Step 6: Box Construction

The camera box was constructed from 1/2" plywood, with a 3/4" Pine base (for added strength).

Step 7: Adding Components

Step 8: Testing

Once all of the components were added, I decided to stress test the photo booth. I wanted to see how long the device would continually run without any intervention, in conditions that it would likely encounter (sitting outside in the sun with +90 degree temperatures).

Note to you - TEST OFTEN AND EARLY!!

Here is a video of my early test - this is what i learned


Heat is an issue - After watching the computer overheat with about 15 minutes of use, I realized that heat was a big issue. I installed some old PC fans to help get rid of the heat.

Mac computers heat up with the Lid closed - Even with installing the fans, the compute was getting too hot. My original mouting system secured the computer in a vibration proof rig - with the lid closed. It was only after opening the computer so that the processor fans could run unobstructed that the device no longer overheated. This discovery led to 1 more fan (in the base of the camera box) and a mount which held the computer open.

The button was in the wrong place - with the button on the edge of the camera box, pressing it too hard caused the box to rock back and forth. Potentially an issue with inebriated guests, I moved the button to the center of the camera box, so that the force is directly perpendicular to the tripod.

Step 9: Details and Finishing - Part 1

In this step, the components are removed, the box is primed and sanded. A coat of spray adhesive is applied to the surface to give the camera box a rough texture. The box is then primed and painted with Duplicolor paints - available at most auto supply stores.

Step 10: Details and Finishing - Part 2

In this step, additional embellishments are added to make the camera box appear more like a camera.

Step 11: Usage

Here are some of my favorite photos from the wedding (The guests took over 800 photos in a 4 hour period). My wife and I also rented a bunch of props from a local theater company, in addition to making a few of our own.

I hope you enjoyied this post. Please let me know if you make this yourself and especially if you make any big changes. I'm always excited to see how people make things their own.

Matt Franks

Mfranks at famunited dot com



  • Epilog Challenge 9

    Epilog Challenge 9
  • Paper Contest 2018

    Paper Contest 2018
  • Science of Cooking

    Science of Cooking

We have a be nice policy.
Please be positive and constructive.




This might have an obvious answer, but what is actually being used
to take the picture, the mac webcam? Seems like you could get better
results, and much less heat by using a raspberry pi with a pi cam. Of
course you probably would have had a little more coding work to do,
maybe you thought of that and just didn't have the time. Someone else
reading this may benefit from my comment on that though. Additionally,
if they don't have a mac, the raspberry pi would be an ultra cheap

I have considered doing this myself with several pi
cams to get multiple perspectives of the same shot. No need to print
when auto-uploading. The guests can just order the shots they want right
from flickr, or whatever site is being used. Just supply some business
cards with instructions on how to go about it. Furthermore they could
just download them and take 'em to Wal-Mart or Walgreens, or wherever.

Just my two cents!

I'm in the process of building this now. I had to change your code a bit for a few reasons:

A) I didn't use an easy button, and the button I picked up at the electronics store didn't have any resistors to pull the current in any direction and I ended up with floating pin. I used the built in pull-up resistors in the Arduino to pull the current to high while the circuit is closed and connected the common pin to ground.

B) I couldn't get AAC keys to interface with my macbook air, it only showed the bluethooth ports. I looked on their website and they suggested a 30 dollar adapter and some drivers but I decided to pass. I used a yun I had lying around, a (leonardo, or nano should work as well just check that it's compatible with the Keyboard library) and used the Keyboard library to directly interface with the computer instead.

C) When the circuit is complete the default Arduino loop is much too fast and as a result triggers the enter key about 5 times per click. I added a small delay at the end of each loop to prevent this from happening. A better solution would be to disable the button until the picture is taken, but I didn't feel like bothering with that.

I also took this one step further and using a combination of hazel, dropbox and ifttt had the images automatically uploaded to a public album on facebook.

#include <Keyboard.h>

const int buttonPin = 4; // the number of the pushbutton pin

int buttonState = HIGH; // variable for reading the pushbutton status

void setup() {

pinMode(buttonPin, INPUT_PULLUP);

Keyboard.begin(); // open the serial port at 9600 bps:


void loop(){

buttonState = digitalRead(buttonPin);

if (buttonState == LOW) {




else {

// nothing



This is fantastic! I love that you build a giant camera for the photo booth. Not only is it functional but it looks awesome!

This is AMAZING!

I know I'm a bit late but.... would you be able to tell me what the dimensions (approx) for the camera lense were?


I am trying to make this now. Would you mind posting a clearer picture of how you wired up the breadboard (I am having trouble getting the wiring exactly right. i.e. what to connect to ground and what else other than the soldered wired needs to be circuited). Thanks I would really appreciate it!

This is incredible! Did you end up finalizing the code to automatically post to flickr? I hope we can complete this project for our wedding!!


I wonder if this could be simplified slightly by using something like the Teensy:


It's an ATMeg32u4 USB emulator. That way, all you'd need to do would be program the Teensy to send the return key's ascii whenever the external button is pressed. I've had a little experience with the Teensy and it's perfectly suited for an applicaiton like this!

Hi Frank, first off: good job on designing a cool photo booth! I wasn't able to find any measurements to make the box, did I miss them or do you have them handy for you to post?


Wouldn't using a Makey-Makey allow you to scrap the need for AAC & the Arduino?

If all you're needing is an Enter button then the Makey-Makey would make the leg work quite a bit less.