Is it possible to control quadcopter using android phone?

I've been doing a lot of research about this and I have not been able to find a proper tutorial that clearly explains how to use an android phone to control a quadcopter.. what I mean is to change a transmitter and just use an android phone and Bluetooth to control the quadcopter..is this possible to do?
if it is.. please share some advices as I am planning to building a diy quadcopter that can be controlled using an android phone through Bluetooth.

thanks!

Yes, it is possible, hazardous, complicated, and if you have to ask, you ain't ready to tackle it. WiFi, not Bluetooth.

This how almost every consumer quadcopter or hexcopter is controlled. Usually via wifi, since bluetooth doesn't have the range. Quadcopters and hexcopters like this are readily available nowadays (at least in the US).

But do you know any tutorial that would explain how to do it?
I'm not really looking for range right now.. I just want to know if its possible to do it and what is the way to do it?

I'm not really looking for range right now.

You want to build an expensive quad-copter using hardware that you KNOW won't work. Why? Minimize the frustration by starting with the right hardware.

Bluetooth is NOT the right hardware.

I know it is not but I've seen people do it...It is possible to do it
I just don't know where to start
I got as far as to turning the motors on and changing the speed
Now I want to know how I would be able to control them

JohnSmith1234:
I got as far as to turning the motors on and changing the speed

Great. Show us the code and a system diagram.

Schematic with MPU 6050.. how do I use MPU 6050 to control quadcopter orientation or atleast auto level it when I release the control buttons?

JohnSmith1234:
Schematic with MPU 6050.. how do I use MPU 6050 to control quadcopter orientation or atleast auto level it when I release the control buttons?

Wherever you got your schematic from should have working code which apparently is in your previous code.

So I am not understanding your problem.

If you are expecting full working code, you had better be prepared to pay for it. I certainly wouldn't be giving it out free.

I made the schematic and the code..
the arduino pictures and the esc and motor pictures on the schematic are from Google I just put them all together.

Also, Im not expecting a full working code although that would be nice to have
Im here asking for help and to learn how this would be done because I've done enough research and not one of them explains clearly how this can be done properly

The first thing you should learn is how to post code in the forum properly. Read the sticky post, first one. Then go back and read reply #1 again.

I know how to post codes.. I just don't have the .ino file itself because I'm not allowed to download arduino on my work computer.
I just wrote the code from memory

JohnSmith1234:
I know how to post codes.. I just don't have the .ino file itself because I'm not allowed to download arduino on my work computer.
I just wrote the code from memory

You definitely don't know how to post code. Trust me. Go and read the sticky post. It involves using code tags. If you really wrote from memory you should have told us that.

Happy?

#include<Servo.h>    




Servo esc1; // pin 9 red wing right 

Servo esc2; // pin 10 black wing left 

//Servo esc3; // pin 11 black wing back 

Servo esc4; // pin 12 red wing back     

int value;

void setup() 

{

 esc1.attach(9); //attach 1st esc to pin9

 esc2.attach(10); //attach 2nd esc to pin10

// esc3.attach(11); //attach 3rd esc to pin11

 esc4.attach(12); //attach 4th esc to pin12   

 Serial.begin(9600);

 esc1.write(50); //motor off

 esc2.write(50); //motor off

// esc3.write(50); //motor off

 esc4.write(50); //motor off

} 







void loop() 

