Thursday, August 25, 2011

YaNis Android Wireless EOS Controller

Feel free to contact me if you need a customized variation of this system for UAV/MAV applications.
Since 2011, I've supplied several companies who needed reliable control over their cameras mid-flight.

UPDATE 18/09/11: 
Project Instructable published!


This article is about a wireless Canon EOS controller that I was planning to build a few weeks ago when I saw Oleg Mazurov's PTP libraries for Arduino.

Basically, the controller accepts commands over Bluetooth from an Android device to offer full manual control over most of the camera's settings.

Manual control over:
  • Aperture
  • Shutter Speed
  • ISO
  • White Balance
  • Focus Position
  • Live View STATUS
  • Capture
  • Intervalometer/Timer
Upcoming Features
  • Video mode
  • Rack Focusing
  • HDR Bracketing
  • Bracketed intervalometer
  • Arduino Side Battery life optimizations (about 80% improvement expected)
  • Multiple camera control
  • 'Script' mode
The set of command the device accepts in order to issue relevant PTP commands will be reffered to as the "Manis Command Set", MCS.

The app is available for free on the android market as:

This is an Open Source project - I plan to release the app's source code as soon as it exits beta status.
While I will write something more in-depth in the coming days, here is a quick build instructions of the hardware:

Things you will need:

-An Arduino Board. (I used the Pro Mini 3.3v from Sparkfun)
-A USB Host Shield from here.
-An SPP compatible bluetooth module. (eg Sparkfun RN42, BlueSMIRF)
-(optional) A portable power source.

A LiPo battery can be useful. 1000mAh or more is recommended.

The Arduino sketch and required libraries is available at:

The Arduino software part is heavily based on Oleg Maruzov's excellent PTP/USB Libraries.

Current hardware revision has been tested to work successfully with a Canon 1000D. Should work equally well with 450D, 400D, 500D, etc. The whole Canon EOS range is expected to be supported at some point.

Version 2.0 (Version 2.1 uses an ebay BT module rather than the RN42)

Version 2.1
The pictures should have given you a pretty good idea how the listed components fit together.
If not, check out the instructable


2. Set the Bluetooth module to operate at 9600Baud. (else it won't work unless you alter the code). 9600 Baud is perfectly appropriate for this circuit. I don't recommend to move to higher baud rates.

3. Youtube Demo is being upload as I am typing this.

Feel free to report issues on the google code project page.





In the document below, you will find what values are sent via Bluetooth: