The design that I eventually implemented has a number of advanced features:
- 2 joysticks provide continuously-variable speed lens control. Moving the right stick forward and back controls synchronized zoom and focus, and moving the left stick side to side controls just focus. The implementation of speed control also helps keep the servo noise down to acceptable levels.
- There are 6 programmable "goto" zoom/focus settings that can be programmed on the fly from the Wii Classic, and that will move the zoom and focus to the desired position just by pushing a button (left shoulder for widest zoom, right shoulder for most zoom, and a, b, x and y for any zoom/focus position).
- The maximum lens movement settings can also be programmed on the fly to ensure that the servos don't try to rotate beyond the limits of the lens's zoom and focus positions.
- D-pad provides single degree movements of zoom (up and down pad) and focus (left and right pad) to make precise adjustments for critical focus/zoom.
Here's a demonstration of how the synchronized zoom - focus works on my GH2 with a Nikon 28 - 85mm zoom lens:
In this instructable I'll cover the basics of how to build your own version of this controller, including the Arduino code and instructions for mounting the servos to a rail-based camera rig. I'll mention how I built my rig, but since I'm not really happy with it, I won't go into detailed steps on that and will leave it to you to figure out your own solution based on the pictures of my rig and some notes about how I made it.
This was my first attempt at building something with Arduino, though I've had some programming experience so it wasn't too difficult for me to learn the basics of Arduino code. However, if you want to tackle this project and you haven't already gained familiarity with setting up and programming an Arduino, I recommend that you go through the tutorials on the Arduino site, especially those for Servos. http://arduino.cc/en/Tutorial/HomePage
Remove these ads by
Signing UpStep 1: Getting Started: Tools and Materials
Here is a list of the major supplies you'll need to complete this project, but please go through the whole instructable before buying anything so that you'll understand what to purchase in order to fit your own needs.
- Arduino or Arduino clone (I used a Seeeduino because it was a little cheaper than the Arduiino and provides the same functionality).
- Wii Classic Controller. I bought mine from eBay for around $10 shipped.
- Wiichuck Adapter (a little circuit board that plugs into your Wii Classic so you don't have to cut the cable). I got this from FunGizmos for $4: http://store.fungizmos.com/items/212
- 2 standard sized hobby servos with nylon gears and ball bearings. The nylon gears are quieter and the ball bearings provide better support for the shaft when handling the load of stiffer zoom lenses. I bought some surplus servos from a local RC store for $5 each, but am replacing them with 360 degree digital servos that should be even quieter and more accurate, and those cost me $20 each from eBay.
- 2 lens gears to mount on your lens's zoom and focus rings. I used the flexible ones that I found on eBay for $10 each, and made my own spacer rings to provide better resolution and a bit more mechanical advantage for the servos. You can also spend about twice as much and get lens gear rings that have built-in spacers, and these are also available on eBay. just search for "lens gear follow focus".
- 2 Drive gears to mount on the servos to drive the lens gears. These need to be 32p or mod .8 gear pitch (which is the standard pitch for lens gears). I fashioned my own drive gears by fitting some $4 RC spur gears to the original servo control arms, but that required some work on a mini lathe that not everyone has. A better option would be to buy the servo-mountable gears from Servo City for just a few dollars more: http://www.servocity.com/html/32_pitch_hitec_servo_gears.html. While you're ordering those, you'll save yourself some trouble is you also buy a pair of male servo leads to make it easier to connect your servos to your Arduino and to swap servos if the need arises.
- 1/2 inch thick sheet plastic or 3/4" thick aluminum to make the servo mounts. I used an old plastic cutting board, but if you do, make sure that it's the harder ridgid kind (you should not be able to dent the surface at all with your thumbnail). The softer kind is UHMW and will not machine well enough for this purpose.
- knobs and matching carriage bolts for clamping the servo mounts to the rails.










































Visit Our Store »
Go Pro Today »




thanks again!
phillip
"pinMode(16, OUTPUT);" Sets digital 16 pin (aka Analog 2) as ground pin
"digitalWrite(16, LOW);"
"pinMode(17, OUTPUT);" Sets digital 17 pin (aka Analog 3) as +5V pin
"digitalWrite(17, HIGH);"
Thanks for catching this - I'm updating the instructable with this information for those that are plugging the WiiChuck adapter in. Keep me posted on your progress, and check back here as you work because I've made some improvements to my code that I will post here when I'm done testing it.
Anyway I love those servos and gears, I wish to have a similar shop in Italy too..
I understood that you changed the servo using one at 360°, could you suggest a good servo to use? Thank you
If you really do need 360 degree rotation, I recommend searching youtube first, so you can see examples of the servos moving and also understand how noisy they are.
Let me know how your project goes.
Guy
"const int ratioPin = A1;" what does this line do?
If you can simplify a fool for beginner like me, I would be immensely grateful.
Again congratulations for the initiative and generosity!
Valter Menezes
Thanks for you comment, and I'm glad you have decided to try this project. At least one other person has successfully built this, so I'm glad to see another person trying it. The text describes where to connect everything, but I think it is not as clear as a wiring diagram would be, and the other builder thought I had one point wrong. I will try to put together a diagram and update the instructable with it.
Gears are nice for ensuring proper steps, but you could always go friction drive if you mount the pots really well. Taking out the form factor of the servo would also allow you to make a much more compact unit, but I have way too many vapor projects on the backburner to be going all crazy with this, I will probably stick with simple and quick.
Also, it is 3am after I just got back from watching the Avenger's, late night rants are bound to be horrible.
But let us make this simple to understand, just take out all the gears for the servo and replace it with two grooved pulleys and an o-ring to drive them. Keep the pot at the end pulley and you have the exact same thing as a servo, with a much quieter output. There are far better solutions to this, but using the cheap servo electronics makes it easy for anyone to do this. An encoded motor is great, but a servo uses a pot for a solution.
The author knew what I meant though.
P.S. Here's the thing I missed:
The WiiClassic.h library contains a DEFINE_ON_HOLD feature that must be uncommented in order to ensure that the button presses are reported just once. To uncomment this, you have to open the ..\arduino-1.0\libraries\MiconoWiiClassic\WiiClassic.h file in Notepad and change the following line:
//#define REPORT_ON_HOLD
to
#define REPORT_ON_HOLD
If you don't do this, you will notice that the D-pad button presses will keep moving the servos as you hold the button, whereas it should only move the servo one step per press. This error may also cause strange behavior from other button presses.
http://www.dvcity.com/dvshop/product.php?productid=18089&cat=253&page=1
Here is a link to a PDF with live links.
I was thinking:
Input: LANC and Wii Classic Controller
Output: LANC, 2 servo's (focus and zoom), and USB (to control either Canon or Nikon DSLR's)
If you add LANC you could power on and off the camera as well as use the camera itself for focusing if you can (or want), and use only one servo for the zoom. Then if you add the ability to control Nikon and Canon DSLR's via USB you have all your bases and possibilities covered.
No one that I know of has fully implemented Arduino-based usb control for a Canon camera, but some work in that area has definitley been done. If all you want to do is trigger the shutter (or start a video), that can be done using the remote control jack on most cameras. I'd have to do a little more research on how to do that, but if I add it to the project I will provide an update here.