When I was obsessively collecting old computers, I took anything people would give me. I remember getting several crappy 486's that had 5 1/4" floppy drives in them, so I decided to do something with them. The old floppy drives use relatively big stepper motors to accurately move the read/write head.
For the camera, I took the old Logitech webcam that I had used for the "Control The Car" project and ordered about $50 worth of parts from digikey.com. For switching the stepper motor, I decided to use the ULN2803A. It is an IC with 8 darlington transistor arrays and it is already setup to accept 5V switching inputs, so it's perfect for parallel port use. Having 8 inputs, it's also perfect to control 2 stepper motors.
The whole thing was housed inside of a project box, where the motor controlling the horizontal movement was bolted on the inside connected to an L bracket that held the second motor, which had the camera directly attached to it. The first problem I had was that the motors I salvaged out of the Floppy Disk drives were too weak to move the camera reliably. So the first thing I did was take the camera apart and replace the thick USB wire with thin individual wires. I wound the two data lines with ground since the wires were unshielded. This seemed to solve the issue, and the motor was able to move the camera around without the resistance of the thick USB cable coming from the camera.
The camera was hung on the ceiling in my basement, right above my bedroom where the computer that controlled everything was located. The user interface included a map of the basement, showing the position coordinates. The user would select the horizontal and vertical coordinates, and then the camera would move. Alternatively, there was a drop-down list of programmed presets for certain interesting areas of the basement, including the stairs, drill press and drum set.
On the programming side, the requests were sent to a PHP file that handled the requests and then sent the coordinates out to an EXE file written in basic. The stepper motors require 4 inputs to be sequenced properly to move. There are several controller boards available that handle all this, but I decided to do it all in software. One minor problem was figuring out which input is which, but that isn't that hard by observing the movement. The first thing I programmed was a very simple Single-Coil excitation movement. The camera positioning worked in absolute positioning, where a certain orientation of the camera was set to 0,0 (origin). The EXE program handled the stepper motor sequencing and timing and also optimized the movement by moving both horizontally and vertically at the same time.
The video was standard USB webcam setup, streaming the video online. Occasionally a wire coming off the camera would get caught, and the camera would "miss a step", so all the absolute positioning would then be wrong. This happened more frequently as the motors seemed to become less powerful from being used 24 hours every day. I reprogrammed the EXE to use Two-Coil Excitation to give the motors slightly more power, but the motors occasionally still weren't powerful enough. The camera's positioning would have to be reset because of this, and it quickly became a hassle. Eventually I plan on upgrading the stepper motors with ones salvaged out of a flat-bed scanner.