Project showcase
Pocket Intervalometer

Pocket Intervalometer © CC BY-NC

Simple SLR intervalometer, for shooting hyperlapse and time-lapse photography using an Arduino Nano.

  • 7 respects

Components and supplies

Ard nano
Arduino Nano R3
The Nano controls the overall function of this project.
Fairchild semiconductor pn2222abu. image
General Purpose Transistor NPN
Two of these control the logic for the camera shutter and flash.
Mfr 25frf52 10k sml
Resistor 10k ohm
These are to support the NPN transistor circuit.
Mfr 25fbf52 221r sml
Resistor 221 ohm
For the LED - adjust as required to variate intensity of LED output.
09590 01
LED (generic)
Any LED to suit your requirements, indicating successful trigger of shutter.
Lumberg 2.5 mm SMD Jack
2.5 mm is the correct size for most Canon & Nikon cameras...
Mini RTC Module for Raspberry Pi
The DS3231 is the timer controller behind this project.
Hammond 1593J Enclosure
The PCB is designed to fit neatly within a 1593 enclosure.

Necessary tools and machines

09507 01
Soldering iron (generic)

Apps and online services

About this project


I was asked by a friend to create a simple piece of hardware, packaged in a robust and simple case. It would have to be able to control a digital camera, and run 24/7. Additionally, it needed to be able to shoot the camera between certain times on certain days, and have variables to adjust the exposure and flash times. Battery consumption had to be low, as the device was mounted in the field and away from mains - the final version runs at 0.1 mAh!

Starting Code

I started off with some excellent code by Tjurik and re-purposed it to suit the device. Tjurik had originally worked with my friend to develop software which met his needs, and this really sped the project up - thanks!


Adjusting the code is really quite simple. We can adjust the amount of exposures per trigger, the start and end times and days, etc. as per below:

// Main Adjustable Values: 
const int   SHUTTER_TIME_MS         = 2000;   // Length of Shutter Pin pulse. 
const int   INTERVAL_SECS           = 4;      // Number of seconds to wait between photos  - for 1 minute use 60, one hour use 3600, etc. 
const int   NUMBER_OF_EXPOSURES     = 1;      // Number of photos to take for each 'loop'/command to take a photo. 
const int   KEEP_ALIVE_PERIOD_SECS  = 1500;   // In seconds  - set to 0 if we want no keep alive  (25 minutes * 60 sec) 
const int   FOCUS_LEAD_TIME_MS      = 2;      // in milliseconds 
// RTC Time Setting Script - Currently out of use.. 
//bool gForceClockSet = false; // "false" forces setting of the clock when compiling.
// Adjustable Values for Working Days - True for yes, take photo, False for no - don't take photo: 
bool  VALID_DAYS[] = {                         
                                     true,   // Sunday 
                                     true,   // Monday 
                                     true,   // Tuesday 
                                     true,   // Wednesday 
                                     true,   // Thursday 
                                     true,   // Friday 
                                     true,   // Saturday 
// Set to all 0 if wanting to always take photo; 
int START_HOUR                        = 0;    // Start Hour    0 to 23 
int START_MINUTE                      = 0;    // Start Minute  0 to 59 
int STOP_HOUR                         = 0;    // End Hour      0 to 23 
int STOP_MINUTE                       = 0;    // End Minute    0 to 59 


Arduino IDE Code - Intervalometer V3.2
Inside you'll find all the files you need. Once you've built the board, flash the RTC using the script enclosed, and then upload the actual Intervalometer code. :)

Custom parts and enclosures

Parts List
Just in case you're in the UK. :)


PCB Gerber Files
This is the main PCB files in Gerber format ready to be built. This is Version 3.04 which resolved a design issue in Version 3.03 which required three bridging wires to link the 2.5 mm jack to the Transistor - doh!


Similar projects you might like

Programmable Pocket Power Supply with OLED Display

Project tutorial by Shahariar

  • 28 respects

IoT Pull-Up Bar

Project showcase by Mark Dreyband

  • 27 respects

4 Wire LCD Control with BL and Contrast Using Shift Register

Project showcase by Mike Kowalski

  • 11 respects

'Roger Bot' the Pet Rover

Project showcase by hannu_hell

  • 12 respects

Binary Wristwatch

Project showcase by thallia

  • 9 respects

Doggo Water Bowl Refill Monitor/Indicator - Part 1

Project tutorial by Heathen_Hacks-v2

  • 3 respects
Add projectSign up / Login