I’ve previously written up a Do-It-Yourself Photo Booth project I built using a Raspberry Pi, an old LCD monitor, a mirrorless camera and an inexpensive LED Ring Light. I’ve recently updated this project to use the iPhone camera, and wanted to explain how I built it.


Photo Booths can be a fun addition to a party or gathering, but they can be extremely expensive to rent. One place I called was quoting more than $1,000 just for one night! But if you’re handy with Swift and Python, and have an extra monitor lying around, you can build one that has much better resolution and features for less than $150.


Please see the original Photo Booth post for a basic implementation of the Raspberry Pi controller.

Controlling an iPhone Automatically

The big change I made for this iteration was to remove the dependency on a dedicated camera. By substituting in an iPhone, I was able to make the project much more portable and compact, and frankly much better adapted to low-light photography. The latest iPhone and iPad cameras are really terrific, and there’s really little advantage to having a tethered professional camera set up all night, unattended, which might be accidentally knocked over or otherwise damaged.

How to control it?

The Raspberry Pi built into the Photo Booth case can speak Bluetooth and Wifi and even USB.

Rather than futz with Bluetooth, I decided that it was acceptable to assume there will always a wifi signal where the photo booth would be set up. That way, I could establish a simple web server on my iPhone, have it “listen” for the right trigger call from the Raspberry Pi, snap the photo, upload it to a central server, and as a nice backup feature, keep the photo on the Camera Roll for later sharing.

I used the Swift web server library Embassy for the iOS app. My custom Photo app on the iPhone simply spins up an Embassy instance, listens for a simple GET call from the Raspberry Pi, and then calls some AVFoundation code to snap the photo. It then posts the image to the back-end server.

Meanwhile, the RPi server waits about 10 seconds after telling the camera to snap the photo, then it polls the backend API for a new image, and displays it on the monitor.

These changes to the version 1.0 Photo Booth project make it far easier to set up, much more portable, more reliable in low light conditions, and overall just much more “plug and play.”

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.