Introduction: How to Create an Arduino Remote Shutter

In this tutorial you will learn how to create and control an Arduino remote shutter for your favorite camera.
This tutorial will show you how to program the arduino to focus the camera or take pictures automatically.


What you need :
A camera : FZ200 for example
A cheap remote shutter : I bought this one (choose the right one for you camera !)
An Arduino : I use the Nano v3.0
A computer (with Linux installed for the last optional part)
A soldering iron
Three small eletrical wires (~ 5 cm each)
Two optocouplers : I use 4N35
Two leds, two resistances (~100 Ω)

A BreadBoard and jump wires are recommended.

Steps :
Modify the original remote shutter device
Make the electrical circuit and program the Arduino

Step 1: Modify the Original Remote Shutter Device

First, check that the remote shutter works on your camera. Take apart the small device by removing the screws and opening it.

As you can see the remote shutter is composed of resistances and a simple button, The camera measure the resistance between two wires. To focus / shoot you just have to set the right resistance.

When you "middle press" the camera focuses.
When you press the button the camera shoot a picture.

Connect the remote shutter to your camera and play with the button. Then take a small electrical wire and shortcut the button. There are only 3 of the 4 pins used.

What you need to do is solder 3 wires to these pins and pull them out of the device.
I removed the additional jack wich was useless for me. It allowed me to put the 3 wires in the hole !

Before assembling the remote shutter TEST that what you've done is working.

Step 2: Arduino

Copy the circuit design, then plug the Arduino to your computer and start the Arduino software, compile and transfer this code to your Arduino :

int time    = 100;
int incomingByte  = 0;
const int opto_focus = 2;
const int opto_shoot = 3;

void setup()
{
Serial.begin(115200); // Baud-rate
pinMode(opto_focus, OUTPUT);
pinMode(opto_shoot, OUTPUT);
}

void loop()
{
// Send data only when you receive data
if (Serial.available() > 0) {
  // Reading incoming bytes :
  incomingByte = Serial.read();

  switch (incomingByte) {
  case 'f':
   digitalWrite(opto_focus, HIGH); // Focus..
   delay(300);
   digitalWrite(opto_focus, LOW);
  break;

  case 's':
   digitalWrite(opto_shoot, HIGH); // Shoot !!
   delay(100*20);// Number of shoots
   digitalWrite(opto_shoot, LOW);
   delay(1);

   for (int i = 0; i < 36; i++) { // Little trick to empty the buffer, not nice :/
    Serial.read();
   }
  break;

  default: // Usefull for burst mode, this variables sets the time the shoot will last
  time = incomingByte*100;
  }
}
}



When it is done open a Serial Terminal in the Arduino software, configure the baud-rate to 115200 and send "s" or "f" to the Arduino. The LEDs should be briefly blinking.

Now connect the black green and blue wires to your shutter devices and by sending "s" or "f" you camera should shoot/focus. Thanks to the Arduino you can send shoot commands every 5 secs; or connect a presence detector and shoot when something moves ! In fact you can do whatever you brain can imagine.