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 hours269
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.
Contact
Thanks to Jamaica Kaye Lopez, Mark Joshua Rodil, Peter Arellano, and Carlos Miguel Marabe.

Comments

Please log in or sign up to comment.