Archive for the ‘Arduino’ Category

7 hours of engineering pit from New Hampshire GSR FIRST Robotics competition compressed to 83 seconds

Saturday, March 2nd, 2013

As soon as they opened the door at 8am this morning, I put the camera, tripod + arduino hack at the very top of the seating in the Verizon Wireless Center pointing down at the pit where the robots are prepped for competition.


*BEST* GSR (NH) FIRST Robotics time lapse in the pit (10fps)


GSR (NH) FIRST Robotics time lapse in the pit (5fps)


GSR (NH) FIRST Robotics time lapse in the pit (20fps)

After nearly seven hours (the length my camera’s battery lasted taking photos every 30 seconds) there were 835 photos which were converted to an AVI using:

mencoder -nosound -ovc lavc -lavcopts vcodec=mjpeg -o timelapse-10fps.avi -mf type=jpeg:fps=10 mf://*.JPG

and then converted to a much smaller M4V file using ghb aka the very handy Handbrake tool.

Sony Alpha-100 DSLR shutter control using an arduino and reed switches

Saturday, February 9th, 2013

This is a follow up to my “time lapse photography using an arduino to drive a Sony Alpha-100 DSLR” post — basically I fixed it to ‘do it right’ instead of it being a horrible hack.

Here is the improved circuit diagram:

BetterCamera_bb

This uses two Reed Switches from Radio Shack for about $3 each — sure I could have used other types of switches or a transitor, but they use magnetism which is cooler ;-)

  1. Buy a cheap (~$7.00) shutter release cord to sacrifice to the project.
  2. Carefully cut and strip the wires from release cord. Shorting the green and blue wires causes the camera to focus. Shorting the green, blue and red wires after focusing causes the camera to shoot.
  3. Remember that my soldering days are long ago (hey, it was only an EE minor) and have one of the kids at our FIRST Robotics do it for me. Here is the result. Note that blue->white.

    Shutter release cord mapping

  4. Then connected the wires from the shutter release cord to pins as follows: (see the above Fritzing image)
    Green -> First Reed Switch
    Red -> Second Reed Switch
    Blue/White -> shared line with the other side of the switches (not this isn’t tied to ground or anything else)

  5. Now the improved code: I call it BetterCamera.ino


    /*
    * A better camera control for a Sony A-100 DSLR
    * marc@nozell.com
    */

    // Pin 13 has an LED connected on most Arduino boards.
    // give it a name:
    int led = 13;
    int relayA = 2;
    int relayB = 3;

    // the setup routine runs once when you press reset:
    void setup() {

    Serial.begin(9600);

    if (Serial.available() )
    Serial.println("-- Starting ---");

    // initialize the digital pin as an output.
    pinMode(led, OUTPUT);
    pinMode(relayA, OUTPUT);
    pinMode(relayB, OUTPUT);

    }

    // the loop routine runs over and over again forever:
    void loop() {

    Serial.println("-- Focusing ---");

    // first focus -- short white & green

    digitalWrite(relayA, HIGH);
    delay(2000); // 2 sec
    digitalWrite(relayA, LOW);
    delay(1000); // 1 sec

    Serial.println("-- Take Photo ---");

    // then take a photo -- short white, green & red

    digitalWrite(relayA, HIGH);
    digitalWrite(relayB, HIGH);
    delay(1000); // 1 sec
    digitalWrite(relayA, LOW);
    digitalWrite(relayB, LOW);

    Serial.println("-- Sleep for 30s ---");
    delay(23000); // 2 + 1 + 1 + 3 + 23

    for (int i = 0; i < 3; i++) { // 3seconds
    digitalWrite(led, HIGH);
    delay(500);
    digitalWrite(led, LOW);
    delay(500);
    Serial.print(".");
    }
    Serial.println("!");
    }

  6. If you connect the release to the camera while the camera is on, even if here is no power to the arduino, it will take a couple photos. That is the kink. Just connect it up with the camera off and it will be fine.
  7. Consider setting the photo size to ‘standard’ — it saves a lot on disk space.
  8. Now find something interesting to point your camera at and come back later. In my case it was our backyard the day after the Nemo Blizzard of 2013 (we got all the snow overnight, so it isn’t riveting content).
  9. Download all the photos to a directory and use this linux command to convert the JPG images to an AVI file.

    mencoder -nosound -ovc lavc -lavcopts vcodec=mjpeg -o timelapse-30fps.avi -mf type=jpeg:fps=30 mf://*.JPG
  10. Before uploading to youtube, I ran it through Handbrake to knock down the size from 260M to less than 70MB.

time lapse photography using an arduino to drive a Sony Alpha-100 DSLR

Friday, December 28th, 2012

Finally I got around to working out most of the kinks of having the an arduino control the shutter release of a Sony Alpha-100 DSLR camera.

  1. Buy a cheap (~$7.00) shutter release cord to sacrifice to the project.
  2. Carefully cut and strip the wires from release cord. Shorting the green and blue wires causes the camera to focus. Shorting the green, blue and red wires after focusing causes the camera to shoot.
  3. Remember that my soldering days are long ago (hey, was only an EE minor) and have one of the kids at our FIRST Robotics do it for me. Here is the result. Note that blue->white. The blue wires I have all seem to be a bit flakey.

    Shutter release cord mapping

  4. Find someone who has done something similar: http://ujwal.shrestha.me/arduino-intervalometer-for-sony-dslr/ and leverage their code. I’m not sure that is the right solution, but it worked for me. Something with MOSFETs I think, but that was years ago…

  5. Then connected the wires from the shutter release cord to pins as follows:
    Green -> Ground
    Red -> Digital pin 8
    Blue/White -> Digital pin 9

    Ardiuno pin mapping

  6. Now the code. I named it aifs30.ino:

    /*

    Heavily based on:

    http://ujwal.shrestha.me/arduino-intervalometer-for-sony-dslr/

    For complete writeup, see http://nozell.com/blog/

    The shutter release has 3 wires: green, red, blue which I had soldered
    to green, red and white (my blue wires are flakey)

    green - ground
    red - digital 8
    blue/white - digital 9

    green + blue/white => focus
    green + blue/white + red => take photo

    */

    void setup(void)
    {
    Serial.begin(115200);
    }

    void loop() {

    if (Serial.available() )
    Serial.println("VVVVVVVVVV");

    pinMode(8,OUTPUT);
    delay(100);
    pinMode(9,OUTPUT);

    if (Serial.available() )
    Serial.println("Sleep for 1/2 seconds");

    delay(500);

    if (Serial.available() )
    Serial.println("wake up and take photo ");

    pinMode(8,INPUT);

    delay(100);

    pinMode(9,INPUT);

    if (Serial.available() )
    Serial.println("ZZZZZZZZ Sleep for 30s");

    delay(10000);
    delay(10000);
    delay(10000);

    if (Serial.available() )
    Serial.println("^^^^^^^^^^");
    }

  7. If you connect the release to the camera while the camera is on, even if here is no power to the arduino, it will take a couple photos. That is the kink. Just connect it up with the camera off and it will be fine.
  8. Consider setting the photo size to ‘standard’ — it saves a lot on disk space.
  9. Now find something interesting to point your camera at and come back later. In my case it was our backyard chickens.
  10. Download all the photos to a directory and use this linux command to convert the JPG images to an AVI file.

    mencoder -nosound -ovc lavc -lavcopts vcodec=mjpeg -o timelapse-10fps.avi -mf type=jpeg:fps=10 mf://*.JPG
  11. upload to youtube and enjoy the results