DIY USB Mapping Camera Trigger for Canon P&S with CHDK

DIY USB Mapping Camera Trigger for Canon P&S with CHDK

This DIY USB trigger allows you to control a Canon Point and Shoot camera for performing aerial mapping missions.  This video shows you how to build a USB trigger cable that connects your RC receiver to your Canon P&S camera. With this set up you can utilize the remote trigger function in CHDK controlled by a switch on your RC transmitter.

Take individual pictures at specific locations or at set intervals to cover a large area with overlapping images that can be used to create orthorectified imagery and even Digital Surface Models (DSM).

The total cost of parts for this project is less than $20 and you can complete it in less than an hour. You’ll need an Eflight EFLA600, a USB cable, some electrical tape and heat shrink, and it’s best if you can solder the necessary connections.

 

9 Comments

  1. dshean

    Great stuff. I like the simplicity/speed of your CHDK scripts, and the fact that I can start/stop the intervalometer many times in flight.
    The only remaining functionality would be to power down the camera and retract the lens before landing. Have you come up with a solution for this?
    I’ve found the following:
    http://fpvlab.com/forums/showthread.php?11357-Scripting-Canon-SX230-for-Aerial-Surveys-with-CHDK-and-Arduino/
    http://www.otherhand.org/home-page/drones/a-remotely-actuated-intervalometer-for-aerial-mapping-using-canon-cameras/
    It would be great to accomplish this without additional hardware.
    Thanks for everything you’ve done with your site/videos.

  2. MegaFlare

    I’m looking into this now. Looks like they have a huge tutorial on how to setup CHDK that I’ve never seen on their website before.

    http://copter.ardupilot.com/wiki/common-chdk-camera-control-tutorial/

    They also have a link to an interesting drone mapper intervalometer script. This might be good for mapping with a plane as drone mapper has specific requirements for their image submissions so I would assume this is designed to meet those requirements.

    http://plane.ardupilot.com/wp-content/uploads/sites/3/2013/05/DM-Intervalometer.txt

    I’m just looking over it now but I’ll post back with what I find if you don’t take a look first.

    • geobduffy

      The drone mapper script is designed to run without a trigger. The necessary overlap for any method is controlled by the interval, altitude and ground speed in flight. The advantage of their script is that it does not require a USB trigger and that it shuts down the camera at the end. The disadvantage is that you have to calculate time from launch to start of mission and total number of pictures or duration of mission so that it takes images where you want it to and then shuts down afterwords. After running many hundreds of missions, I find this method impractical. I often update missions in flight do to shifting wind, deciding to extend a mission, testing failsafe or any number of other reasons.
      Without the ability to control the camera remotely you must land anytime your mission changes, which i find happens often enough. Maybe I’m just not that good 🙂
      Ideally I want to use my current remote trigger method in conjunction with APM distance trigger. Then all bases are covered.

  3. MegaFlare

    Hey B.

    On my DX7s I’ve already used up the 2 open AUX channels so I’m going to take off the camera gimbal attached to AUX2 and use it for the USB trigger. However, when I plug in the cable the camera goes into some sort of sleep mode. The same as when I plug the camera into my laptop to copy pictures out.

    It will not allow me to browse the menu or use any features. I’m sure I’ve got some of the setting wrong in CHDK and I need to revisit your post with FlightRiot scripts but wanted to ask if you’ve come across this issue before?

    • geobduffy

      You probably just need to enable remote trigger from the Remote Trigger Menu. Make sure Enable Remote is selected, then change Control Mode to Quick. There is an image showing the menu on the chdk page here: http://flightriot.com/remote-sensing/chdk/
      Let me know if that works, otherwise we’ll figure out what the issue is.

      • MegaFlare

        I think I’ve got it now B.

        I had some other settings on there and I was using the built in “interval” scripts. I added the FR Intervalometer scripts and set AUX2 to the f-mode switch. I connected the cable to channel 7 on the receiver and set channel 7 as camera trigger in mission planner (not sure if I needed that step). Plugged it all in, pressed the trigger button to start the script and flipped the switch……….battery dead. But it did snap one shot before shutting down so I’ll consider that a success.

        Thanks for your help. I’ll need to see how quickly it can fire off the shots. From what I’ve seen there is a delay much longer than the 1 or 2 seconds I’ve been playing with. However, I believe this may be due to the shooting conditions I’ve been using which usually trigger the flash and probably delay it even further.

        I’d be interested to know what camera settings you shoot with when you are outdoors since we have such similar cameras.

        • geobduffy

          Awesome! Sounds like you have it. you don’t need to set APM out to channel 7 for this to work but that can be used with the new “trigger by distance” function in APM, which I have not yet tried. If you run a servo jumper (like with all other channels running to APM) form RC ch 7 to APM input ch 7 and plug the camera USB trigger into APM ch7 out, you should be able to trigger the camera with the RC Tx or APM auto functions. I have to get out and test this but it should work unless assigning the ch7 output in APM restricts inputs from the RC Rx…
          Definitely let us know if you try it first.

  4. MegaFlare

    Thanks for this tutorial B….

    I just got my Eflight EFLA600 in the mail today so I am looking forward to putting this into practice.

    I was wandering if you could elaborate on where you connect on the RC receiver. I’m using a Spektrum Dx7s right now. How do you have it setup?

    • geobduffy

      The idea is to pick any channel on your receiver that is not in use and plug the DIY trigger in. Then, on your transmitter, configure one of your switches to that channel. On the T9X for example, I’ve used the gear switch, several different dials, and lately I’ve been using the throttle cut switch (not while if throttle cut is enabled obviously). I’ve never used a Dx7 so I can’t provide specific steps on that Tx.

Submit a Comment

Pin It on Pinterest

Let's stay in touch

Would you like to sign up to receive an occassional newsletter from us.  We'd love to let you know about new and wonderful things happening on the site.  Your details are never shared or sold and we hate spam as much as you do. 

You have Successfully Subscribed!