NerdKits - electronics education for a digital generation

You are not logged in. [log in]

NEW: Learning electronics? Ask your questions on the new Electronics Questions & Answers site hosted by CircuitLab.

Project Help and Ideas » Nerdkit Intervalometer

December 02, 2009
by FWSquatch
FWSquatch's Avatar

I'm almost finished with my Nerdkit Intervalometer. (An intervalometer is gadget used to take time lapse videos.) I've been working on it for the last 3 or 4 weeks. My goal was to create a project that one could go out and build cheaply and maybe even turn it into a functional gadget. My intervalometer works with Nikon cameras and can be used to take time lapse photos or as a plain old remote control. The only part you'll have to buy besides the Nerdkit is an IR LED ($2.00 or less).

Intervalometer Overview

The code is hacked together with pieces I took from the tempsensor and traffic light project. For now, the project only works with Nikon cameras, but I've written some code that should work with Canon cameras. I just didn't have one to test it with. The code is available on my blog, but I'll post it here if anyone wants it.

Here is a link to the write-up:

I'm working on a video of it right now.

December 02, 2009
by Rick_S
Rick_S's Avatar

Cool project and great idea. What ya going to be time-lapsing??? Rick

December 02, 2009
by FWSquatch
FWSquatch's Avatar

I wanted to do some sunrise/sunsets. I've already done a few. I posted them on youtube. Unfortunately, I'm not very good at it yet. I'm sure they'll get better with practice.

Youtube Sunset

December 02, 2009
by Rick_S
Rick_S's Avatar

I like it. Kind of neat to see.


December 02, 2009
by FWSquatch
FWSquatch's Avatar

I updated my blogpost to add the video. Still at

December 02, 2009
by Rick_S
Rick_S's Avatar

Very nice video presentation. You've got a lot more courage than me to get in front of the camera!

December 04, 2009
by n3ueaEMTP
n3ueaEMTP's Avatar

FWSquatch, I didn't know what an Intervalometer was until I took a look at your blog. Your idea is awesome! Too often we build something and people seem somewhat indifferent to our projects (I'm currently working on a model rocket launcher for my son) because electronics can do so many things today. They don't realize the sense of accomplishment we gain from finishing a project that actually works. To that end, great work, keep it up!!!

Chris B. n3ueaEMTP

December 04, 2009
by mcai8sh4
mcai8sh4's Avatar

"They don't realize the sense of accomplishment we gain from finishing a project that actually works." Well said - it's only when we try to do something ourselves that we can truly appreciate the skill and elegance of other peoples work. I remember being overjoyed when I first made an led flash!

This is a great project. Very impressive. You also have done a really good job with the vid and the writeup on your blog to show off your achievements.

I don't actually own a Cannon camera, but I do know a bloke who does a lot of digital photography using a Cannon EOS 50D. So I may get myself a IR LED and try this bad boy out.

Great work!

December 04, 2009
by mcai8sh4
mcai8sh4's Avatar

Looking at the specs - the EOS 50D doesn't have IR sensor for triggering - ah well.

January 22, 2010
by Phrank916
Phrank916's Avatar


This project is the coolest! I'm definitely building it soon. I have a Nikon D40 and just having the remote ability would be cool, much less the time lapse stuff. Awesome!


June 03, 2013
by scootergarrett
scootergarrett's Avatar

I just finished my version of this project, kind of, I was after the time lapse and didn’t care so much about the camera. So I started with a 5 year old camera that has some problems (looses date and time every power down among other things). I took apart the case and soldered wires onto the shudder button and where the battery connects to the main board. I can’t show pictures for oblivious reasons. So at this point I can externally power the camera by supplying 3.9V to the battery and take picture by shorting the other wires together. I came up with this circuit:


I don’t know if it’s the proper way to use a 2N7000 but it works. All the wires where getting cumbersome, and figured I will keep this project so I went all out and made my first prototype board:

prototype board

pic is before cutting to size. I still need to find a power supply exclusively for this that is 6V or more and 500mA. I had a 200mA supply and the voltage would drop too much when the flash capacitor tried to charge and the whole thing would shut down.

So now I just turn the camera on point it somewhere, put it on the lowest quality setting and press the start button, then when I’m done I press the stop button and load the pictures on my computer. I downloaded a free program photo Lapse 3 which works well at turning pictures into a time-lapse video. All I have so far is an hour of people walking around outside by the bus stop compressed into 57 seconds.

Things I probably won’t do but would be cool, slowly rotate the camera on a stepper motor, or a motion detection trigger.

For completeness the code:

// Time lapse program Capture.c
// for NerdKits with ATmega328p
// Send signal to camera to take picture at set interval

// PB2 -- To indication LED
// PB1 -- To camera shutter transistor
// PC4 -- Button input to trigger start and stop

#define F_CPU 14745600

#include <stdio.h>

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <inttypes.h>

#include "../libnerdkits/io_328p.h"
#include "../libnerdkits/delay.h"

/// How often to take a picture [sec] ///
#define FREQ 5

volatile short Count;
volatile int TolCount;

int main()
    cli();                          // Start with interrupts off

    // PB1 & PB2 outputs //
    DDRB |= (1<<PB2);               // Make PB1 an output for showing state
    PORTB  &= ~(1<<PB2);            // Start with LED off
    DDRB |= (1<<PB1);               // Make PB2 output to shutter transistor
    PORTB  &= ~(1<<PB1);            // Start with shutter off

    DDRC &= ~(1<<PC4);              // Set pin PC4 as input from button
    PORTC |= (1<<PC4);              // Turn on PC4 pull up resistor

    //Interrupt setup //
    TCCR1B |= (1<<CS12) | (1<<CS10) | (1<<WGM12);
    TIMSK1 |= (1<<OCIE1A);
    OCR1A = 14400-1;                //Interrupt timing 1Hz

    // Initialize variables //
    TolCount = 0;
    Count = 1;
    /// Flash LED to show ready ///
        PORTB  |= (1<<PB2);

        PORTB  &= ~(1<<PB2);
        if(!(PINC & 1<<PC4))        // Press button to start

    // clear timer and allow interrupts //
    TCNT1 = 0;

        if(!(PINC & 1<<PC4) && TolCount>2)   // Break out if at least two pic and button is held
    cli();                          // Turn off interrupts

    goto Start;

    return 0;

// One second timer //

    /// Make MCU 'press' button ///
    if(!Count)      // Take the picture
        Count = FREQ;

        PORTB  |= (1<<PB1);
        PORTB  &= ~(1<<PB1);


    PORTB  ^= (1<<PB2);

June 04, 2013
by FWSquatch
FWSquatch's Avatar

Great job! I love your project. Glad to see others do this sort of thing. I wish I hadn't got rid of my Nikon cameras or I'd still be playing with mine.

Post a Reply

Please log in to post a reply.

Did you know that you can adjust most wire strippers to make it easier to strip insulation faster? Learn more...