In the beginning there were pagers. The fact that activated pagers danced their way off of desks and dressers was little more than an aggravation to most people. That changed when it happened in the presence of a maker. Soon after that eureka moment the vibrobot was born. As those early technological vibrating critters started to multiply they began taking on nearly every mechanical form imaginable. Their off balance, weighted motors hummed and shook sending these scooters off in random directions.
Then it happened. One morning a maker preparing to take on a new day glanced down at the toothbrush in his hand, and the bristlebot was conceived. Who could have known the technological stir something as simple as a sawed off toothbrush would make. No one could have predicted the great personal pleasure makers around the world would find in hacking, of all things, a toothbrush. The simple yet elegant design of the bristlebot instantly made it a favorite project for makers of all ages. It quickly became an icon so deeply rooted in maker culture that it could never be replaced or forgotten.
On the next branch of the vibrobot's evolutionary family tree we find the dipbot. Made with discarded integrated circuits, nearly all dipbots are born of, most appropriately, motherboards. These are the low riders of vibrobot culture. What they lack in height they make up for in leg count as most have at least 40. Most dipbots look like some sort of multi-legged bug that may byte.
With such wide ranging variation in its gene pool, the vibrobot family tree has naturally lent itself to continued innovative evolutionary adaptation. Influenced to a great degree by environment, vibrobots continue to spring forth from whatever salvaged stuff seems to be at hand. They can evolve from boxes of spare parts, the guts of electronic dark age gadgets (read the word pagers here), personal care items, old video game controllers, and discarded computers. All of these environmental factors lend themselves quite well to the task of expanding the vibrobot genotype.
That brings us to the focus of this Instructable - the Socbot. Born in the mind of this author when he first saw a dipbot, this is the next step in the evolution of vibratory micro robot design. This new kid on the block is a highly advanced vibrobot. Controlled by a salvaged television infrared remote control, this PICAXE brained next generation vibrobot stands ready to respond to your every directional command. No more random roaming. With the simple press of a button the socbot's unique wire wrap socket locomotion system kicks into gear sending this critter off in whatever direction you choose. Powered by alkaline watch batteries, the socbot features twin outboard vibrating pager motors. Although current limited by design, this microbot is powerful enough to scoot around on any smooth surface. While big on brains, it is still small enough to sit on a quarter. With so much technological heritage and power packed into such a small space, one has to wonder where the next step in the evolution of vibratory technology will take us.
Step 1: THE PARTS
1 - PICAXE -08M
1 - 16 Pin Wire Wrap Socket
1 - 16 Pin DIP Socket
1 - 8 pin Dip Socket
2 - Vibrating Pager Motors
1 - TSOP4838 or similar 38KHz IR Receiver Module
2 - General Purpose 100V Signal Diodes
3 - L1154 Watch Batteries
1 - 4.7mfd Capacitor
2 - 82ohm 1/4 Watt Resistors
1 - 33K ohm 1/4 Watt Resistor
wire, thin metal shielding, super glue
Step 2: HOW IT WORKS
This Socbot takes advantage of one of the most useful characteristics of the PICAXE -08M - its ability to send and receive all 127 Sony 38KHz infrared television control codes. This feature allows the 08M to communicate with a remote control, a television, or even another 08M. Here the 08M watches for a valid code from the universal remote control and responds to button presses on the remote by sending a current pulse to one or both pager motors.
The 08M outputs can handle around 20mA each so I hooked the outputs up in pairs in order to feed 40mA to each motor. An 82 ohm resistor in series with each motor limits the current to the 40mA maximum. A fast acting signal diode in parallel with each motor helps sink the induced voltages created by the motors. Capacitors would greatly improve the protection, but would also add to the size of the bot so I just left them off with no apparent short term ill effects.
Step 3: DOWNLOAD THE CODE TO THE PICAXE
This is the picaxe code I wrote to use with the socbot. As the socbot has no download circuit you will need to program the picaxe on a proto board and then move the programmed chip to the socbot.
The code uses the infrain2 command to wait for one of 3 valid codes from the universal remote. Depending on which code is received, the picaxe will send a 100mS current pulse to one motor or both motors. If the button is held down the current pulse repeats until the button is released.
A copy of the picaxe bas file is included below for download.
MAIN: let dirs= %00010111
BEGIN: let pins= %00000000
let b0 = infra
if b0= 16 then AHEAD ' CH+
if b0= 19 then LEFT ' VOL-
if b0= 18 then RIGHT ' VOL+
AHEAD: let pins= %00010111 ' Outputs 0,1,2,4 HIGH
LEFT: let pins= %0000011 ' Outputs 0,1 HIGH 2,4 LOW
RIGHT: let pins= %00010100 ' Outputs 2,4 HIGH 0,2 LOW
Step 4: PROGRAM THE REMOTE
Any universal IR remote control will work with the PICAXE. All you need to do is program it for use with a Sony television. I used a cheap RCA universal remote I picked up at Wal Mart for less that $10.00. The Sony code I used was 218. Most remotes I checked only had two sets of codes for Sony televisions so if one does not work try the other one. I used the center Channel Up and Volume down and up buttons to control my socbot but you can use whatever buttons you want. Just look up the code for the buttons on the PICAXE web site or use the debug code command and our computer to check the code sent by each button on your remote.
Volume Down - turn left (only left side motor on)
Channel Up - go forward (both motors on)
Volume Up - turn right (only right side motor on)
Step 5: PREPARE THE WIRE WRAP SOCKET
Bending the leads on the wire wrap socket can be tricky. I ordered 4 and messed up 3 of them before finally getting the 4th one to bend without breaking. This is the method I finally got to work the best.
I one row of leads into a break board and slowly bent all 8 pins on that side to the shape I wanted. I then repeated this for the other row of leads. I did the final shape adjustments with a pair of pliers bending the pins one at a time. Any bends need to gentle curves instead of hard angles.
Step 6: PREPARE THE BATTERY TERMINALS
The battery terminals are nothing more that two pieces of thin metal shielding I salvaged from an old cassette tape deck. I just cut two pieces, soldered a small wire to each piece, and attached them to the 2 DIP sockets using super glue. I also glued the 2 pager motors to the 16 pin DIP socket.
Step 7: STACK THE DIP SOCKETS
I stacked the 2 DIP sockets in order to get all 3 batteries and the PICAXE on the bot without either hanging over. Four pins (2 on each side) on the 8 pin socket go into 4 holes (2 on each side) of the 16 pin socket. This means that the 8 pin socket is half on and half off the 16 pin socket. I glued the two sockets together with super glue.
Step 8: SOLDER IT ALL UP
This part can get pretty tricky. It is no easy task to make all of the connections and install all the components without shorting wires together, but it is not impossible. I used 25 gauge un-insulated buss wire. I started with the power leads from the batteries, then to the pager motors and current limiting resistors, and on through the circuit one section at a time. Parts placement is not critical. Just take your time and check your work as you go.
IMPORTANT NOTE: It is important that the motors turn in opposite directions. One needs to turn clockwise and the other counter-clockwise. This is achieved by reversing the way you hook up the leads on one of the motors.
Step 9: CONTINUE INSTALLING COMPONENTS
I cut the leads on the current limiting resistors and circuit protection diodes and just plugged them into the socket. I would not do that again because the vibration of the motors tends to break the connection between the round leads and socket. DIP sockets are designed for flat component leads - not round ones.
I installed the IR module on the top of the Socbot but you can put it on the front, rear, side, or even underneath. It is pretty sensitive so the universal remote control works from any angle.
Step 10: FINISH UP
I decided to paint my Socbot but there is no way I would do that again. It seemed like a good idea to begin with but after doing it I realized that it looked better unpainted. You may feel differently.
Step 11: ENJOY
Due to the current limiting resistors I added to keep the current to around 40mA this Socbot doesn't move very fast. That is fine with me, but you may want something with a little more get up and go. If you do, I would suggest that you use transistors to drive the motors. This would allow you to apply full current to the motors and get a significant speed increase. At full power this thing would really scoot. However, an increase in current would also mean a decrease in battery life and they donât last too long as it is.
Note that the socbot will travel towards the end where the batteries are. I wanted it to travel in the opposite direction but was not able to get it to do so. I think it has something to do with the weight distribution. I even bent the wire wrap socket leads in the opposite dirrection but it had no effect on the socbot's direction of travel.
Step 12: TAKE IT FURTHER
Here are some ideas for future versions:
- use transistors to apply full current to the motors (they are now running at 40% capacity)
- make a light seeking or light avoiding socbot.
- Make a whole bunch of light seeking (or avoiding) sockots, each with an LED and study how they interact with each other.
- make a sound seeking socbot
- make a line following socbot
- make an even smaller socbot using an 8 pin wire wrap socket.
- make a larger socbot using a 40 pin wire wrap socket
- write code for the picaxe to make the socbot trainable or programmable. Maybe use the remote to move it through a series of moves and then let it repeat the moves.
- make two or more sockbots that can communicate with and influence each other using infared codes
The possibilities are nearly limitless.