Driving the Future: DIY Bluetooth-Controlled Arduino Car
by Lee1999 in Circuits > Arduino
283 Views, 6 Favorites, 0 Comments
Driving the Future: DIY Bluetooth-Controlled Arduino Car
Today I will make the Bluetooth-controlled Arduino car using the 3D-printed chassis. the Arduino board is connected to motor drivers and various sensors to control the movement and functionality of the car. By pairing the Arduino with a Bluetooth module, such as HC-05 or HC-06, users can send commands from a Bluetooth-enabled device like a smartphone or a computer to control the car's movement, such as forward, backward, left, right, and other actions like turning on/off lights or sensors.
Supplies
- Arduino Uno R3
- Mounting Bracket
- DC Motor + Tires
- 18650 Battery
- Battery Case
- l298N motor driver
- Some M3 bolts and Nuts
These are all you need for this project. You also need to print the chassis.
If you're uncertain about which components are needed for this project, feel free to refer to the video description for further details and insights.
Soldering and Attach the Mouting Bracket to Motors
First, you need to solder the motors and attach the mounting bracket to the motors so you can attach the motors to the chassis later. You will also need wheels for these motors. I think you can do this if you are a beginner or a pro electronics learner. You only need 2 motors for this project.
Fix the Motors to the Chassis
After printing the chassis you may have a 3D printed part like this one. All the files are available for download, so make sure you check it out. You need for M3x10 to mount the motor to the chassis. It's quite easy, right?
Mounting the Battery Holder to the Chassis
Let's mount the battery holder to the chassis. You need 2 M3x10 to do that.
Mounting the Caster Wheel to the Chassis
Because the height of the caster wheel is pretty short so I have to print another part to increase the height. Then attach the caster wheel to the chassis using 4 M4x40.
Fix the L298N Motor Driver to the Chassis
Since the chassis is a 3D printed part, you need to add the nuts to the chassis so we can mount the L298N and Arduino to it. Use 4 m3x10 to mount the motor driver to the chassis.
After that, let's connect the power for the driver and the motors to the motor driver according to the circuit.
Attach the Arduino to the Chassis
Next mount the Arduino Uno R3 to the base with 4 M3x10. Almost done, let's move on to the pin connections.
For the pin from L298N to Arduino connections:
enA - pin 8
IN1 - pin 4
IN2 - pin 5
IN3 - pin6
IN4 - pin 7
enB - pin 9
For the HC-05 Bluetooth module :
Vcc - 5v
Gnd - Gnd
RX-TX Arduino
TX-RX Arduino
Add the Accessories
Add the accessories for the better looks.
For the Code and Circuit
//Vitsit Lee Curiosity Channel for full videos
//https://www.youtube.com/@LeeCuriosity
int in1 = 4;
int in2 = 5;
int in3 = 6;
int in4 = 7;
int enA = 8;
int enB = 9;
int val;
void setup()
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
Serial.begin(9600);
}
void loop()
{
while (Serial.available() > 0)
{
val = Serial.read();
}
if( val == 'F') //Forward
{
Serial.println("Forward");
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
digitalWrite(enA,HIGH);
digitalWrite(enB,HIGH);
}
else if(val == 'B') //Backward
{
Serial.println("Reverse");
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
digitalWrite(enA,HIGH);
digitalWrite(enB,HIGH);
}
else if(val == 'L') //Left
{
Serial.println("Turn Left");
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
digitalWrite(enA,HIGH);
digitalWrite(enB,HIGH);
}
else if(val == 'R') //Right
{
Serial.println("Turn Right");
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
digitalWrite(enA,HIGH);
digitalWrite(enB,HIGH);
}
else if(val == 'S') //Stop
{
Serial.println("Stop");
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
digitalWrite(enA,HIGH);
digitalWrite(enB,HIGH);
}
else if(val == 'I') //Forward Right
{
Serial.println("Forward Right");
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
digitalWrite(enA,HIGH);
digitalWrite(enB,HIGH);
}
else if(val == 'J') //Backward Right
{
Serial.println("Backward Right");
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
digitalWrite(enA,HIGH);
digitalWrite(enB,HIGH);
}
else if(val == 'G') //Forward Left
{
Serial.println("Forward Left");
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
digitalWrite(enA,HIGH);
digitalWrite(enB,HIGH);
}
else if(val == 'H') //Backward Left
{
Serial.println("Backward Left");
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
digitalWrite(enA,HIGH);
digitalWrite(enB,HIGH);
}
}