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.
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 :)
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. :)

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 Andy Bowers 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-...
Season Two of the Trust Time Trial (T3) Contest has now begun. The fourth round is an accuracy round for multicopters, which requires contestants to fly a cube. The deadline is April 14th.133 members
51 members
314 members
4 members
1292 members
© 2013 Created by Chris Anderson.
Powered by

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