Maria Angeline Adajar
Published © Apache-2.0

Arduino Bluetooth Controlled Car

Build a Bluetooth-controlled car prototype using a smartphone app—learn wireless tech, microcontroller programming, and basic mechanics hand

BeginnerFull instructions provided24 hours396
Arduino Bluetooth Controlled Car

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
4 wheel car kit
×1
BOOST-DRV8711 DRV8711 Stepper Motor Driver BoosterPack
Texas Instruments BOOST-DRV8711 DRV8711 Stepper Motor Driver BoosterPack
×1
HC-05 Bluetooth Module
HC-05 Bluetooth Module
×1
9V battery (generic)
9V battery (generic)
×1
Jumper wires (generic)
Jumper wires (generic)
×1

Software apps and online services

Arduino IDE
Arduino IDE
Arduino BlueControl

Story

Read more

Schematics

Arduino Bluetooth Control Car

Code

Arduino Bluetooth Control Car

C/C++
int MOTORLEFT[2] = {2, 3};
int MOTORRIGHT[2] = {4, 5};
unsigned long millisflag;
boolean ismoving = false;

void setup() {
  Serial.begin(9600);
  Serial.setTimeout(50);
  for (int i = 0; i < 2; i++) {
    pinMode(MOTORLEFT[i], OUTPUT);
    pinMode(MOTORRIGHT[i], OUTPUT); // Corrected index from [2] to [i]
  }
}

void loop() {
  if (Serial.available()) {
    String Serialdata = Serial.readString();

    if (Serialdata.indexOf('A') > -1) {
      Serial.println("forward");
      moveForward(200); // Set speed to 200
      ismoving = true;
      millisflag = millis();
    }
    else if (Serialdata.indexOf("B") > -1) {
      Serial.println("backward");
      moveBackward();
      ismoving = true;
      millisflag = millis();
    }
    else if (Serialdata.indexOf("C") > -1) {
      Serial.println("right");
      turnRight();
      ismoving = true;
      millisflag = millis();
    }
    else if (Serialdata.indexOf("D") > -1) {
      Serial.println("left");
      turnLeft();
      ismoving = true;
      millisflag = millis();
    }
    else if (Serialdata.indexOf("E") > -1) {
      Serial.println("stop");
      moveStop();
      ismoving = true;
      millisflag = millis();
    }

    delay(200);
  }

  if (((millis() - millisflag) > 200) && ismoving) {
    moveStop();
    ismoving = false;
  }
}

void moveStop() {
  for (int i = 0; i < 2; i++) {
    digitalWrite(MOTORRIGHT[i], LOW);
    digitalWrite(MOTORLEFT[i], LOW);
  }
}

void moveForward(int speed) {
  // Use PWM to control motor speed
  analogWrite(MOTORRIGHT[0], speed);
  analogWrite(MOTORLEFT[0], speed);
  digitalWrite(MOTORRIGHT[1], LOW);
  digitalWrite(MOTORLEFT[1], LOW);
}

void moveBackward() {
  digitalWrite(MOTORRIGHT[0], LOW);
  digitalWrite(MOTORLEFT[0], LOW);
  digitalWrite(MOTORRIGHT[1], HIGH);
  digitalWrite(MOTORLEFT[1], HIGH);
}

void turnLeft() {
  digitalWrite(MOTORRIGHT[0], HIGH);
  digitalWrite(MOTORLEFT[0], LOW);
  digitalWrite(MOTORRIGHT[1], LOW);
  digitalWrite(MOTORLEFT[1], HIGH);
}

void turnRight() {
  digitalWrite(MOTORRIGHT[0], LOW);
  digitalWrite(MOTORLEFT[0], HIGH);
  digitalWrite(MOTORRIGHT[1], HIGH);
  digitalWrite(MOTORLEFT[1], LOW);
}

Credits

Maria Angeline Adajar
3 projects • 1 follower
I'm a Computer Engineering student passionate about hardware-software integration, data analytics, and embedded systems.
Thanks to Jamaica Kaye Lopez, Mark Joshua Rodil, Peter Arellano, and Carlos Miguel Marabe.

Comments