Introduction: DIY Phone Controlled FPV Rover (Fast & Agile)

Let's build a Bluetooth/ WiFi controlled FPV Drone! RoverBot is a highly educational Arduino based ATV-drone. It's simple to make, easy to program and is a great starter project for hobbyists! The bot is very fast and agile, not to mention of it carrying two "29,000 rpm" motors! It can surely outrun humans regardless of the terrain you're on!

This RoverBot is a soft prototype. My next agenda is to make v2.0 water resistant, shockproof and dirt-proof. The next one would probably carry metal-gearboxes and long range TX RX modules.

How Do You Control It?
RoverBot is based on the famous Arduino development board. Since Arduino supports a wide variety of shields and modules (RC/ WiFi/ Bluetooth), you can choose any type of communication. For my setup, I'm currently using my JY-MCU Bluetooth module, as seen in my previous robot project. You can control RoverBot with your smartphone (via app) and display the FPV footage on another smartphone. Although, Bluetooth has limitations when it comes to range, that's why I'm planning to buy a xBee module to get at least 1km of control.

Endless Possibilities! Ideas!
- Rescue Drone (ex. Redcross Drone)
- Home Surveillance Bot
- Scientific Research Data logging Bot
- Laser Tag FPV Bots!

RoverBot is equipped with:
- 2x Tamiya PlamaDash Motors (29,000rpm - Carbon Brushed)
- Tamiya Twin Gearbox (Configured @58:1 gear ratio)
- Tamiya Track and Wheels Set (With Peg Board)
- 7.4v - 950mAh Turningy LiPo Battery
- Pololu 2x30A Motor Driver
- JY-MCU Bluetooth Module
- 5MP Wireless IP Camera
- Arduino Uno

Building The Bot In 15 Minutes (Fast Forward)

TAKE NOTE: To prevent the brushes from wearing out quickly, the Rover's motor driver is set to half speed (200/400) . Remember, these motors are designed to operate at 3v not 7.4v.
____________________________________________________________

FPV In Action:

____________________________________________________________

Garage Test - Drifting On Tiles

Indoor Test:



Outdoor Off-road Garden Test:



The Phone App/ Interface - Used on my 1KG Sumobot

Please Support My FB Page: https://www.facebook.com/TechBuilder

Step 1: Photo Gallery - FPV Rover in Action (update: 5/10/14)

Here are more photo's of RoverBot. Thank you guys for voting! I hope you enjoy the project!

Step 2: Tools & Materials

Here's the list of my parts. BTW, wait for a thanksgiving sale in Pololu.com, I saved 55% from their ridiculous discounts.

Attention! Read First Before Purchasing
I bought most of my parts locally, that includes all the Tamiya products and my Arduino Uno clone, the rest were bought online. Please canvas for cheaper prices. Compared to where I buy Tamiya products, Pololu retails Tamiya kits that costs 2x more. If you live in the Philippines then you are lucky enough to have "Lil's Hobby Shop" (located @ SM Megamall & Glorietta 4).

Parts & Matterials (50% Alternatives):
- Arduino UNO R3 Clone
- Pololu Dual VNH5019 Motor Shield (2x30A)
- JY-MCU Bluetooth Module (10-15m Range)
- 2x Tamiya Plasma Dash Motors (Fastest Mini Model)
- Tamiya Twin Motor Gearbox Set (stock motors included)
- Tamiya Universal Plate Set
- Tamiya Track & Wheel Set
- 2 cell 950mAh LiPo Battery
- IP Camera (WiFi Cam)
- Super Glue Bottle
- Sugru Sachet/ Hot Glue

Tools:
- Leatherman
- Screwdriver Set
- Dremel Rotary Tool

Step 3: Assemble the Twin Gearbox

Time to unbox the gearbox! Simply follow the instruction manual or just refer to the video tutorial below. The Tamiya Twin-Gearbox should come with two stock motors, grease, wrench, gears & housing. 

HUGE REMINDER: USE THE "58:1" GEAR RATIO!

