Arduino USB Camera Controller – Status Report 1

Cam.controller rev0

Cam.controller rev0

This is first iteration of camera controller layout inspired by Fernando Radi’s project. I designed a PCB containing Arduino Pro Mini, USB Host Mini, as well as other small parts necessary to complete the circuit. The whole thing is about the size of 16×2 LCD display and 1 inch high.

Next picture shows the controller with LCD removed. LCD connector is at the top left. Two resistors below the connector set the screen contrast. Slide switch next to LCD connector turns backlight on/off while power switch sits at the top right. USB Host Mini and Arduino Pro Mini are mounted underneath the LCD; encoder and “Back” button are placed to the right of LCD.

Project files include Eagle schematic and board layout, as well as a pdf of bottom side of PCB ready to be used in toner transfer process. EOSCamController code can be run on this board with no modifications. Some encoders have their A,B outputs swapped so if you see screen navigation moving backwards, swap encoder outputs. If you want to build this controller, refer to Eagle board layout file for part and jumper placement.

Cam.controller with LCD off

Cam.controller with LCD off

In the next iteration of the layout, I’m planning to move power switch to the left closer to backlight switch and use right-angle encoder and “Back” button. I will also try to find space for a LiPo charger. Stay tuned and please leave a comment if you have better layout in mind!


28 comments to Arduino USB Camera Controller – Status Report 1

  • karsten

    looks great, I’m curious how it evolves!!

  • Fernando

    Nice… I might end replacing mine… 😉

  • Peter L

    Hi Oleg:

    This is something I had been looking at doing myself when I first came across your project and contributed the PTP output for the Canon S5.

    If I may suggest the following for the PCB layout:

    – breakout access to control at least 2 servos (standard & high accuracy) for panoramic photography
    – breakout access to the I2C interface to allow user input with a WiiChuck

    Hope you find these suggestions valuable. Looking forward to the next iteration of the PCB!

    • There is plenty of space – which pins would you like to use for servos? Or, I can break out all vacant pins on Arduino Pro Mini, if this is easier.

      • Peter L

        I had considered a re-use of the servo section on the Adafruit shield, but was worried about directly connecting the servos to the Arduino – electrical noise, etc.

        Ultimately I envisioned re-use from the Renbotics Servo shield since an Arduino library was available and would probably require minimal modification to support only 1 cluster of 8 servo channels. The 4017 decade counter would be nice to isolate the actual control of the servo from a direct connection to the Arduino — although it does seem a little wasteful to not take advantage of 6 out of the 8 channels. I am certainly open to suggestions here.

        I already have working code to debounce all the inputs of the WiiChuck especially for compound button event detections (e.g press, release, extended hold, simultaneous event, etc). And, I am in the process of creating a library so that from a single WiiChuck, it is possible to control most of the commonly used functions of the camera.

        • Peter L

          Perhaps breaking out all of the pins is the best suggestion and would permit development of custom add-on boards like the one I described. Thanks!

  • Any idea when this shield would be available in the store?

  • karsten

    Access to the ftdi pins would be fine to allow a software change without disassembling the controller.

  • kengu

    I would like to see the MAX3421EE and ATMEGA328 in one design.The news design Including:LCD16x2,ATMEGA328,MAX3421EE,ROTARY ENCODER,TWO AND MORE CONTROL KEY,3.3V OR LiPRO(3.7)+CHARGE,permit development of custom add-on.

  • Nils

    Also a GPS would be nice. The GPS from Libellium ( ) seems to use only the TX (D1) and RX (D0) pins. Just the size of the code may be a problem, so an Atmel with more space will be needed. JK Devices have a small Breakout board ( ) maybe it is possible to use this one – or just build a complete new board with an bigger Atmel.. 😉

    • I have plans for USB GPS support. Actually, they all are serial devices internally connected to USB to serial converter. As far as memory, new shield works with 2560 out of the box.

      • Nils

        But the Arduino Mega is a big device, I haven’t found a board like an Arduino Pro Mini with a 2560. In fact the processor is also bigger than a 328, so I know it is hard to build an Arduino Mega Mini, maybe it’s almost impossible.

        Sparkfun have an Arduino Mega with a 1280, which is not really bigger than an Arduino Uno or 2009, but in fact bigger than a Mini…

        Do you think it is too complicated to have a single board with all components? The schematics and layouts should be available, so it shoud be possible to add the MAX3421e and maybe a GPS (or the GPS as an extension board.

        • Single board is not difficult to design, but hard to fabricate at home – I want this controller to be DIY-friendly. As far as extra devices, I’m planning to do code review and try to free some space to accommodate more functionality, like hub, usb-to-serial and possibly Bluetooth.

  • Nils


    a GPS like the one from Libellium ( ), which seems to just use Arduino pins D0 and D1, would be nice.

    Maybe an Atmel with a bigger EEPROM is needed… but I don’t know which Arduino might fit. There is a clone from JK Devices ( ) which looks interesting.

    Regards, Nils.

  • kengu

    Oleg: If I change the all pins of rotary encoder,Where do I need to change?Thanks.

  • kengu


    #define ENC_A 14
    #define ENC_B 15

    HELP .

  • kengu

    I am a newbie, please advise. The rotary encoder pins of your “Cam.controller”.

  • kengu

    There is also a question to ask, Canon camera USB communication is achieved through MAX3421EE。The USB of the VBUS pin output is 3.3V??

  • Hi Oleg,

    Today i finished reading several articles and was able to focus step my 40D 🙂

    Have you ever considered replacing the arduino mini with a bare 328p chip (w/ Bootloader) + Crystal, running at 3V3 / 8MHz ?

    Cheers, Jan

  • I did a similar project with your shield except that I combined it with a Bluetooth interface to an Android phone.

    I published the beta android App on the market yesterday.

    Feel free to try it and please do report any issues.

  • ManisB

    The code is now online, so is a demo vid! Please check it out! 🙂