mikebeauchamp.com

At the time of writing this (Summer 2006), "Control The Car" is still my favourite internet related project I've ever done. This was the first time I've ever interfaced something with a computer and the internet that wasn't originally intended to be.

During Christmas break in 2000, I decided to try to modify a small remote control car so it could be remotely controlled through the internet. The car was a Tyco Canned Heat VW beetle. The first thing I did was to modify the controller so it could be interfaced with the parallel port of the computer. I soldered 4 wires onto the contacts of the switches on the controller's circuit board. A 5th wire (ground) was also soldered on and they all came out of a small hole I drilled in the controller's case.

These wires all went to 4 NPN radioshack transistors on a small circuit board (the first time I ever soldered onto a little perf board). Then wires went from the transistors into 4 outputs of a parallel port connector, which was connected to a cable to the computer. The basic idea is that sending an "on" signal to one of the pins of the parallel port would send +5VDC to one of the transistors, closing the transistor and completing the controller's switch circuit. This then sends the signal to the car, and it moves.

Thanks to Scott Schiller and his roomates at the time, who were experimenting with controlling LED's and stuff through the internet via the parallel port. They showed me how to write a simple program to control the parallel port. I wrote a BASIC exe program that triggered the outputs of the parallel port depending on which of the 6 movements the user wanted to make. The fun part was adjusting the timing of certain movements. For example, reverse had to be triggered several tenths of a second longer than forward to move the same amount because the wheels spun. For turning, the wheels had to remain turned for several tenths of a second after the forward/reverse was released since the car would continue to coast. This was done in BASIC with combinations of the OUT and SLEEP command.

To pass commands to this EXE from the internet, the computer that this was interfaced with also ran the Microsoft Web Server program that supported ASP. The ASP page allowed me to make System() calls to execute the exe and trigger the parallel port. Later, I switched to Apache and PHP to do the same basic thing.

For the video interface, I purchased a logitech quickcam pro 3000 and hung near the ceiling pointing directly down at the car. I used quite a few different programs to serve up the video including camarades software and webcam32. The video was usually 2-3FPS and had lag between .5-1 second. This was all run on the same computer that controlled the car and ran the web server program, etc. The computer was a Celeron 300 with 16MB of ram.

The user interface showed the live video feed and had 6 directional arrows that the user could click to move the car.

The car itself was located on a table top made of a sheet of plywood that had 1" high walls all around it. The whole thing was located ontop of the dresser in my bedroom. The bottom and the sides of the plywood area were covered in a cushiony foam in an attempt to lower the noise of the car moving around and bumping into walls.

To make it more interesting, I added various objects onto the table top with the car. Of course, people always used these as ramps to try to jump the car off of the side of the table. While people were controlling the car, it almost acted like a (somewhat) intelligent vehicle. If I put my finger on the table, it would usually always try to drive right into it. For some reason, this was very satisfying, to watch something move around that was controleld by a stranger somewhere in the world.

"Control The Car" ran for several years and was controlled by people all over the world. The batteries went through countless recharges, and the car sprang to life in some really awkward moments when I thought I had turned it off.

One of the problems with "Control The Car" was that it required so much maintenance. Batteries always needed to be changed, and the unit needed to be turned off when I was sleeping because it made so much noise and couldn't operate in the dark. More than several times, I had to return the car to the table top after a clever user found out how to use a pen I left on the table to jump over the 1" barriers. Amazingly, the car always survived.

During this project, I received a lot of emails from people wishing to do the same thing and a handful of people managed to get their own remote control car working online.

Here's a set of pictures I took shortly after the time of getting Control The Car working

 
code & design by mike beauchamp using php and mysql. (c) 1999 - present.