Making him move
After playing around with some battery operated drill motors I felt that they were too long to fit inside K-9′s body
I instead used 2 electric window up/down motors from a car.
The H-bridge worked fine however the weight of the body and the wheels being slightly misaligned made the wheels rub on the frame. When I powered it up the first 3 or 4 times K-9 shot across the floor proudly.
As they rubbed it got worse until the fuses started blowing. I gave up trying to fix this because it was just too difficult to access the motors each time.
I did not really consider things being accessible
Flashing computer
For the ‘computer’ that sits on K-9′s back I purchased a large calculator that was the correct dimension and modified it to look somewhat authentic.
The lights that flash are LED’s controlled by a Pic16F84A programmed with JAL.
Basically it is the ‘Knight Rider style’ sample program that comes with JAL but with some slight modifications and some fancy wiring.
The head
The head was assembled last,
K-9 has a gun that comes out just below his nose. I had the gun moving back and forth but no way to fit the assembly in the head, plus the motor driver IC was getting hot, so I glued it in place.

K-9′s ears are two radar dishes that oscillate back and forth. I purchased some surplus stepper motors which would fit side by side inside the head. I then created a circuit to make them oscillate back and forth. Once powered up, the circuit worked marvelously, almost totally silent, and the ears rotated back and forth very smoothly. I noticed current consumption of the stepper motors was quite high.
Here are the ears moving
Speech
I had someone do the K-9 voice and modified the files with Audacity, which then I burned to a CD. I had a CD player that was controlled by a Pic16F84A IC using JAL to control Play, Stop, FF, etc.
Here is where timing became an issue (and thus the down side of using this method).
As the CD does not provide feedback on what is happening, you cannot tell if it is playing or not or even which track is playing. I so everything had to restart from a reference point for each track, each track was exactly the same length and every thing was based on timing and then, when finished playing, back to that reference point.