ArduCSR (Universal Remote Arduino IR Camera Shutter Release System)

Sorry for the video quality, but the slr was tied up :)

Finally finished the universal IR camera shutter release device.

The requirements were:

1. Remotely trigger the camera to take 3 photos in a row using a switch on the transmitter.

2. A solution that doesnt involve a physical connection to the camera, as my shutter release port on my Nikon is taken up with a GPS geotagger cable.

3. A universal trigger that will work with most cameras that have IR shutter releases.

What I put together:

An Arduino Uno based MCU that has specific libraries by Sebastian Setz for IR communication for cameras.

A super simple code. Involving nothing more than a shutterNow(); to trigger the shutter and delays for inbetween shots.

One of the best things is that this system is almost universal, it works with the following:

Canon

Olympus

Pentax

Minolta

Sony

Now getting the arduino to take pictures via an IR connection to the camera is easy.

The next part was triggering the arduino using the RC Transmitter. No easy feat unless you get a RelaySwitch from DIYDrones. It converts the signal from the RX to a simple on off relay.

Details are here: https://store.diydrones.com/ServoSwitch_V10_p/br-0007-01.htm

If you own an APM1 you could set up channel 7 to switch the relay then just substitute the relayswitch for that.

The reason I havent used my APM1 is cause I plan on using an APM2 and they no longer have a relay on-board.

Below is my code:

Each time I flick a switch or push a button on the tx the camera takes 3 photos. Job done. AF is integral.

#include <multiCameraIrControl.h>
 
const int buttonPin = 2;
int buttonState = 0;

Nikon D5000(9);
 
void setup(){
  pinMode(13, OUTPUT);
  pinMode(buttonPin, INPUT);
}
 
void loop(){
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {     
    // turn LED on:    
      
  digitalWrite(13, HIGH);
  D5000.shutterNow();
  delay(800);
  D5000.shutterNow();
  delay(800);
  D5000.shutterNow();
  delay(800);
  digitalWrite(13, LOW);
  delay(1000);
  }
  else {
    // turn LED off:
    digitalWrite(13, LOW);
  }
 }

Below is the library you need:

Arduino multiCameraControl Library

http://sebastian.setz.name/arduino/my-libraries/multi-Camera-IR-Con...

If you want to use this on an aircraft or multirotor, just use the arduino pro mini instead of the uno.

The Mini is 35mm x 18mm, small enough to swallow... Also you can power the board via the RX, so no extra wires.

Just a small box plugged into your RX and facing your camera.

Hopefully this helps someone like it helped me.

G:)

UPDATE

Theres no need for the relay switch! Thanks to Greg for the idea and code!

Just plug the signal cable from the RX directly into pin 2 of the arduino.

#include <multiCameraIrControl.h>
 
const int buttonPin = 2;
unsigned long buttonState;

Nikon D5000(9);
 
void setup(){
  pinMode(13, OUTPUT);
  pinMode(buttonPin, INPUT);
   Serial.begin(9600);
}
 
void loop(){
  buttonState = pulseIn(buttonPin, HIGH);
  Serial.println(buttonState);
if(buttonState < 1500){
 
    // turn LED on and take 3 photos:    
      
  digitalWrite(13, HIGH);
  D5000.shutterNow();
  delay(800);
  D5000.shutterNow();
  delay(800);
  D5000.shutterNow();
  delay(800);
  digitalWrite(13, LOW);
  delay(1000);
  }
  else {
    // turn LED off:
    digitalWrite(13, LOW);
    
  } 
}


Project completed using Arduino Pro Mini

A little bit of heat shrink around the board and we're in business :)


Views: 10059

Comment by Greg Fletcher on January 26, 2012 at 9:08am

Interesting, I will have to look at those libraries tonight. I will come up with some code so the arduino pro will take input directly from you reciever, no need for a relay. In fact the entire thing could be incoporated into the Arducopter code and you wouldn't even need the pro mini. When I gel it working (RC input for the mini)I will post a zip file here.

Comment by Gareth Rens on January 26, 2012 at 9:25am

Hey Greg! Great idea! My coding level at the moment isnt good enought to do the PPM conversions, but im getting there. Iv always been able to hack something together that works. Might not be the most ellegant, but its a start for other people to improve on. :)


Distributor
Comment by UnmannedTechShop.co.uk on January 26, 2012 at 10:54am

Thats a great idea, thanks for sharing!

Comment by Greg Fletcher on January 26, 2012 at 9:44pm

Gareth, I forgot, arduino has a function for pilse inputs. You can read about it here.

Replace the first two lines of your loop() like I have shown below. Just hook up the gnd and signal wire to the gnd and input pin on the arduino.

void loop(){


   if(pulsin(buttonPin,HIGH) > 1500){   // 1500 ms is 50 % pulse
    // turn LED on:   

Comment by Gareth Rens on January 26, 2012 at 11:00pm

I was actually doing some searching and found the same last night :)

Comment by Gareth Rens on January 26, 2012 at 11:06pm

But thanks for the help :)

Comment by Gareth Rens on January 27, 2012 at 4:41am

Job done :)

Comment by new to drones on January 27, 2012 at 6:14am

Do any of you have a suggestion for a camera to use this with (preferably kind small)? I have been looking for a shutter release system just like this, but don't know what requirements I need to look for in the camera.

 

Comment by Chad P on January 27, 2012 at 7:53am

If you want it even smaller and lighter take a look at this video about putting arduino code onto a single small chip.  super small, super light, super cheap.  http://www.youtube.com/watch?v=30rPt802n1k&list=FL0713sk_gctNiI...

Comment by Melih Karakelle on January 27, 2012 at 9:36am

or you can also use this shield for programming AtTiny ICs.
http://www.flytron.com/open-source-hardwares/162-tinyshield-all-in-... 

Comment

You need to be a member of DIY Drones to add comments!

Join DIY Drones

Groups

Season Two of the Trust Time Trial (T3) Contest 
A list of all T3 contests is here. The current round, the Vertical Horizontal one, is here

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service