Tips & Reminders:
- Grease the gears after assembling the gearbox. (not before)
- Don't forget the metal spacers, or the gearbox will screech.
- Replace The Stock Motors With Tuned Motors (go to step #3)
- Go for the 58:1 gear ratio, it's faster than the 204:1 gear ratio.

I'll be posting my tutorial on the Twin-Gearbox assembly soon..

Sparkfun - Tamiya Twin Gearbox Assembly Tutorial

Dual Motor GearBox: 
- Buy From Sparkfun
Buy From Pololu

Step 4: Motor Upgrades!

If you haven't explored the world of Tamiya yet, their 4WD mini series offers a wide selection of fine tuned motors, gearboxes, wheels & tracks. The Twin-Gearbox includes two Mabuchi (stock) motors, they only run for about 10,000 rpm, that's kind of slow for rover drone designed to be fast and agile.

So far Plasma Dash Motors are still the fastest in Tamiya's 4WD mini motor series. The motors may be pricey but, you'll get the most out of your money. It's a carbon brushed motor that spins 29,000 rpm (@3v) and 36,000rpm (@7v). The motors are designed to operate with a 3v power source, increasing the voltage would result to a higher rpm rate but would wear out the c.brushes a lot quicker. It would be ideal to stick with a 3v-6v output. With the Pololu 2x30 Motor Driver and a 2 cell LiPo battery, the Arduino's program must be set to a max speed of 320/400, you'll soon find out what this means in the coding step/ page. 

Stock Motors (Mabuchi FA-130RA)
If you guys are curious, the Twin-Gearbox comes with two Mabuchi FA1-30 stock motors. They operate at voltages between 1.5v - 3v. Overpowering it would result to the burning of brushes. There's a downloadable datasheet below with a much detailed description of the motors.  

So Why Not Go Brushless?
BL motors cost more, draw more current and isn't available for the mini motor format (size). 

Plasma Dash vs. Stock Motors:
If you want to make your bot a lot faster then upgrade them with two Plasma Dash motors. The Plasma Dash is 3x faster compared to the stock motors that came with the Twin-Gearbox set. So what are the downsides of the upgrade? Obviously, a faster motor needs larger batteries and a higher Ampere rate



Step 5: Choosing Your Motor Driver

I've been using the Pololu Dual VNH5019 for over three years. Pololu's shield can run two 30 ampere brushed motors! Pololu has done a great job. The shield is bloody genius! It performs really well in competitions, it's extremely reliable and virtually indestructible! :D The Arduino R3 Motor Shield is also a great choice, but can only support 4A motors. DealExtreme on the other hand sells cloned versions for half the price, I haven't tried them yet but the reviews are good.

My Preferred Choices:
1st.) Pololu Dual VNH5019 (2x30 Amperes) - $49 ($35 Christmas)
2nd.) DX Dual VNH Clone (2x30 Amperes) - $24
3rd.) Arduino R3 Motor Shield (2x4 Amperes) - $25
4th.) DX, R3 Motor Shield Clone (2x4 Amperes) - $13

Want to save money? Make one for only $8.00! Read more about this in the next page!
Or go directly to my instructable guide: DIY Arduino Motor Shield [for only $8!]

Step 6: OPTIONAL: Build Your Own Motor Driver (for Only $8!)

THIS STEP IS OPTIONAL, YOU CAN SKIP IT RIGHT AWAY!

Since most hobbyist prefer to be more practical, you can consider making one for only $8.00!
You can read my full instructable guide here: DIY Arduino Motor Shield [for only $8!] (L298N 2x4A)
__________________________________
Specs:
Voltage Range: 5- 50 volts
Current Range: 2-4 Amperes
Power: 25w @75°C
Working Temparature: -40°C to 150°C
Board Compatibility: Arduino Uno
Motor Outputs: 2 Motors (Left & Right)
Possible Robot Movements: Left, Right, Forward, Backward & etc..
PWM Pins: [12&11]  [6&5]

Step 7: Assemble the Track Set

After finishing the Twin-Gearbox's assembly, you can now unbox your plate and track set. When you open the track set, you'll find 1 gear wheel and 3 types of rollers. Don't follow the manual, we will be using a different configuration.

