This research paper presents the design and implementation of a Bluetooth Controlled Car with LED Indicators. The system demonstrates wireless communication, motor control, and directional signaling using Arduino Uno, HC-05 Bluetooth module, and L298N motor driver. The addition of LED indicators provides real-time feedback, making it an educational and practical project for robotics learning. This paper outlines the system overview, setup, working principle, tools, and future scope.
Written By
Istiak Ahmed Riad
Sub Executive, Fall2024
R&D Team - AUST Robotics Club
Department of Electrical & Electronic Engineering
Ahsanullah University of Science and Technology
1.Arduino Uno (or any compatible Arduino board)
2.DC Motors (4 motors for movement control)
3.Motor Driver (L298N or L293D)
4.LEDs (5 LEDs: 2 for Forward, 2 for Backward, and 1 for Blinking)
5.Resistors (for LEDs and other components as needed) 6.Jumper Wires (for connections)
7.Power Supply (for motors, Arduino, and other components)
8.Breadboard (for prototyping connections)
9.Bluetooth Module (HC-05 or HC-06 for remote control)
1.Motor Driver VCC → 5V (or external power for motors)
2.Motor Driver GND → GND (Arduino ground)
3.Motor Driver 5V → 5V (Arduino power supply for logic)
Arduino to Motor Driver:
1.IN1 → D8
2.IN2 → D9
3.IN3 → D10
4. IN4 → D11,
5.ENA → Jumper (or D5 using PWM for speed control)
6.ENB → Jumper (or D6 using PWM for speed control)
HC-05 Bluetooth:
1.TX → RX
2.RX → TX
3.VCC → 5V
4. GND → GND
Forward LEDs:
ForwardLed1 → D8 ( Pin 8 on Arduino)
ForwardLed2 → D9 ( Pin 9 on Arduino)
Backward LEDs:
BackwardLed1 → D10 ( Pin 10 on Arduino)
BackwardLed2 → D11 ( Pin 11 on Arduino)
Blinking LED → D12 (Pin 12 on Arduino)
char data; // Variable to store received data
// Define motor control pins
#define motorPin1 3
#define motorPin2 5
#define motorPin3 6
#define motorPin4 7
// Define LED pins
#define forwardLed1 8 // First LED for Forward
#define forwardLed2 9 // Second LED for Forward
#define backwardLed1 10 // First LED for Backward (Left-side)
#define backwardLed2 11 // Second LED for Backward (Right-side)
#define blinkLedPin 12 // Blinking LED
// Variables for blinking LED
unsigned long previousMillis = 0; // Stores the last time the LED was updated
const long blinkInterval = 0; // Blink interval in milliseconds (500ms = 0.5 seconds)
bool blinkLedState = LOW; // Current state of the blinking LED
void setup() {
Serial.begin(9600); // Start serial communication at 9600 baud rate
// Set motor control pins as output
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
// Set LED pins as output
pinMode(forwardLed1, OUTPUT);
pinMode(forwardLed2, OUTPUT);
pinMode(backwardLed1, OUTPUT);
pinMode(backwardLed2, OUTPUT);
pinMode(blinkLedPin, OUTPUT); // Set blinking LED pin as output
}
void loop() {
// Handle blinking LED
unsigned long currentMillis = millis(); // Get the current time
if (currentMillis - previousMillis >= blinkInterval) {
previousMillis = currentMillis; // Save the last time the LED was updated
blinkLedState = !blinkLedState; // Toggle the LED state
digitalWrite(blinkLedPin, blinkLedState); // Update the blinking LED
}
// Handle motor control and other LEDs
if (Serial.available() > 0) {
data = Serial.read(); // Read received data
// Control motor movement and LEDs based on received data
switch (data) {
case 'F': // Move Forward
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
// Turn on Forward LEDs
digitalWrite(forwardLed1, HIGH);
digitalWrite(forwardLed2, HIGH);
// Turn off Backward LEDs
digitalWrite(backwardLed1, LOW);
digitalWrite(backwardLed2, LOW);
break;
case 'B': // Move Backward
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
// Turn on Backward LEDs
digitalWrite(backwardLed1, HIGH);
digitalWrite(backwardLed2, HIGH);
// Turn off Forward LEDs
digitalWrite(forwardLed1, LOW);
digitalWrite(forwardLed2, LOW);
break;
case 'L': // Turn Left
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
// Turn on Left-side Backward LED
digitalWrite(backwardLed1, HIGH);
digitalWrite(backwardLed2, LOW);
// Turn off Forward LEDs
digitalWrite(forwardLed1, LOW);
digitalWrite(forwardLed2, LOW);
break;
case 'R': // Turn Right
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
// Turn on Right-side Backward LED
digitalWrite(backwardLed1, LOW);
digitalWrite(backwardLed2, HIGH);
// Turn off Forward LEDs
digitalWrite(forwardLed1, LOW);
digitalWrite(forwardLed2, LOW);
break;
case 'S': // Stop
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
// Turn off all directional LEDs
digitalWrite(forwardLed1, LOW);
digitalWrite(forwardLed2, LOW);
digitalWrite(backwardLed1, LOW);
digitalWrite(backwardLed2, LOW);
break;
}
}
}
1.A smartphone app is used to send directional commands (forward, backward, left, right) through Bluetooth.
2.The HC-05 Bluetooth module receives these commands and transfers them to the Arduino via serial communication.
3.The Arduino processes and interprets the received commands.
4.Based on the instructions, Arduino sends appropriate signals to the L298N motor driver to control the DC motors.
5.At the same time, the Arduino activates the corresponding directional LEDs (front, back, left, or right) for visual feedback.
6.The DC motors then drive the car in the desired direction, while LEDs provide real-time indication of movement.
7.The system ensures smooth coordination between command input and physical response, reducing delays.
8.Directional LEDs make the system more user-friendly and safer, as movement can be tracked visually. This setup reflects real-world vehicle signaling concepts and helps learners understand embedded system integration.
The Bluetooth Controlled Car with LED Indicators is an educational yet practical robotics project. It combines wireless communication, motor driving, and LED-based feedback system in a simple but effective way. The integration of LEDs enhances user interaction by visually representing the car’s movement direction. Its modular nature allows future upgrades, such as developing a Bluetooth-controlled drone or a multi-functional robot, making it a foundation for more advanced research in robotics and IoT.