Arduino Bluetooth Controlled RC Car

3,627

468

6

Published

Introduction: Arduino Bluetooth Controlled RC Car

This time its a Arduino Bluetooth Controlled RC Car. Which can in any direction, have 2 front lights , have 2 back lights and also have a horn. Its controlled with an arduino uno and has 2 L298N Motor drivers , A bluetooth module HC-06 and have 2 18650 Li-ion batteries for the power supply.

Step 1: Things Needed+

Here's the things that included in this project.

  1. 4WD Chassis kit
  2. Bluetooth module HC-06
  3. Arduino UNO with cable.
  4. 2 L298N Motor drivers
  5. Double side tape.
  6. LEDs (White and Red).
  7. 220 ohm Resistors.
  8. 18650 Li-ion Batteries.
  9. 18650 Battery Holder(For 2 Batteries).
  10. Jumper wires.
  11. Cable ties.
  12. Smartphone

Step 2: Lower Part

First Assemble the lower part of the car as shown. Fix the back lights, Switches and the motors.

Step 3: Upper Part

Now fix the upper part components and install the upper deck. Make sure to take the lower part wires to the upper part. In the upper part there are the arduino uno, the battery holder with batteries, 2 motor drivers, the bluetooth module and the front lights.

Step 4: Connections...

Observe the circuit diagram carefully and then do all the connections in the correct way.

Step 5: Programing.....

Heres the code for the project.

#define light_FR 14 //LED Front Right pin A0 for Arduino Uno
#define light_FL 15 //LED Front Left pin A1 for Arduino Uno #define light_BR 16 //LED Back Right pin A2 for Arduino Uno #define light_BL 17 //LED Back Left pin A3 for Arduino Uno #define horn_Buzz 18 //Horn Buzzer pin A4 for Arduino Uno

#define ENA_m1 5 // Enable/speed motor Front Right #define ENB_m1 6 // Enable/speed motor Back Right #define ENA_m2 10 // Enable/speed motor Front Left #define ENB_m2 11 // Enable/speed motor Back Left

#define IN_11 2 // L298N #1 in 1 motor Front Right #define IN_12 3 // L298N #1 in 2 motor Front Right #define IN_13 4 // L298N #1 in 3 motor Back Right #define IN_14 7 // L298N #1 in 4 motor Back Right

#define IN_21 8 // L298N #2 in 1 motor Front Left #define IN_22 9 // L298N #2 in 2 motor Front Left #define IN_23 12 // L298N #2 in 3 motor Back Left #define IN_24 13 // L298N #2 in 4 motor Back Left

int command; //Int to store app command state. int speedCar = 100; // 50 - 255. int speed_Coeff = 4; boolean lightFront = false; boolean lightBack = false; boolean horn = false;

void setup() { pinMode(light_FR, OUTPUT); pinMode(light_FL, OUTPUT); pinMode(light_BR, OUTPUT); pinMode(light_BL, OUTPUT); pinMode(horn_Buzz, OUTPUT); pinMode(ENA_m1, OUTPUT); pinMode(ENB_m1, OUTPUT); pinMode(ENA_m2, OUTPUT); pinMode(ENB_m2, OUTPUT); pinMode(IN_11, OUTPUT); pinMode(IN_12, OUTPUT); pinMode(IN_13, OUTPUT); pinMode(IN_14, OUTPUT); pinMode(IN_21, OUTPUT); pinMode(IN_22, OUTPUT); pinMode(IN_23, OUTPUT); pinMode(IN_24, OUTPUT);

Serial.begin(9600);

}

void goAhead(){

digitalWrite(IN_11, HIGH); digitalWrite(IN_12, LOW); analogWrite(ENA_m1, speedCar);

digitalWrite(IN_13, LOW); digitalWrite(IN_14, HIGH); analogWrite(ENB_m1, speedCar);

digitalWrite(IN_21, LOW); digitalWrite(IN_22, HIGH); analogWrite(ENA_m2, speedCar);

digitalWrite(IN_23, HIGH); digitalWrite(IN_24, LOW); analogWrite(ENB_m2, speedCar);

}

void goBack(){

digitalWrite(IN_11, LOW); digitalWrite(IN_12, HIGH); analogWrite(ENA_m1, speedCar);

digitalWrite(IN_13, HIGH); digitalWrite(IN_14, LOW); analogWrite(ENB_m1, speedCar);

digitalWrite(IN_21, HIGH); digitalWrite(IN_22, LOW); analogWrite(ENA_m2, speedCar);

digitalWrite(IN_23, LOW); digitalWrite(IN_24, HIGH); analogWrite(ENB_m2, speedCar);

}

void goRight(){

digitalWrite(IN_11, LOW); digitalWrite(IN_12, HIGH); analogWrite(ENA_m1, speedCar);

digitalWrite(IN_13, HIGH); digitalWrite(IN_14, LOW); analogWrite(ENB_m1, speedCar);

digitalWrite(IN_21, LOW); digitalWrite(IN_22, HIGH); analogWrite(ENA_m2, speedCar);

digitalWrite(IN_23, HIGH); digitalWrite(IN_24, LOW); analogWrite(ENB_m2, speedCar);

}

void goLeft(){

digitalWrite(IN_11, HIGH); digitalWrite(IN_12, LOW); analogWrite(ENA_m1, speedCar);

digitalWrite(IN_13, LOW); digitalWrite(IN_14, HIGH); analogWrite(ENB_m1, speedCar);

digitalWrite(IN_21, HIGH); digitalWrite(IN_22, LOW); analogWrite(ENA_m2, speedCar);

digitalWrite(IN_23, LOW); digitalWrite(IN_24, HIGH); analogWrite(ENB_m2, speedCar);

}

