How to Make a Bluetooth Intervalometer for DSLR Time Lapse
In this project post I’m going to make an intervalometer for my DSLR camera. An intervalometer is a device that connects to a camera and automatically clicks the shutter button at set intervals. This is useful for time lapse photography where you need to take photos for several hours at exact intervals. You can buy these devices off the shelf, but I thought it would be more fun and cheaper to just make my own. This project uses a lot of similar design concepts from my Stranger Things message wall video, so I’ll try to reuse my efforts from that project.
Soldering the TRS plug to the Arduino
I will start with an Arduino compatible microcontroller. To send the shutter clicks to the camera I need to use a 2.5mm TRS audio plug. To trigger a shutter click on the camera I just need the Arduino to connect the tip and the sleeve of the TRS plug. This completes a circuit inside the camera and opens the shutter to take a photo. It’s also possible to tell the camera to autofocus by connecting the ring to the sleeve, but I will be manually focusing my shots when I do the time lapse, so I don’t need this function. I need to take a short length of cable and solder one end to the plug and the other end to the Arduino. The wire corresponding to the sleeve gets soldered to ground and the wire corresponding to the tip gets soldered to digital pin 2. To connect these two wires using the Arduino, I just need to write a logic LOW signal on pin 2. When I want to disconnect the two wires, I’ll just write a logic HIGH signal on pin 2.
Using the Arduino blink sketch to test shutter click
I’m going to test this design by modifying the blink sketch on the Arduino to trigger a shutter click every 1 second. I need to change the blink pin to pin 2, change the on time to 750 ms, and the off time to 250 ms. Remember I just need the TRS tip to be grounded for a short duration in order to trigger a shutter click. Watch the video for a quick demonstration of this test code. You can hear the camera click about once every second.
I want to be able to talk to the Arduino with an android app so I will add an HC-05 bluetooth module and wire it to the Arduino. This will allow me to create an app that sets the number of photos I want for the time lapse as well as the interval between them on my smartphone.
The bluetooth module uses the UART protocol to talk to the Arduino. It’s important to remember that the transmit pin of the first device gets connected to the receive pin on the other device. It is a common mistake to assume that both transmit pins get wired together and that both receive pins get wired together. It might be helpful to think about it this way, each device has a data output and input line. You need to connect the output line of the first device to the input line of the other device. This allows data to flow between the two devices.
For the Arduino code I need to read the serial monitor for messages from the bluetooth module. Each message received on the serial bus will be one of three actions. Either, setting the number of photos to take, setting the interval between the photos, or to starting the time lapse process. All other messages received on the serial bus should be ignored. I can test this code by sending messages to the Arduino from the serial monitor in the IDE.
I feel pretty confident in how the electronics are working so it’s time to move on to writing the Android app. When I did in the Stranger Things project I used MIT App Inventor, but this time I’m going to use an android app called RoboRemo. This app allows you to create custom remote control apps that communicate over bluetooth, WiFi, and USB. I’ll create the appropriate buttons and text fields that I need to make the intervalometer work.
3D printed enclosure
I want to be able to bring this intervalometer with me wherever I go, so I’m going to design an enclosure and print it out on my 3D printer. I’ll open fusion 360 and extrude the outline shape. Next I’ll split the body in half using a midplane. With the two halves created, I can use the shell tool to hollow out the body and finally cut some holes for the TRS cable and the USB connector. At this point the enclosure is ready for printing. With the 3D print complete, I can test fit all the pieces into the enclosure. When I make enclosures like this, I usually have to print several iterations and make changes in between to get everything to fit just right. But this first draft looks like it’ll work great, so now I’ll move on.
Testing the intervalometer
With the electronics soldered together, the Android app done, and everything put inside an enclosure, it’s time to test out the intervalometer. I’ll power it with a cell phone charger plugged into the USB connector on the Arduino board. When I open the app, I’ll connect to the bluetooth module and enter the number of photos I want to take, followed by the number of seconds between photos. In the video you can see how the app does some helpful calculations for me. If I take 548 photos at 60 second intervals, it will take 32,880 seconds to complete the timelapse. If played back at 30fps those photos will result in a clip that will be 18.27 seconds long. This kind of information should help me out when planning and setting up my shots. When I’m ready to start the time lapse, I just need to hit the “start” button.
Night time time lapse in the mountains of Arizona
I am going to use this device to take time lapse videos at night of the stars in the sky. This type of photography requires exposure times between 10 and 30 seconds and are only possible with an intervalometer. I took this project with me a few weeks ago when I went camping in the mountains of Arizona. We camped in the mountains nowhere near any big cities which was great, however the night I took this time lapse it was pretty much a full moon. The moon reflects enough light in these long exposures that it almost looks like the sun! Instead of trying to fight this, I just ran with it and made the moon the subject of my night time time lapse.
That about wraps up this project. I make a lot of cool project videos like this, so if you enjoy that sort of thing please consider subscribing to my YouTube channel. I really appreciate you taking the time to read this post. I’m Zach, and I hope to see you next time.