Interfacing with a camera

A project log for Intervalo-Thingy

ATMEGA 328 based intervalometer. Stupidly complicated for what it does. This is now its official name.

afro-spockAfro Spock 08/08/2014 at 11:280 Comments

The next order of business was to successfully tell the camera to actually take a picture. Certain Canon cameras use an interface for wired remotes that is simply a stereo 2.5mm cable. All you have to do is close the correct line to ground. One tells it to focus and the other to shutter. It has to be held for about a second to take the picture. This was easier than anticipated. One interesting difficulty is that I had a hardish time finding a 2.5mm jack for my controller end of the project and it was hard to find a decently long cable. I did find a 3.5mm to 2.5mm cable that is what I have ultimately used. By the way, I don't like my 3.5mm jack. It is hard to push in the connector and is easy to pull out.

The remote port

The upper hole is the one we want.

To pull that line to ground I used NPN transistors as switches and included a third one to control the LCD backlight with PWM. I am considering using an optoisolator to have complete isolation between the devices. After tuning the length of the pullup I had a working setup! I was successfully getting the shutter to close every time. However I also learned the drawbacks of using delay() in your code as it shut the whole thing down, in essence, with all the waiting.

This tutorial ( helped me to find the way around this. I started using the millis function as my clock and again got the camera to successfully focus and shutter at the important interval. Better yet, because it bases the timing off of uptime it also made it so my brief delay to debounce the button presses doesn't affect the interval between shutter events. I am considering, as previously mentioned, that I could use an RTC chip to set my intervals and add an alarm function to start the time-lapse photo taking. However, I am running out of pins...