Steps [Simple Refer To The Photo or Video]:
1st.) Mount the Twin-Gearbox by screwing it on the last hole of the plate set.
2nd.) Push the gear-wheel toward's the twin-gearbox's axle.
3rd.) Screw the 1st hole of the L-shaped mounts on the 6th hole of the plate set. 
4th.) The largest roller goes to the 1st hole of the L-shaped mounts.
5th.) Mount the rear roller's mount at the last hole of the plate set. 
6th.) The rear end of the plate set uses medium sized rollers.
7th. ) You won't be needing the small rollers.

Step 8: Mount the Arduino & Motor Driver

Simply screw the Arduino in place then stack the motor driver above it. Buy the smaller plate set or cut a piece of acrylic set if you want to suspend your Arduino. You can also use standoffs to replace the plastic suspender. 

Step 9: Connect the Bluetooth Module

You can buy the Bluetooth Module from DX.com, for $8, don't worry about the shipping, it's free. There's a gap between the Arduino board and Twin-Gearbox, better use that gap for the BT module. I used a blob of sugru to mount the Bluetooth module.

How Does It Work?
So far, I know that the app sends characters/ bytes to your Arduino board via Bluetooth (serial communication). Your Arduino, then decodes these by using conditional statements. (will be discussed on the programming page/ step)

Wiring Instructions:
- "TX of Bluetooth Module" goes to "RX of Arduino"
- "RX of Bluetooth Module" goes to "TXof Arduino"
- "VCC of Bluetooth Module" goes to "3.3v of Arduino"
- "GND of Bluetooth Module" goes to "GND of Arduino"
- The State & Key pins of the BT modules are unused. 
__________________________________________________
Upgrade Please:
Better upgrade the Bluetooth with a RF/ xBee/ WiFI transceiver for a longer range of transmission but if you prefer using a smartphone and app, you can stick with the BT module, although you would have a limited range of 20m.

Proximity sensors are optional, you don't need them.


Step 10: Mounting the IP Camera

Sorry but it's up to you on finding a cheap IP camera. I bought mine locally from a random store I saw weeks ago. 

IP cams connect to WiFi networks, that means that the camera doesn't need a separate Arduino shield for data transmission because the camera itself has a built-in WiFi transmitter. All you need is to power and connect it to a 2.7GHz antenna to extend the range. My IP cam requires a +5v power supply, luckily Arduino has a regulated +5v pin, that's why I don't have to make another 7805 regulator for my cam.

Step 11: Connect the Battery

Lithium Polymer batteries are probably the most powerful batteries existing today. They are small in size, has a very high battery capacity, and has a high "c" rating. LiPos are also 7x-10x more power than AA (NiCd/ NiMH) batteries.

Risks Of Lithium Polymer:
We all know that Lithium-Polymers bloat, and when they bloat they start to become useless. LiPo batteries are high maintainance batteries that need to be recharged once in every 2 weeks otherwise they'll bloat. LiPos also need special balancing chargers, trickle chargers would destroy them.

Step 12: The Arduino Codes (C++)

Simply upload the sketch to your Arduino. If you have a Pololu VNH5019 Motor Driver, the codes would work like magic! BTW, you'll need to download and install the library in order for the codes to work.
__________________________________________________________________
#include "DualVNH5019MotorShield.h"
DualVNH5019MotorShield md;
char dataIn='S';char determinant;char det;int vel = 0; //Bluetooth Stuff
//int power = 4; // Remove This To Enable Tollge Switch #2
int overdrive = 13; //Press Toggle Switch #1, the pin13 LED will light up

void setup(){
Serial.begin(9600);md.init();
/*pinMode(power , OUTPUT);*/ //toggle switch function
pinMode(overdrive, OUTPUT);
}

