Archived:Open Camera Control Board

Note

The Open CCB is not yet commercially available - we are actively seeking manufacturers. (even though this topic is archived!) If you want to start making and selling this board please contact CraigElder@uniserve.

The Open Camera Control Board (OpenCCB) is a camera remote control interface for aerial photography. It has many features, including: FTDI USB/UART adapter, USB HOST, Digital IO, Analog IO, Optocoupled IO, etc.

Overview

../_images/Persp_sml.jpg

The main camera control protocol used is known as PTP (Picture Transfer Protocol), which was originally standardized as PIMA 15740:2000, ISO 15740:2005(V1.0), and ISO 15740:2008(V1.1).

The PTP has been supported by almost all cameras since 2005, but often in a limited fashion. Only few cameras have the “PTP Remote Control” feature. Canon, for example, removed the remote control feature from their compact line (PowerShot models) in the last PS SDK in 2009 (PS-ReCSDK 1.1.0e).

Fortunately the PTP hacking extension in the CHDK project allows us to extend the PTP control to newer, smaller and lighter Canon PowerShot models.

The CHDK PTP interface is described below:

../_images/Diagram_MAVPTP.jpg

Port Mapping

../_images/Ports.jpg
Telemetry UART (Auto Pilot)
1 2 3 4 5 6
5V TX RX CTS RTS GND
I2C (3V3)
1 2 3 4
GND SCA SCL 3V3
Digital IO
1 2 3 4
GND D2 D8 D7
Analog IO
1 2 3 4
GND A1 A2 A3
Optocoupled IO (LANC-C Control)
1 2 3
V+ LAN-C(5-9V) LAN-C Line GND LAN-C
Optocoupled IO (Contact Closure Triggering)
1 2 3
NC Shutter Ground

USB Connector Types

../_images/USB_plugs.jpg

Computer Wiring - Table Tests and Firmware Uploading

../_images/TableTestWiring.jpg

Flight Control Wiring - Aerial Photography

../_images/BasicWiring.jpg

The firmware can be found here on GitHub.

There is also a zip file of the repository.

After getting the source code, just follow the steps below:

Step 1: Set your Arduino SketchBook path to the main folder

Step 2: Select the sketch “ArduCAMPTP_CHDK_APM26”

Note

If you want the camera showing lenses when connected, you need to change the file __defines.h by setting AUTOSTART to 1, like here:

#define AUTOSTART 1 //Expose lens on start (Start on Record Mode)

Step 3: Compile and upload it to CCB board

Step 4: Copy the file geoshot.lua to camera’s SD card (folder: /CHDK/SCRIPTS/)

Step 5: While the Flight Control board is connected to MissionPlanner, do set the shutter just like here:

../_images/Shutter_Setup.jpg

Step 6: Test shooting

../_images/maps.jpg

After that… any other command should work… because it acts just like a servo.

Contact Closure - Example: Canon XTi

../_images/ContactClosureWiring.jpg