Building the YaNis EOS Controller




The YaNis EOS controller is a device that allows you to wirelessly control your Canon DSLR from your Android phone.

What's really exciting here is that the Android interface allows you to change most of the camera's settings (like Shutter Speed, Aperture Size, ISO, White Balance, Focus Position and others) from more than 20 meters away! 

The controller is based on the Arduino platform and some commonly available parts. And as I will show you here, it's also very easy to assemble. 

 First, the list of things you will need:

1. An Arduino Pro Mini Board (3.3V version)

2. A USB Host Shield (Arduino Mini version) 

3. A Bluetooth Module. (BlueSMIRF , RN-42 , or cheap ebay ones) [Anything SPP compatible will do]

4. A power source for the Arduino board 

As you might have guessed, the 3 modules listed above will be simply stacked onto each other to obtain the nice PCB Sandwich that I decided to call "YaNis EOS Controller". Impressive. 

When you have completed all the steps in this instructable, you will basically have a hardware interface that allows your camera to accept commands from your android phone via bluetooth. Now, to make your phone issue those specific commands, you will need the YaNis EOS app that I created. It's free, open source and available on the Android Market.  

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Soldering the Arduino and USB Shield

Step 1: Insert the pin headers on the USB Host Shield's two sides. Solder them to the USB Shield PCB.  

Step 2: Insert the Arduino Pro Mini in those headers. Make sure you respect the orientation shown in the picture for this step. 

Step 3: Solder the Arduino Board to the USB Shield's pins you just installed in step 1. 

Step 4: (Optional) Cut off the pins leaving only the 3 pins shown in the picture. 

If you have followed those steps correctly, you should get something similar to picture 2 and 3. 

Step 2: Programming the Device

You will need to upload the firmware to the device BEFORE  connecting the Bluetooth Module. 

The firmware(or Arduino sketch) can be downloaded here:

(If there are several files, download the most recent one)

If you google around, you will see that there are several ways to program an Arduino Pro Mini board.  Here I used an Arduino UNO board as a programmer.

Step 1: First, remove the ATMega Chip from the Arduino Uno. 

Step 2: Connect the UNO and the Mini as described below:

(Uno -> Mini) 

RX -> RX
TX -> TX
+3.3v -> VCC
Reset -> GRN (Reset/DTR)

Step 3: Open up the Arduino IDE. Go to Tools>Board>Arduino Pro Mini (3.3v/8Mhz / 328) 

(See picture 2) 

Step 4: In the Arduino IDE, open the sketch you downloaded in the first paragraph above. Click upload. 

If you get errors here, check your connections between the Arduino UNO and Arduino Mini. Make sure you did Step 3 correctly. 

Step 5: At this point, you have uploaded the firmware successfully,  adn you can now proceed to connect the Bluetooth module to the Arduino Mini/USB Host contraption. 

Step 3: Connecting the Bluetooth Module

After you have uploaded the firmware to the Arduino Mini, you are now free to attach the bluetooth module.

But FIRST , you need to make sure that the bluetooth module is configured at 9600 Baud . Consult the datasheet of the module for more info on how to do this. The steps are usually simple, but they vary greatly across modules so I can't cover them all here. 

I now assume that your module is configured at 9600 Baud

Step 1: First solder the wires that provide power to the BT module. (picture 5)

Step 2: Solder the Rx pin on the module to the Tx pin of the Arduino. Likewise, the Tx on the module goes to the Rx pin of the Arduino. 

(picture 6)

Step 3: You have now an essentially  complete YaNis EOS controller. We just need to connect the power supply then we're good to go. 

Step 4: Connecting the Power Supply.

The pictures will provide a better description of this step. Make sure you respect the polarity or you might end up frying up the whole thing. 

The power supply can be anything between 3.5v and 8v. The arduino can theoretically accept up to 12v, but I am suspicious of the thermal dissipation rating of the regulator that is on the Pro Mini. Try at your own risk. 

Once you are done, connect turn the controller on, connect to your camera and then turn on your camera. (The sequence is important here)

After that, you can pair the controller with you android phone/tablet and start using your new remote shooting skills.

Feel free to contact me for questions. But try to do a google search about the issue first. 

manis404 @
quadslash @ 


- I used a 3.7v LiPo 400mAh battery from sparkfun here. This battery provides is good for about 8 hours of use. 

- I replaced that annoying connector that comes with the battery with a standard 'jumper-wire' connector. 

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    17 Discussions


    1 year ago

    I'd like to build this, but the Google repository does not show the code. Where can we get it? Thanks.


    1 year ago


    Really cool project!

    I'm trying to build a DIY timelapse slider and want to use your idea to controll the camera aswell as the slider :) Can you say what values exactly should I use for shutter speed and aperture?

    Eos.SetProperty(EOS_DPC_ShutterSpeed, ???);

    Eos.SetProperty(EOS_DPC_Aperture, ???);


    3 years ago

    Also when i download app onto my phone it does not open and says its not responding. Ive tried with a S7 and a nexus 6P

    3 replies

    Reply 3 years ago

    It has been tested on android 2.3 and earlier. So it's unlikely to work on anything released after 2012


    Reply 3 years ago

    Oh ok thanks. Also i am having trouble compiling the arduino sketch. Im using arduino 1.6.5 and i downloaded the two libraries (PTP and USB Host). When i go to compile i get error messages as in the image below.

    Thanks alot for your help

    Error Mesages 1.png

    Reply 3 years ago

    + Sorry if im asking to much but im a beginner programmer and any help would be appreciated.



    3 years ago

    Hey, Instead of using the arduino pro mini 328 + a usb shield can you use the arduino 328 (essentially the same board) but this one has a integrated mini usb? The one im looking at is this:

    What do you think? Im in australia and the usb host shield you provide is $20usd + another 20 usd for shipping to here.

    Please help me as soon as possible as this is urgent.


    1 reply

    Reply 3 years ago

    I know the shipping is outrageous, but you'll really need the shield from the original source. Another way is to make it yourself - it's open source and not very complicated to build.


    3 years ago


    nice project

    can use other model bluetooth ?

    hc-08 or hc-05 or etc ?

    john earlG

    4 years ago on Introduction

    nice. btw, is it possible to send/view the photo from your camera to the android device as soon as you take a pic?


    4 years ago on Introduction

    My bad, the AppInventor project works in AppInventor 2. You need to change the file from .zip to .aia and then you can import it.


    4 years ago on Introduction

    Thanks very much for this. One thing though: AppInventor was a terrible choice for this. I mean it's already not compatible with the new version (v2) and the code can't be converted in java. Basically that tutorial is trapped forever until someone finds a way to convert the old source to java or AppInventor 2. I will try though, and let you know if I succeed.


    Reply 5 years ago on Introduction

    These are available from a ton of other sellers. Just buy the one which is cheapest.