void goAheadRight(){ digitalWrite(IN_11, HIGH); digitalWrite(IN_12, LOW); analogWrite(ENA_m1, speedCar/speed_Coeff);

digitalWrite(IN_13, LOW); digitalWrite(IN_14, HIGH); analogWrite(ENB_m1, speedCar/speed_Coeff);

digitalWrite(IN_21, LOW); digitalWrite(IN_22, HIGH); analogWrite(ENA_m2, speedCar);

digitalWrite(IN_23, HIGH); digitalWrite(IN_24, LOW); analogWrite(ENB_m2, speedCar); }

void goAheadLeft(){ digitalWrite(IN_11, HIGH); digitalWrite(IN_12, LOW); analogWrite(ENA_m1, speedCar);

digitalWrite(IN_13, LOW); digitalWrite(IN_14, HIGH); analogWrite(ENB_m1, speedCar);

digitalWrite(IN_21, LOW); digitalWrite(IN_22, HIGH); analogWrite(ENA_m2, speedCar/speed_Coeff);

digitalWrite(IN_23, HIGH); digitalWrite(IN_24, LOW); analogWrite(ENB_m2, speedCar/speed_Coeff); }

void goBackRight(){

digitalWrite(IN_11, LOW); digitalWrite(IN_12, HIGH); analogWrite(ENA_m1, speedCar/speed_Coeff);

digitalWrite(IN_13, HIGH); digitalWrite(IN_14, LOW); analogWrite(ENB_m1, speedCar/speed_Coeff);

digitalWrite(IN_21, HIGH); digitalWrite(IN_22, LOW); analogWrite(ENA_m2, speedCar);

digitalWrite(IN_23, LOW); digitalWrite(IN_24, HIGH); analogWrite(ENB_m2, speedCar);

}

void goBackLeft(){

digitalWrite(IN_11, LOW); digitalWrite(IN_12, HIGH); analogWrite(ENA_m1, speedCar);

digitalWrite(IN_13, HIGH); digitalWrite(IN_14, LOW); analogWrite(ENB_m1, speedCar);

digitalWrite(IN_21, HIGH); digitalWrite(IN_22, LOW); analogWrite(ENA_m2, speedCar/speed_Coeff);

digitalWrite(IN_23, LOW); digitalWrite(IN_24, HIGH); analogWrite(ENB_m2, speedCar/speed_Coeff);

}

void stopRobot(){

digitalWrite(IN_11, LOW); digitalWrite(IN_12, LOW); analogWrite(ENA_m1, speedCar);

digitalWrite(IN_13, LOW); digitalWrite(IN_14, LOW); analogWrite(ENB_m1, speedCar);

digitalWrite(IN_21, LOW); digitalWrite(IN_22, LOW); analogWrite(ENA_m2, speedCar);

digitalWrite(IN_23, LOW); digitalWrite(IN_24, LOW); analogWrite(ENB_m2, speedCar); } void loop(){ if (Serial.available() > 0) { command = Serial.read(); stopRobot(); //Initialize with motors stopped.

if (lightFront) {digitalWrite(light_FR, HIGH); digitalWrite(light_FL, HIGH);} if (!lightFront) {digitalWrite(light_FR, LOW); digitalWrite(light_FL, LOW);} if (lightBack) {digitalWrite(light_BR, HIGH); digitalWrite(light_BL, HIGH);} if (!lightBack) {digitalWrite(light_BR, LOW); digitalWrite(light_BL, LOW);} if (horn) {digitalWrite(horn_Buzz, HIGH);} if (!horn) {digitalWrite(horn_Buzz, LOW);}

switch (command) { case 'F':goAhead();break; case 'B':goBack();break; case 'L':goLeft();break; case 'R':goRight();break; case 'I':goAheadRight();break; case 'G':goAheadLeft();break; case 'J':goBackRight();break; case 'H':goBackLeft();break; case '0':speedCar = 100;break; case '1':speedCar = 115;break; case '2':speedCar = 130;break; case '3':speedCar = 145;break; case '4':speedCar = 160;break; case '5':speedCar = 175;break; case '6':speedCar = 190;break; case '7':speedCar = 205;break; case '8':speedCar = 220;break; case '9':speedCar = 235;break; case 'q':speedCar = 255;break; case 'W':lightFront = true;break; case 'w':lightFront = false;break; case 'U':lightBack = true;break; case 'u':lightBack = false;break; case 'V':horn = true;break; case 'v':horn = false;break;

} } }

Step 6: And Done

And done. I wish you a good luck on making your own Arduino bluetooth controlled RC Car.And If you like this project Please make sure to vote me in the contests in instructables!

Share

Recommendations

  • Creative Misuse Contest

    Creative Misuse Contest
  • Water Contest

    Water Contest
  • Oil Contest

    Oil Contest

6 Discussions

I am a student from Sweden that was thinking of doing this for a project in a course I'm studying, however I do not have any chassis for the car, would you mind telling me the measurements or sending a blueprint for the chassis over email?

Nice project can be spiced up using ultrasonic sensors to avoid obstacle, or if possible u can just adding a accelerometer can make it gravity controlled,
I

1 reply

Remember that theres a buzzer and the app is Arduino bluetooth RC Car

You will totally win, best of luck. But you will have to beat the other few who built the exact same thing as you.

1 reply