Ixus Remote Control Cable
The alternate CHDK firmware I am running on my Ixus 55 gives you the possibility to remote trigger the camera with a modified USB cable.
By attaching this cable to an Arduino board you can control your digital camera in all kinds of projects.
The aim
The camera should take pictures when the arduino "tells" it to do so. Since this is only a proof of concept right now, I will be using a button that is attached to the arduino as a trigger.
Basic layout
The button and the USB cable are wired up like this to the arduino:
The following code will make the arduino power the USB cable for 10ms when the button is pushed.
/*
*/
const int camPin = 13; // USB pin 1 connected to digital pin 13
const int buttonPin = 7; // vcc of button
static int pressed = 0; // variable to remember button state
int buttonState = 0; // initialize button state
void setup() {
pinMode(camPin, OUTPUT); // initialize camPin as output
pinMode(buttonPin, INPUT); // initialize buttonPin input
digitalWrite(buttonPin, HIGH); // set buttonPin to high
}
void loop()
{
buttonState = digitalRead(buttonPin);
if (buttonState == LOW && pressed == 0) { // as soon as the button is pressed
pressed = 1; // pressed state is set to "1".
// This way the following commands will only executed once,
// regardless how long the button is pressed.
digitalWrite(camPin, HIGH); // set camPin to high
delay(100); // wait for a 1/10 of a second
digitalWrite(camPin, LOW); // set the Cam off
}
if (pressed == 1 && buttonState == HIGH) { // reset pressed state, as soon as the button is released
pressed = 0;
}
}
The camera script
Now the camera has to take a photo as soon as the arduino powers up the USB port. This is archieved by activating the remote capabilities in the cameras CHDK menu at Main Menu > Miscellaneous Stuff > Remote Parameters > Enable Remote and loading this simple remote script.