In this article I’ll show how to build Wireless EOS Controller designed by Manishi Barosee. I’m building it for my Canons and if I like it, I’ll see if it’s possible to modify it for other camera systems. My controller is built around full-size USB Host Shieldinstead of Mini which Manishi used – I’m going to do some debuggung and need space to connect probes. Also, full-size shield is much easier to work with.
The design of Yanis is simple yet elegant. It consists of Arduino board, USB Host Shield and serial Bluetooth module. An Arduino sketch reads the serial port, generates camera control commands and sends them to the camera over USB. The Android application acts as a UI for the controller and sends control data over Bluetooth. Here is very basic schematic drawing of Arduino part of the controller showing necessary connections. USB Host connections are described in hardware manual and Bluetooth module connections are shown in detail below.
I’d like to start with radio link. The Bluetooth module used in this build is RN-42 from Roving networks. It is 3.3V device and its pins are not specified as 5V tolerant which means that Tx pin of standard 5V Arduino can’t be connected directly to Rx pin of [my] RN-42. Fortunately, the 5V to 3.3V level shifter on USB Host shield has 2 extra gates and I will be using one of them to “condition” the Tx. To do this, I need to cut ground trace going to pin 9 of D6 (marked ‘HCT’ on the PCB), connect it to Arduino pin 1 and then connect pin 8 of D6 to Rx of RN-42.
Picture on the left shows part of USB Host Shield PCB with light blue cross indicating the trace which needs to be cut. Care must be taken while cutting it as the rest of the pins on this side of IC must be left connected to the ground by horizontal trace and a via. Picture on the right shows pin 9 connected to Arduino Tx pin.
Next picture shows how I mounted the Bluetooth module. A piece of solid wire (a cut off resistor pin) is soldered to pin 8 of U6 and Rx pin of RN-42. It is pretty solid, however, if more secure attachment is desired, double-sided scotch tape can be placed between Bluetooth module and USB Host Shield PCB.
Once Bluetooth module is mounted, finishing the circuit is easy. As can be seen in the picture below, a wire is run from Rx pin of Arduino to Tx pin of RN-42. Also, 3.3V and ground are taken from Arduino to power Bluetooth module. Lastly, pin 4 of RN-42 is pulled up in order to force its serial port to initialize at 9600 baud at power-up. It is worth noting that bootloader won’t work when Bluetooth is connected to serial port – before loading a sketch USB Host Shield must be pulled off of Arduino.
Once circuit assembly is done it’s a good idea to test the radio once again using the same loopback idea I described in theprevious post. At this time, the loopback will be provided in software. The following sketch sets serial port to 9600 baud and then reads symbols from the port and sends them back. The sketch can be copy/pasted from this page into Arduino IDE window. The test procedure is exactly the same as hardware loopback – run BlueTerm, connect to the Bluetooth module and start typing.
/* a loopback program - reads serial port and sends data back */ void setup() { Serial.begin(9600); } void loop() { while( Serial.available()) { uint8_t tmpbyte = Serial.read(); Serial.write( tmpbyte ); } }
When radio functionality is confirmed, it’s time to load software into Arduino and Android. Links to the code are on the author’s page mentioned in the beginning of this post. I also made a variant of Arduino sketch compatible with current Android application – it is meant to be compiled with current revision of USB Host/PTP code but otherwise identical to the original one. The sketch can be downloaded from gitHub.
As I said in the beginning, I’m planning on expanding this controller to provide other functions an support other camera systems. In the meantime, build this controller, try it and let me know what you think.
Oleg.
Related posts:
- Building Google ADK hardware from standard components
- Building PL2303 USB to Serial converter from old data cable
- Android ADK terminal emulator for Arduino
- Google Open Accessory Interface for USB Host Shield Library 2.0 released
- Communicating to GPS Receiver using USB Host Shield
- Using HID device for RC control
- Andriod ADK-compatible USB Host Library release.
- RC car controlled by Wii Remote on Arduino
- Controlling Canon Powershot cameras with Arduino
- PTPDevinfo in 16K



