loading
Picture of Autonomous Arduino Tank (A.A.T)
misc 019.JPG
Hey everyone, this is my very first robot. I'm a 15 year old freshman. I've been interested in robots since the 6th grade and been trying to build one ever since. I've decided to call it A.A.T because it's an autonomous arduino tank, just as the name states.

My robot consist of a reused remote control tank chassis and a couple of other components which can be found below in the "Materials Needed" section. I've never used an Arduino before but I have heard of them since the 7th grade and now I'm psyched in having to use one. I've completed this robot with the help of many sources for example websites, books about Arduinos, family, and friends.
 
Remove these adsRemove these ads by Signing Up

Step 1: Materials Needed

Picture of Materials Needed
misc 017.JPG
Materials

1. RC Tank Chassis
2. Arduino Uno
3. Breadboard w/ Jumper Wire Set
4. SN754410NE Motor Driver
5. Standard Servo
6. Ping Ultrasonic Range Finder
7. 9 Volt Snap Connector
8. 9 Volt Battery
9. DC Power Plug
10. x4 D Size Batteries
11. x4 D Battery Holder
12. Male Servo Extension 
13. USB A to B Cable
14. 6" x 6" Base Plate (Optional)

Tools

1. Screw Driver Set
2. Hot Glue Gun
3. Solder Pencil



Step 2: RC Tank Chassis

Picture of RC Tank Chassis
Tank Base.JPG
Tank with Base.JPG
The chassis of this robot is an old RC Abrams Tank that I had purchased at the second hand store for only 10 bucks. I stripped the whole thing until the chassis was left. You don't really need to use the exact same tank, any RC Tank will do just fine. Also, the motor driver on the original tank sucked, so i decided to construct my own which can be seen on the next step.

So the base plate I'm using was hot glued into place as in the picture shown(exact position of the plate doesn't matter), but i preferred to place mine in the center.

Step 3: SN754410NE Motor Driver

Picture of SN754410NE Motor Driver
SN754410NE Motor Driver.jpeg
1 md.JPG
Arduino.JPG
MD and Arduino.JPG
Misc 004.JPG
In order to control and power the duel motors on my robot I used the SN754410NE Motor Driver. You don't necessarily need to use this one, another example would be the L293 Motor Driver, but it was the one I had purchased years ago.

Okay, so I will now be explaining how to connect the motor driver to the Arduino Uno. First, connect all ground pins to ground on the breadboard, which are pins 4,5,12, and 13 of the motor driver. Then connect Pins 1 and 16 of the motor driver to Pins 9 and 10 on the Arduino. Next, connect pins 2 and 7 of the motor driver to pins 3 and 4 on the Arduino, which are the inputs of the left motor. After that is complete, connect pins 10 and 15 of the driver to pins 5 and 6 on the Arduino, which are the inputs of the right motor. Pins 3 and 6 of the motor driver have to connect to the left motor and pins 14 and 11 have to connect to the right motor. Pins 3,6,11, and 14 are all output pins, which mean that they will send the signal from the Arduino to the motors and tell it when to move or when to be stationary.
And the last two pins which are pins 8 and 16 of the motor driver need to be connected to power on the breadboard. The power source will be a 9 volt battery hooked up to the breadboard as shown in one of the pictures.


Step 4: Attaching the Ping Sensor

Picture of Attaching the Ping Sensor
Standard Servo.JPG
IMG_0622.JPG
IMG_0640.JPG
IMG_0639.JPG
The sensor I used on my robot that will help it avoid walls or objects in its trajectory is the Ping Ultrasonic Range Finder. The sensor will be situated on a standard servo, which can be purchased at your local Radio Shack, and the whole platform will be placed on the front part of the tank. Every time the robot gets within 10 cm of an object, the servo will turn both sides and then the program in the Arduino decides which side is most clear for the robot to pass through.

The first step to this is to attach the Male Servo Extension to the ping sensor so that it can connect from the front of the tank to the middle. Next, tape the ping sensor with the extension on top of the Standard Servo so that it wont move when the servo turns both 90 and 180 degrees(Left or Right).

There are three pins on the sensor, ground, 5v, and signal. The ground obviously will be connected to ground, the 5v to the Arduino's regulated pin, and the signal pin on pin 7 of the Arduino.

Step 5: Power Supply

