Ever wanted to make a robot that could actually do something, but never had the time or knowledge to do it? Fear no more, this instructable is just for you! I will show you step by step how to make all the necessary parts, and programs to get your very own robot up and running. I was first inspired to build a robot when I was ten, and saw Lost in Space, with that famous B-9 robot, I wanted one! Well six years later I finally built a working robot, its name- Walbot of course!
To find out more...Go to step one.
Step 1: Gathering Supplies
note: these are only the prices I found from a quick search, if you look harder you probably will find better prices somewhere else, also the DIgiKey links might be broken or timed out, just search for the part description and whatever price matches the one listed here.
Arduino USB board - $34.95
LV-EZ1 Ultrasonic Rangefinder- $25.95
2X 54:1 16mm Spur Gearmotor, FF-050- $13.80
2XPack of 4 Energizer NiMH AA Batteries- $4.85
9Volt Energizer NiMH Battery- $8.99
2X3mm Aluminum Bearing Block- $3.50
2X 3xAA battery holder (DigiKey part # SBH-331AS-ND - $0.98
2.1 x 5.5 x 9mm Right angle DC Power Plug - $0.95
2X Noise Suppression Capacitors - $0.50
L298 double full H-Bridge - FREE SAMPLE!
12"X12" sheet of 1/4" Lexan polycarbonate - $16.36
3X Aluminum 1" 8-32 standoffs - $0.45
4X 2-56 X 1/4 BUTTON CAP SCREW - $0.37
BOX of 100 4-40 X 3/8 BUTTON CAP SCREWS - $5.40
3X 8-32 X 3/8 BUTTON CAP SCREWS - $0.29
Neoprene Foam Tire - 3"D x 0.75"W (pair) - $5.36
Mounting Hub - 3mm (pair)- $8.00
9Volt battery clip (DigiKey part # 234K-ND)
Break Away Headers - $2.95
2 red 2 green and 1 yellow 3mm LED - $2.20 total
4X 1N5818 SCHOTTKY Diode (DigiKey part # 1N5818-E3/1GI-ND) - $0.15
2X 47k and 2X 2.2k and 1X 10k resistirs (digikey part #'s P47KBACT-ND and P2.2KBACT-ND and P10KBACT-ND) - $0.34
Ping Pong ball or other small low friction sphere for a caster- Free????
Custom order Arduino circuit shield see step 4
Optional / If your a complete beginner:
22AWG High Strand Count Silicone Wire Combo Pack - $16.80
Polarized Connectors to make things look neat, you will need crimp pins, 4X 2 pin header and housing, 4 pin header and housing - $6.45
Velcro for sticking things to base
these are the suggested tools to have for this project, you could either buy borrow or use something else you have for the same purpose.
Bandsaw for cutting the Lexan base and various parts.
Drill Press for drilling straight holes in Lexan base.
Tap and Die set for tapping holes in the Lexan base.
Good soldering iron for soldering various parts on the robot.
Digital Multimeter for debugging electrical components.
Needle-nose pliers for gripping and crimping the connectors
Step 2: Making the Base
To start off, I have done most of the work for you! YAY. That would include a couple months of resaerch and design for this project, which should be done for any robot you plan to build your self after this. I made a scale 3D model of Walbot in a free program called SketchUp by Google (thank you Google), you can download my model of walbot from Google 3D warehouse here (note: there might be some differences in the motor type and some of the components are missing like the circuit shield on top of the Arduino, wires... I will update the model when I have time).
Step 1: Download the Word document of the cutting and drilling guide here, and print it out. Once it is printed make sure that it is 6" wide by 5.5" long. Now cut off the extra bottom half of unprinted on paper so that you have a template thats about 8 1/2" by 6", and using some kind of adhesive or semipermanent glue or double stick tape, mount both the templates on the Lexan sheet.
Step 2: Cut out the Lexan base with the bandsaw, following the template line as closely as possible. To make it easier, cut little relief slit along the perimeter to free up the area you are working on without having to worry about the blade binding up. When your finished, you can use some sand paper to smooth out the edges if your cuts did'nt come out perfect.
Step 3: Over at the drill press, use a #29 drill to make the holes for the 8-32 standoffs, and a #43 drill to make the holes for the 4-40 screw size motor bearing blocks and standoffs for the Arduino. When drilling be sure to use a little WD-40 or water as a lubricant to keep the polycarbonate (Lexan) cool.
Optional: it is not on the template, but to make things neater, if you have a large 1" forstner bit or other big drill bit, it is useful to drill a hole right where the two lines cross on the TOP layer. This allows an area to channel wires from the top layer to the bottom layer. I did it on mine and that is what you will see in the picture, but it is not necessary.
Step 4: Using the 4-40 tap you bought in the set, carefully tap the holes that you drilled with the #43 drill. Then using the 8-32 tap do the same for the 3 holes you drilled for the standoffs with the #29 drill. If you do not know how to thread materials with a tap, learn how to here. I use a cordless drill, but it is not recommended if you are just a beginner.
Step 5: Using goo gone or other adhesive remover, remove the drilling and cutting templates and wash the lexan free of all fingerprints and grease.
Step 3: Assemble the Robot
Step 1: Screw the 8-32 one inch standoffs onto the 3 holes that you drilled and threaded. In the picture I temporarily put caps on the ends of the standoffs because they are too long, but I recommend that you cut them off with like a Dremel tool.
Step 2: Place the top Lexan base on the standoffs, and using the 8-32 screws you got, attach the top to the standoffs. Note: trying to thread metal screws into plastic can be hard, to make it easier, rub a little paraffin (candle) wax on the threads and they should go in smoothly.
Step 3: Now would be a good time to solder leads and capacitors to the motors, go here to find out how to solder capacitors to the motors.
Step 4: Attach the bearing blocks to the motors using the 2-56 screws you got. Make sure to use the 2 horizontal holes so that the wheels will be aligned parallel to each other (if you put the screws vertically the gearhead can wiggle back and forth just a little bit, but enough that it could make it not go straight).
Step 5: There should be enough room to stand the bearing blocks up vertically and slide/wiggle them into place between the top and bottom layers. Now mount them in place by inserting and screwing in all the 4-40 cap screws into their respective holes.
Step 6: Now take the LV-MAX Sonar module and solder 4 wires onto it, through the AN, RX, +5, and GND holes. Now find or make a 90 degree mounting bracket for it. I used a leftover piece of Lexan, cut a strip 1" by 2", heated it in a little oven until it was pliable and bent a 90 degree angle in the middle. Then you can either drill some more holes in the bracket, corresponding to the mounting holes in the Sonar module, to mount it; or you can just use some double sided sticky foam; or use Velcro to mount it to the bracket, and the bracket to the robot base.
Step 7: For my Walbot I used old Cpasella wheels and had custom hubs made for them on a lathe. So that means if you get the wheels and hubs from the parts list, your robot will look a little different. If you can find/make lighter wheels with a 3mm bore, I encourage you to do so. Anyway, take the wheel and mount the hub to it with the screws they provide, and then attach that to the 3mm motor shaft using superglue or epoxy.
Step 8: Mount the Arduino board to the top base using the 4-40 screws. If you can get some short 4-40 standoffs that would be best to use, if not just use some washers or a small straw section to raise it off the top base a few millimeters.
Step 9: Attach the 9Volt battery and 2 AA battery holders to their respective places using Velcro. I use Velcro because it is strong yet still allows you to remove them when they need to charge up. The 9Volt should be mounted on the top level in front of the Arduino. The 2 AA battery holders should go behind the motors ( just look at the 3D model in SketchUp to see where everything goes). A quick note on the batteries, make sure that you use 1.2volt AA rechargeable cells (most rechargeable NiMH are 1.2V), if you use standard 1.5volt alkalies that could dammage the motors because they are not rated for 9 volts (6batteries * 1.5 volts =9 where as 6*1.2= 7.2 volts)
Step 10: Time to add the "third wheel" AKA caster AKA half of a ping pong ball or other slick-surfaced sphere thats about the same size as a ping pong ball. Take either of the two things mentioned above and split it in two, you can use your favorite splitting tool be it hacksaw or guillotine... Now all thats left is to fill it with something like hot glue (thats what I used) and stick it to the bottom layer base. You can make out in the picture where I put mine, it doesn't matter really just as long as it provides support for the other two wheels.
Step 11: Pat your self on the back, you're doing a good job, and you're more than half way through. On to the electronics!
Step 4: Adding the Electrical Brain.
Once again I have done most of the work for you, by spending hours making a PCB of our circuit shield in a PCB CAD program called Eagle. To get your very own professionally made circuit shield go to BatchPCB. BatchPCB is a shoot off of Spark Fun Electronics, and they specialize in taking small orders from people like you and me at a very reasonable price. Next make yourself an account there so you can order my shield, then get the https://www.instructables.com/files/orig/FSY/LZNL/GE056Z5B/FSYLZNLGE056Z5B.zip Gerber Zip File (also at the bottom of this picture set) which contains the golden 7 files they need: GTL, GTO, GTS, GBL, GBO, GBS, and TXT drilling guide. Look at the two pictures below as a reference, but basically click "Upload New Design" in the top task pane on the site, and from there you just find and upload the entire Zip file, and then check the picture to make sure all the layers are in the place they need to be, click submit then select the Eagle PCB bubble and then submit again. It will send you and email that says it passed the DRC bot and it will have a link that you can click to add it to your shopping cart, then just order it. It costs like $30 and takes about 1-2 weeks depending upon when you send it to them and what shipping you get.
Now if you are good with electronics already, and think you can make your own on a prototyping board ( I did this temporarily), or if you like to etch your own PCB's, then go ahead but I'm not discussing how to do that here as it will waste time and space. If you choose to make your own then you can get just the schematic here, its a little crowded and messy so be ware. Oh, and an extra note on the PCB it does have some of my silkscreen graffiti on there, so don't think that the guys at the PCB factory were writing Chuck Norris facts on your circuit board! So lets fast forward about a week and assume your holding the circuit board right now...
Step 1: Make sure the holes for the Arduino headers line up with the holes for the header pins on the shield. Now as a result of my error, you will have to bend some of the pins on the L298 H-Bridge back so they will fin in the holes on the shield. Sorry about that. Warm up your soldering iron and get ready for some major soldering! If you don't know or are rusty on how to solder check out this page by Spark Fun.
Step 2: Solder the male header pins to the board. To make sure they fit well, I suggest that you stick the male headers into the Arduino first, then fit the shield over them; and solder them on.
Step 3: Now solder the L298 H-Bridge to the shield and the rest of the components (LED's, polarized connector pins, resistors, and diodes). The PCB should be pretty self explanatory as to where everything goes, because of the silkscreen layer on top. All the diodes are 1N5818, and be sure to match up the stripe on the diode to the stripe on the silkscreen. R1 and R2 are the 2.2K resistors, R3 and R4 are the 47K resistors, and R5 is the 10K resistor. LED's 1 and 3 are green to indicate the motors are going forwards, and LED's 2 and 4 are red to indicate the motors are going in reverse. LED 5 is the obstacle indicator and shows when the sonar picks up an obstacle in its programmed limit. The extra jumper places are there to leave us the option to update Walbot with different sensors in the future.
Step 4: If you are soldering the wires directly to the board then skip step 5. If you are using the polarized connector pins then skip THIS step. Soldering the wires directly to the shield is not as neat but much faster and cheaper. You should now have 4 wires for both the motors, 4 wires coming from your AA battery packs, and 4 wires coming out of the sonar. Lets do the Battery packs first. See the second picture for a diagram of where to solder the wires. Now that thats done, solder the LEFT motor wires to the MOT_LEFT labeled holes on the PCB, and the RIGHT motor wires to the MOT_RIGHT holes (order does not matter, we can fix that with software later). For the sonar, there should be small labels in front of the SONAR holes on the PCB. Match up your GND wire to the GND hole, the 5V wire to the VCC hole, the RX wire to the Enab hole and the AN wire to the Ana1 hole. You should then be done with the wires!
Step 5: If you are using the polarized connector pins for the wires on the board and don't know how to use them, then read up on them here. Now solder in all of male polarized connectors to their corresponding number of holes. Look at the diagram below to see where to stick the crimp pins in the housing slots, so that they line up as shown. Next do the polarized connector housing for the left and right motor wires, it does not matter which order the wires go in just as long as left goes to MOT_LEFT, and right to MOT_RIGHT (we can fix which way the robot goes in the software). Finally do the Sonar wires making sure to line up / orient the wires so that your GND wire does to the GND hole, the 5V wire to the VCC hole, the RX wire to the Enab hole and the AN wire to the Ana1 hole. Once you crimp, wire, and connect those together, you should be done with the wires!
Step 6: Now you need to be able to power the Arduino using your 9Volt (its really 7.2 volts) battery. Using the 9Volt clip connector, open the power jack and solder the POSITIVE RED WIRE TO THE CENTER TAB and solder the black gorund wire to the tab which goes to the outer metal part. This is critical to make sure that the center / inner hole is positive, if you reverse this the Microcontroller will most likely do nothing except heat up, smoke or explode. If by accident you fry your Atmega168 you can get a new one here but you will have to burn the boot loader back on. To find out how to do this check the Arduino forum.
All the electronics should be finished with for now! Only easy stuff left now!
Step 5: Programing Walbot
You should have already compiled the code in the Arduino program, so now click the upload button and it should start uploading onto the Arduino board (you can see the orange TX and RX LED's flashing on the Arduino board if this is happening). If you get an error that it is not responding first push the reset button ton the Arduino board ( the little DIP switch, after you push this you have about 6 seconds to upload the code before it reboots), if it still doesn't work, make sure you installed the USB drivers correctly (they are in the drivers folder in the Arduino folder you downloaded). If you still can't get it to work, consult the Arduino Forum and ask for help, they can guide you through what you need to do. If everything went well your program should have booted up in about 10 seconds, and if the AA batteries are charged and installed, the motors should turn on and if the Sonar detects something within 16 inches the yellow indicator light will turn on and the Right wheel will reverse direction for half a second. You can now unplug the USB cable, switch the jumper to EXT, plug in the Power Jack and put it on the ground.
If you have done everything right so far, you will now have your very own obstacle avoiding robot!
If you have any questions or comments (or if I left something critical out which I probably did) just leave me a message in the comment area.
Also if you have any robot related questions I suggest that you join the Society of Robots Forum which I am a member of, and one of the people there will be more than happy to answer your questions! Happy Roboting!
Step 6: Adding Infrared Sensors
Step 1. Get the sensors! I put the link to get them above this. I also suggest you get the 3-pin JST Cable for Sharp Sensors because they're pretty hard to find elsewhere. Now skip a week ahead when the UPS guy delivers them, and lets get to work. First you need a way to mount them. You will need to make a mounting bracket for them, I made mine out of a strip of aluminum, but it doesn't really matter. You can try to copy the shape of my bracket, anything works as long as it fits and holds it in place.
Step 2: Attach the sensor to the bracket. Unscrew the top front two 8-32 cap screws just enough so theres space in between the standoff and the base. Fit the sensor into place and screw it back together.
Step 3: pull the wires through to the top. On your PCB shield there are two sets of 3 holes on the front side of the board labeled INFRA1 and INFRA2. Solder the red wire to the hole labeled VCC ( hole closest to the IN in INFRA), solder the black wire to the middle hole, and solder the white wire to the last hole labeled Ana2 or Ana3 (hole closest to the RA in INFRA). You can also to choose to use polarized connector pins instead of soldering the wires directly to the board.
Step 4: Download this code which includes extra features using the Sharp infrared sensors. Compile and upload this to your Walbot, and it should be smarter than ever!
Note: I haven't had much time to test the new code, so if someone finds anything wrong with it or sees a way to make it better just leave a comment.