{ 

  if (Serial.available()>0) // checks if bluetooth connect available

  {

    value = Serial.read(); //reads variable from bluetooth

    }

    if (value == 'S') // stop button

    // turns off all motors

    {

      esc1.write(50);

      esc2.write(50);

      //esc3.write(50);

      esc4.write(50);

    }




   if (value == 'C') //switch true

   // turn on motor lowest speed

   {

    esc1.write(60);

    esc2.write(70);

    //esc3.write(60);

    esc4.write(60);

    

   }




   if (value == 'c')//switch false

   // turn on motor max speed

   {

    esc1.write(90);

    esc2.write(90);

    //esc3.write(90);

    esc4.write(90);

    

   }

   if (value == 'U') //forward

   //forward control

   {

    esc1.write(60);

    esc2.write(70);

    //esc3.write(90);

    esc4.write(90);

   }

   if (value == 'u') //when forward button release - Need to know how to level 

   {

    esc1.write(60);

    esc2.write(70);

   // esc3.write(60);

    esc4.write(60);

    

   }

   if (value == 'D') //back

   //forward control

   {

    esc1.write(90);

    esc2.write(90);

    //esc3.write(60);

    esc4.write(60);

   }

   if (value == 'd') //when backward button release - need to know how to level

   {

    esc1.write(60);

    esc2.write(70);

   // esc3.write(60);

    esc4.write(60);

    

   }

   if (value == 'L') //left

   {

    esc1.write(90);

    esc2.write(70);

    //esc3.write(90);

    esc4.write(60);

   }

   if (value == 'l') //when left button release - need to know how to level

   {

    esc1.write(60);

    esc2.write(70);

    //esc3.write(60);

    esc4.write(60);

   }




   if (value == 'R') //right

   {

    esc1.write(60);

    esc2.write(90);

   // esc3.write(60);

    esc4.write(90);

   }

  if (value == 'r') ////when right button release - need to know how to level
  {

    esc1.write(60);

    esc2.write(70);

   // esc3.write(60);

    esc4.write(60);

    

  }

   




}

JohnSmith1234:
Happy?

#include<Servo.h>    

Servo esc1; // pin 9 red wing right

Servo esc2; // pin 10 black wing left

//Servo esc3; // pin 11 black wing back

Servo esc4; // pin 12 red wing back

int value;

void setup()

{

esc1.attach(9); //attach 1st esc to pin9

esc2.attach(10); //attach 2nd esc to pin10

// esc3.attach(11); //attach 3rd esc to pin11

esc4.attach(12); //attach 4th esc to pin12

Serial.begin(9600);

esc1.write(50); //motor off

esc2.write(50); //motor off

// esc3.write(50); //motor off

esc4.write(50); //motor off

}

void loop()

{

if (Serial.available()>0) // checks if bluetooth connect available

{

value = Serial.read(); //reads variable from bluetooth

}

if (value == 'S') // stop button

// turns off all motors

{

esc1.write(50);

esc2.write(50);

//esc3.write(50);

esc4.write(50);

}

if (value == 'C') //switch true

// turn on motor lowest speed

{

esc1.write(60);

esc2.write(70);

//esc3.write(60);

esc4.write(60);

}

if (value == 'c')//switch false

// turn on motor max speed

{

esc1.write(90);

esc2.write(90);

//esc3.write(90);

esc4.write(90);

}

if (value == 'U') //forward

//forward control

{

esc1.write(60);

esc2.write(70);

//esc3.write(90);

esc4.write(90);

}

if (value == 'u') //when forward button release - Need to know how to level

{

esc1.write(60);

esc2.write(70);

// esc3.write(60);

esc4.write(60);

}

if (value == 'D') //back

//forward control

{

esc1.write(90);

esc2.write(90);

//esc3.write(60);

esc4.write(60);

}

if (value == 'd') //when backward button release - need to know how to level

{

esc1.write(60);

esc2.write(70);

// esc3.write(60);

esc4.write(60);

}

if (value == 'L') //left

{

esc1.write(90);

esc2.write(70);

//esc3.write(90);

esc4.write(60);

}

if (value == 'l') //when left button release - need to know how to level

{

esc1.write(60);

esc2.write(70);

//esc3.write(60);

esc4.write(60);

}

if (value == 'R') //right

{

esc1.write(60);

esc2.write(90);

// esc3.write(60);

esc4.write(90);

}

if (value == 'r') ////when right button release - need to know how to level
  {

esc1.write(60);

esc2.write(70);

// esc3.write(60);

esc4.write(60);

}

}

I am curious of the hold in place loop when you ...

  • get a low battery warning
  • get a txt
  • get a phone call

it will add a whole new level of excitement to the activity.