Picture of Power Supply
Misc 019.JPG
IMG_0625.JPG
Okay, so for the Arduino I bought a DC Power Plug(Size N) and 9V Battery Snap Connectors, which can be purchased at your local Radio Shack for about $5. For the power supply for both duel motors in the tank, I used 4 D Size Batteries and purchased a 4 D Battery Holder for $2.

For the Arduino power supply, you would have to solder the DC Power Plug to the 9V Snap Connector. Then for the motor power supply, you would have to just connect the Battery holder straight to the Breadboard containing the SN754410NE motor driver.

Step 6: Putting Everything Together

Once every step is completed, now its time to put everything together. First we would need to attach the Arduino and the Breadboard on to the piece of HDPE. Then, attaching the Ping sensor with the servo to the front of the robot using hot glue. Then comes the part where you would have to attach both battery power supplies, which will power both the motors and the Arduino. These can be place to your preference, but I attached them right next to the Arduino and the Breadboard. After everything is attached and secured you can now wire everything up and turn on the Arduino to watch it run.

Step 7: A.A.T. Source Code

Picture of A.A.T. Source Code
SketchPart1.bmp
SketchPart2.bmp
Sketch Part3.bmp
SketchPart4.bmp
Okay, so after the construction of your robot it is now time to program it. The program will tell the robot when to move and stop in order to avoid collision with an object. I've had many failed attempts in writing this sketch and after a couple of days without sleep I've managed to finish it.

First, the program will tell the robot to move in a forward direction until it is within 10 cm away from an object. If it is in this range the program will now tell the robot to stop and scan both sides using the Ping sensor. Once both sides been scanned the program can now determine which side is most clear and safest for the robot to move towards that direction. If both sides aren't clear and have objects blocking the robots' way, it will turn a full 180 degrees and continue its trajectory without colliding.

The sketch for this robot can be found in the link below. Feel free to use it and modify it to your preference.
landy31 year ago

You can buy the everything used in this robot in
http://www.smartarduino.com/search.php?Keyword=tan...

tu.png
Raphango1 year ago
I apreciate so much your initiative! Really! Congratulations! Keep improving your abilities and you can turn out to be a great robotics engineer some day!
turtledrake2 years ago
Great Project!
Two things:
1: You should use perfboard instead of a breadboard for a cleaner and more permanent circuit
2: Radioshack sucks, don't go there. You will be a happier teenager, and not as broke, too.
looking at the sketch i have not been able to load it correctly, was wondering what is different from the link to the 4 pics you have. the "sketch check" mentions that you dont have a servo type, and i am not sure what pin you are using on the arduino for the servo. I am thinking it is #8 but i have not scanned through the sketch. any help would be nice, i am new and just starting out. thanks.
martzsam2 years ago
*hundreds of people chanting*

"Video! Video! Video! Video!"
vek112 years ago
Hi again, I started using the l293one motor driver without the ping or anything else. I want to ask you how many volts should the battery be and is it normal for the l293 to be very hot very quickly? Heres my program btw:

int motorpin1= 3;
int motorpin2= 4;
int enablepin= 9;
int motorpin3= 5;
int motorpin4= 6;
int enablepin2= 10;

int leftdist, rightdist;
long duration;

void setup()
{
pinMode(motorpin1, OUTPUT);
pinMode(motorpin2, OUTPUT);
pinMode(enablepin, OUTPUT);
pinMode(motorpin3, OUTPUT);
pinMode(motorpin4, OUTPUT);
pinMode(enablepin2, OUTPUT);
digitalWrite(enablepin, HIGH);
digitalWrite(enablepin2, HIGH);
}

void loop()
{

digitalWrite(motorpin1, HIGH);
digitalWrite(motorpin2, HIGH);
digitalWrite(motorpin3, HIGH);
digitalWrite(motorpin4, HIGH);
}
if the next obstruction to the robot's path is far away (i.e. across the room) wouldn't the ping method return "0" and since 0 < 10 the robot would think it ran in to something and search for a better route?
vek113 years ago
I have a question. Instead of using the motor driver, could I just use a motor shield?
That-One-Kid (author)  vek113 years ago
Yes you can use a motor shield. But since i was too lazy and didn't want to go to my local Radio shack, i decided to make my own.
Alright..also, is the code the same if I used a motor shield?
That-One-Kid (author)  vek113 years ago
It should be, there aren't many differences with the SN754410NE motor driver and the L293D motor driver. They're pretty much the same thing except that the SN754410NE is made by Texas Instruments.
okay, thanks bro!