Wiimote Control Car
Created Thursday, December 18, 2008 | Added Tuesday, February 21st, 2012

If I remember correctly, this project could be whatever we wanted, of course as long as it was some kind of “new media” sculpture.  I wanted to try to use the Wii remote again.  My original proposal describes my idea:

I’m not entirely sure what I’m going to do for this project, but I’m thinking I will try and use the Wii remote control again. Going through some sites for research during my last project, I came about a cool demo where a guy used the Wii remote to track the movement of his fingers (up to four of them). I think I’d like to do something with this technology. Today I got an idea that could use this. Earlier this semester, I was looking into controlling a remote controlled car with the Wii remote. The way I envisioned it was that I would use the Wii remote’s tilt sensors to determine the direction and movement of the car (tilt forward would go forward, tilt back would drive in reverse, tilting to the sides would turn the wheels). The technology to do this is definitely available; it just requires buying certain parts to assemble. However, instead of using tilt to determine the car movement, I thought that one could use hand/finger gestures to control the car. So moving one’s fingers closer or farther away from the Wii remote would determine the forward/backward movement/speed of the car, while moving one’s fingers left or right would control the car’s wheels.

The final product, much to my delight, was pretty much exactly what my proposal described.  I had researched using a bluetooth device (the Wiimote) for an R/C vehicle, but the process and pieces I would need would be far too expensive.  Luckily, I found a toy car online that one can control wirelessly from a computer.  This was perfect!  I had already used the Wiimote to control my computer in previous projects, so this was a great start.

The car works by plugging its charging station to a computer via USB.  It comes with a small program that allows the user to move the car forwards and backwards as well as steer left and right.  I tried to gain access to this program with a C# program of mine, but I could not get it to work.  Soon I realized that I was making it harder than it needed to be.  The car’s remote control program works by either using the arrow keys on the computer’s keyboard or by pressing the onscreen buttons with the computer’s mouse.  All I had to do was have the Wiimote mimic the computer’s keyboard/mouse!

I remember that I ended up mimicking the mouse movements rather than keyboard button presses.  I think it was because mimicking keyboard strokes didn’t work for whatever reason…  But anyway, I wrote a C# program that placed the computer’s cursor on certain places on the screen and mimicked pressing the left mouse button depending on where the Wiimote was in relation to the Wii sensor bar.  So basically, depending on the placement of the Wiimote, the computer’s cursor would click one of the remote control program’s directional buttons, causing the car to move.

I then built a glove that would serve as the user’s means of controlling the car.  I attached infrared lights to the bottom of the fingertips of the glove, two small batteries on the top of the glove (to power the lights), and a piece of tape on top of the batteries to hold them down (and make the glove look for technological :P).  I then placed the Wiimote face up on a flat surface, such as a table or the ground, and held the finished glove above it.  The Wiimote works by detecting infrared light, normally from the Wii sensor bar; however, in this case, it was detecting the infrared lights from my glove.  Also, it’s normally the Wiimote that moves around while the IR lights are stationary, but I was doing the opposite (which works just as well).

The car is controlled holding the glove above the Wiimote (wearing it on one’s hand, of course) and moving one’s hand around on a horizontal plane.  Imagine a plus sign (or a 2D grid, or even a D-pad).  Moving one’s hand forward (to the top point on the +) moves the car forward.  Moving one’s hand backwards (to the bottom point on the +) moves the car backwards.  Moving one’s hand to either side (to the left/right point on the +) will turn the wheels.  Turning can be combined with moving forwards or backwards by moving one’s hand to “diagonal” positions (again, picture the +).  If one’s hand is directly above the Wiimote, that is the neutral/stationary position, and the car does not move.

My friend, Will, came to visit for one weekend, and he helped me test it all out.  That’s who’s in the images and videos (not me :P).