Hack a Rumble Robot

Here's how to hack a Rumble Robot with an Arduino microcontroller so that when it senses an obstacle, it automatically turns around and heads in another direction. You can use the code provided, or write your own and see how your roving rumblebot responds. If you're not used to tinkering with robots, it's an ambitious project, but these steps (along with the videos) will walk you through it.

Steps

 * 1) [[Image:Dino_fab_1_230.jpg|thumb|]]Put some batteries in the robot to see if it works. Typically, they take four AA batteries.
 * 2) *[[Image:Dino_fab_2_897.jpg|thumb|]]On the back are some switches. There is "off/on" and also "A/B" to determine which team the robot is on.  Push the "on" switch.  If the bot is working, it should say its name.  Put the cover and the batteries off to the side for now.
 * 3)  [[Image:Dino_fab_3_893.jpg|thumb|]]Take the head off the robot.  On the "neck" of the robot (between the head and body) there is a little screw that can be taken off with a small phillips head screwdriver.  Put the screw aside.  There is a small lip in the front of the head that is a little tricky, but should come loose after a little light twisting and turning.
 * 4)  [[Image:Dino_fab_4_153.jpg|thumb|]]Disconnect the cable from the motherboard that connects the head to the body.  Using a small screwdriver, pry back the tabs keeping the board down, and pop the board out.  You should now have just the naked board.
 * 5) *[[Image:Dino_fab_5_702.jpg|thumb|]]You should see the black micro processor that makes the bot move backward and forward. This is what we'll be hacking and wiring into.
 * 6) *[[Image:Dino_fab_6_216.jpg|thumb|]]These are the pin outs on the board where you'll need to connect new wires. The main pins we're concerned with are the four that operate the drive motors. They are connected to the "H-Bridge" that will allow us to trigger the motors to rotate forward or reverse by applying a positive voltage to one of two wires for each motor. There is one for forward and one for reverse on each motor. They are connected as follows:
 * 7) **Pin 1.0   Left motor FORWARD
 * 8) **Pin 1.1   Left motor REVERSE
 * 9) **Pin 1.2   Right motor FORWARD
 * 10) **Pin 1.3   Right motor REVERSE
 * 11)  [[Image:Dino_fab_7_578.jpg|thumb]]Solder the wires that will go out to the Arduino. In this photo we see the ground wire which is connected to the pin labeled in the photo on the white connector and the other four wires soldered in place.
 * 12)  [[Image:Dino_fab_8_338.jpg|thumb|]]Unscrew the upper body and pull it apart.
 * 13) [[Image:Schematic_260.jpg|thumb|300px|Click to enlarge]]Wire everything together using this schematic. The video demonstrates how everything is put together. Make your wires at least 5" in length to make it easier to mount everything up.
 * 14) *[[Image:Dino_fab_9_540.jpg|thumb|]]The schematic shown in this article assumes that there will be one sensor on the front of the bot. The video below shows how you can make both the arms sense obstacles, but this will require an extra bump switch (connected to Pin 3 and the ground wire) as described in the video section. The code will also need to be changed accordingly.
 * 15) *[[Image:Dino_fab_10_40.jpg|thumb|]]If you mount everything on top of the chassis where the head used to be and mount the bump switch on the front, use a micro switch and glue on some pieces of wire from a paper clip as whiskers.  The whiskers on the switch should extend left and right the same width as the robot.  Add one more whisker pointing down close to the floor.  These will help the bot avoid anything that might not return an echo from the PING sensor.  Make sure the PING sensor points towards the front and is at 90 degrees to the floor.  The LED connected to pin 13 blinks each time the PING scans and it can mounted anywhere you like.  The power switch is optional and simply goes in line on the positive battery lead.
 * 16) * [[Image:Dino_fab_16_501.jpg|thumb|]]When connecting the motherboard to the microcontroller, you may need to make a notch so that the wires don't get pinched when you put the robot back together.
 * 17) * [[Image:Dino_fab_17_100.jpg|thumb|]]The battery can be held in place by a small piece of velcro or some EPS foam. Solder the negative lead of the 9-volt battery to the auxiliary battery input.  Be sure to place the jumper onto "extension power" not "USB."
 * 18) * [[Image:Dino_fab_19_622.jpg|thumb|]]If you want to be able to use the "on/off" switch, connect the white wire to the back of the switch. The power should go to the switch, run back into the white wire, and feed the Arduino power when you turn it on.
 * 19) * [[Image:Dino_fab_22_972.jpg|thumb|]]The PING sensor can go anywhere on the front of the robot. In this example, the sensor has been glued into the faceplate of the robot. Cut out the "eye-holes" on the faceplate and then just add glue around the "eyes" of the sensor to keep the plate sturdy. The ribbon cable that connected to the head of the robot has been stripped down to three leads (instead of the original four) and soldered to the three leads on the PING sensor. The other end connects to the Arduino as specified in the schematic.
 * 20)  [[Image:Dino_fab_24_655.jpg|thumb|]]Solder the leads and attach them to the Arduino board.  Refer to the schematic once again for help.
 * 21)  [[Image:Dino_fab_26_654.jpg|thumb|]]Put the robot back together.
 * 22)  Upload the code.  Connect the USB cable to your computer and plug the other end into the Arduino's USB port.  Set your robot on a riser so the wheels don't touch anything and power up the Arduino.  Copy the code provided here and paste it into a new window window in the Arduino software. Save the sketch as "rumblebot ping bump" and upload it.  After it's uploaded, power down the Arduino, disconnect the USB cable, set the bot on the floor and power up the Arduino.  It should start to drive forward with the LED blinking.  As it gets within 30 cm of an object, it should turn away and keep driving forward. If it hits an object and triggers the bump switch, it should stop, reverse its direction and turn, then proceed forward.

Things You'll Need

 * Find a Rumble Robot on ebay, at a yard sale or a thrift store.
 * Arduino micro controller
 * A Parallax PING sensor
 * An LED
 * A micro switch
 * A 100 ohm resistor
 * Arduino software which you can download here
 * You'll also need coding, which you can write yourself or use this free code

Related Tips and Steps

 * How to Build an Internet Controlled Robot
 * How to Build a Robot That Can Do Chores
 * How to Become a Free Software Hacker
 * How to Build a Remote Controlled Robot

Sources and Citations

 * http://www.dinofab.com/rumblebot.html, original source, used with permission.