Meta:

A couple of years ago I started to work on alternate control methods for my droid. I’m happy with my Futaba controller, but it’s pretty bulky and heavy, and it would be nice to be able to hide in a crowd without stuffing it in a restrictive bag.

The secondary goal was also to allow more easier scripting of complex routine that I’d started to build into my droid. You can only do so much with the channels provided on an RC controller.

For a while I thought phone control was the answer and I developed a Windows Mobile application that could interface with my droid and allow simple function.

But I wasn’t happy with driving with a touchscreen. Nothing beats a real analog joystick for fine control. Also, at the time multi-touch input wasn’t available on phones, so as soon as I stopped to click on an action like sound, everything else stopped, e.g. driving.

Communication was via wi-fi on the phone to a small computer onboard Artoo. It worked pretty good until I turned on my regular Futaba radio controller. It also runs on the 2.4GHz spectrum and it crippled my new wi-fi controller. So I shelved the project because most of the events I go to there are lots of other radios.

Then about a year ago I started to dabble with XBEE and using it to control my droid. I went thru a few prototype setups and came up with a very workable solution that I demonstrated at R2LA in October 2010.
At it’s heart are two Arduino micro-controllers that talk via XBEE. The smaller Arduino is tethered to a Playstation controller, with an added LCD screen to help with function selection and setup. It sits on a custom board to tie it all together, which looks bigger in the photo than it really is, but I wanted to show the setup.

The second Arduino is the brains in the droid and interfaces to the speed controllers, servos, and a VMusic2 for sound. I chose an Arduino Mega because it has 4 hardware serial connections and plenty of IO for future expansion. Initially configured to control 11 servos but the board can handle dozens and dozens.

The beauty of using XBee is that there are several different version that run on differnt frequencies (e.g. 2.4GHz, 900Mhz), but are also plug compatible – so switching from one to another is very easy. For my tests I focused on 900MHz as I really wanted to avoid the crowded 2.4GHz spectrum.

Even though the Playstation controller is relatively small compared to my Futaba setup. I still wanted to reduce the size further or allow me to hide it all together. I decided to add additional joysticks which are tethered to the main controller. I can hold them in the palm of my hand, and if I hide the wires in the arms of my jacket or shirt, then nobody is the wiser. In this mode control is limited to dome, drive and triggering sound but that’s good enough for me right now.

Back to R2LA, I couldn’t take down my full droid, so I built up a demo bot using all the same functions and components as a basic droid, like motor controllers, sound, dome rotation etc. I even had a little Artoo mounted on a servo to simulate dome rotation 🙂

Okay, the NPCs and AX3500 was total overkill but it was all I had on hand.

I drove it in from the car with the controller hidden and the extension joystick in my hand. People thought it was an autonomous robot and didn’t quite understand what or why it was there. They soon realize it was with me, but very few people spotted the controllers and they continued to talk to me thinking it was autonomous (while I drove it around the room.) When I finally told people they were very surprised.

I’ve not touched the project since last October, but this week I finally got it out and worked on testing it in my droid.

I’m going to use my dual receiver board I built a few years ago, it will allow me to switch back and forth between my Futaba and XBEE controller without rewiring. 🙂

Early tests on a full size droid are looking good, the little analog sticks aren’t as precise as those on the Futaba but I can live with it for now, especially if I can switch back and forth. And being able to totally hide the controller is awesome!