Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino-Controlled Bluetooth Robot with L298N Motor Driver

View and Edit Project In Cirkit DesignerImage of Arduino-Controlled Bluetooth Robot with L298N Motor Driver

Circuit Documentation

Summary

This circuit is designed to control a set of DC Mini Metal Gear Motors through an L298N 2A Dual Motor Driver Module with PWM Control, interfaced with an Arduino UNO microcontroller. The Arduino UNO also communicates with an HC-05 Bluetooth Module to receive control commands wirelessly. A 12V battery provides power to the system. The circuit is capable of driving the motors in forward and reverse directions, as well as turning on an LED connected to the Arduino.

Component List

Arduino UNO

DC Mini Metal Gear Motor

L298N 2A Dual Motor Driver Module with PWM Control

HC-05 Bluetooth Module

Battery 12V

Wiring Details

Arduino UNO

DC Mini Metal Gear Motors

L298N 2A Dual Motor Driver Module with PWM Control

HC-05 Bluetooth Module

Battery 12V

Documented Code

char t;

void setup() {
  pinMode(13, OUTPUT);   // left motors forward
  pinMode(12, OUTPUT);   // left motors reverse
  pinMode(11, OUTPUT);   // right motors forward
  pinMode(10, OUTPUT);   // right motors reverse
  pinMode(9, OUTPUT);    // LED
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()) {
    t = Serial.read();
    Serial.println(t);
  }

  if (t == 'F') {            // move forward (all motors rotate in forward direction)
    digitalWrite(13, HIGH);
    digitalWrite(11, HIGH);
  }

  else if (t == 'B') {      // move reverse (all motors rotate in reverse direction)
    digitalWrite(12, HIGH);
    digitalWrite(10, HIGH);
  }

  else if (t == 'L') {      // turn right (left side motors rotate in forward direction, right side motors don't rotate)
    digitalWrite(11, HIGH);
  }

  else if (t == 'R') {      // turn left (right side motors rotate in forward direction, left side motors don't rotate)
    digitalWrite(13, HIGH);
  }

  else if (t == 'W') {      // turn LED on or off)
    digitalWrite(9, HIGH);
  }
  else if (t == 'w') {
    digitalWrite(9, LOW);
  }

  else if (t == 'S') {      // STOP (all motors stop)
    digitalWrite(13, LOW);
    digitalWrite(12, LOW);
    digitalWrite(11, LOW);
    digitalWrite(10, LOW);
  }
  delay(100);
}

The code is designed to read characters from the serial input and control the motors and an LED based on the received character. Commands 'F', 'B', 'L', 'R', 'W', 'w', and 'S' correspond to forward, backward, left turn, right turn, LED on, LED off, and stop, respectively.