void loop(){ det = check();

while (det == 'F') // F, move forward
{md.setSpeeds(vel,vel);det = check();}

while (det == 'B') // B, move back
{md.setSpeeds(-vel,-vel);det = check();}

while (det == 'L') // L, move wheels left
{md.setSpeeds(vel/4,vel);det = check();}

while (det == 'R') // R, move wheels right
{md.setSpeeds(vel,vel/4);det = check();}

while (det == 'I') // I, turn right forward
{md.setSpeeds(vel,vel/2);det = check();}

while (det == 'J') // J, turn right back
{md.setSpeeds(-vel,-vel/2);det = check();}

while (det == 'G') // G, turn left forward
{md.setSpeeds(vel/2,vel);det = check();}

while (det == 'H') // H, turn left back
{md.setSpeeds(-vel/2,-vel);det = check();}

while (det == 'S') // S, stop
{md.setSpeeds(0,0);det = check();}

//---------------------Toggle switch code------------------//
/* while (det == 'U')
{digitalWrite(power, HIGH);det = check();}
while (det == 'u')
{digitalWrite(power, LOW);det = check();}*/
//---------------------Mains Power------------------//
while (det == 'W')
{digitalWrite(overdrive, HIGH);det = check();}
while (det == 'w')
{digitalWrite(overdrive, LOW);det = check();}
}

int check()
{if (Serial.available() > 0) {dataIn = Serial.read();
if (dataIn == 'F'){determinant = 'F';}
else if (dataIn == 'B'){determinant = 'B';}else if (dataIn == 'L'){determinant = 'L';}
else if (dataIn == 'R'){determinant = 'R';}else if (dataIn == 'I'){determinant = 'I';}
else if (dataIn == 'J'){determinant = 'J';}else if (dataIn == 'G'){determinant = 'G';}
else if (dataIn == 'H'){determinant = 'H';}else if (dataIn == 'S'){determinant = 'S';}
else if (dataIn == '0'){vel = 400;}else if (dataIn == '1'){vel = 380;}
else if (dataIn == '2'){vel = 340;}else if (dataIn == '3'){vel = 320;}
else if (dataIn == '4'){vel = 280;}else if (dataIn == '5'){vel = 240;}
else if (dataIn == '6'){vel = 200;}else if (dataIn == '7'){vel = 160;}
else if (dataIn == '8'){vel = 120;}else if (dataIn == '9'){vel = 80;}
else if (dataIn == 'q'){vel = 40;}else if (dataIn == 'U'){determinant = 'U';}
else if (dataIn == 'u'){determinant = 'u';}else if (dataIn == 'W'){determinant = 'W';}
else if (dataIn == 'w'){determinant = 'w';}}return determinant;}

Step 13: The Android APP Interface

APP Download:Arduino Bluetooth RC Car (Android Only)
______________________________________________
Steps/ Procedures:
1st.) Download App in google play
2nd.) Turn your bluetooth on, and open the app
3rd.) Establish a bluetooth connection betweeen your phone
Go to Settings> Press Connect> Press LINVOR (Your BT Device)
4th.) Wait for the red light to turn green. And Your'e Done!
______________________________________________

My Previous Robot Project Using The Phone Interface

Troubleshooting: If robot doesn't respond, move the speed slider (Left to Right), this bug shows up sometimes.

Step 14: You're Done! Mod It!

Future Plans/ Mods:
- Replace Bluetooth with xBee transceiver module for longer range!
- Larger battery capacity (2 cell - 1,300mAh LiPo)
- Mounted Airsoft Mechanism
- Gripper/ Mechanical Arm
- Add A Water-Tight Case (for electronics)

Ideas! What To Do? 
1.) Laser Tag RoverBot - Create 4x FPV RoverBots, add a laser turret at the back of each bot. The goal is to hit the opponent's at the laser sensor. Every hit sends send a score to the laptop via WiFi. When the game ends, players can view their score on laptop and also view the recorded FPV replay footage.
2.) Autonomous Airsoft Rover Turret - multiple RoverBots protecting your property. All gathering data and sharing them to one computer via WiFi. Uses IP cam to detect intruder, if face = not recognize then fire airsoft at target.  
___________________________________________________

!>>>>VIDEOS COMING SOON<<< !

Step 15: VIDEO Footage

TAKE NOTE: The Rover's motor driver is set to half speed (200/400) to avoid brushes for wearing out quickly. Remember, these motors are designed to operate at 3v. You can use full speeds but only do it for short periods of time (boost/ burst mode).
____________________________________________________________

Garage Test - Drifting On Tiles


Indoor Test:



Outdoor Off-road Garden Test:
Arduino Contest

Grand Prize in the
Arduino Contest

Robot Contest

First Prize in the
Robot Contest

Full Spectrum Laser Contest

Participated in the
Full Spectrum Laser Contest