This is a robot car that can be remotely controlled using a Bluetooth terminal mobile application and has the capability to avoid the collision with the obstacles.
Robotic Car Controlled over Bluetooth with Obstacle Avoidance
1. KIET Group of Institutions
Robotic Car Controlled over
Bluetooth with Obstacle Avoidance
SURYA PRATAP
ECE DEPARTMENT
1900290310175 Ph..7500613027
2. Introduction
Robotic is the branch of electrical engineering,
mechanical engineering and computer science that deals
with the design, construction, operation, and application of
robot, as well as computer system for their control, sensory
feedback, and information processing.
This is a robot car that can be remotely controlled using a
Bluetooth terminal mobile application and has the
capability to avoid the collision with the obstacles.
3. Hardware Components
Arduino Uno (1)
Ultrasonic Sensor-HC-SR04 (1)
Motor Driver IC-L298N (2)
Dc Motor (4)
Bluetooth REES52 HC-05 (1)
Car Chassis (4)
12v Rechargeable Battery (1)
Jumper Wires Male Female (30)
Switch (2)
Passive Buzzer (1)
Red and Blue LED (5)
Charging Female Switch (1)
Resistance 220ohm (5)
Diode (2)
4. Arduino Uno
The Arduino Uno is a microcontroller board based on the ATmega328 (datasheet). It has
14 digital input/output pins (of which 6 can be used as PWM), 6 analog inputs, a 16
MHz ceramic resonator , dc current per I/O 40mA, flash memory 32Kb, clock speed
16MHz. It also has 2KB of SRAM and 1 KB of EEPROM.
The board can operate on an external supply of 6 to 20 volts. If supplied with
less than 7V, however, the 5V pin may supply less than 5V and the board may be
unstable. If using more than 12V, the voltage regulator may overheat and damage the
board. The recommended range is 7 to 12V.
5. Ultrasonic Sensor
The Ultrasonic sensor works on the same principles as a radar
system. It can convert electrical energy into acoustic wave and
vice versa. The acoustic wave signal is an ultrasonic wave
traveling at a frequency above 40kHz. It has working voltage 5V,
working current 15mA, Max range 4m and Min range 2cm ,
Measuring angle 15 degree.
L298N Motor Driver
This L298N Motor Driver is a high power motor driver for
driving DC and Stepper motors. This module consists of
an L298 motor driver IC and a 78M05 5V regulator,
resistors, capacitor, Power LED.
We can apply Input voltage 3.2V-40Vdc in this module. It
has Power supply 5V-35V, and peak current 2amp,
operating current range 0-36mA.
6. Bluetooth HC-05
Bluetooth Communication is a 2.4GHz frequency based RF Communication with a range of
approximately 10 meters. It is one of the most popular and most frequently used low range
communication for data transfer. It come with sex pins namely: VCC, GND, TX, RX, EN and
STATE. This module works on a logic level of 3.3V regulator is used on the board.
HC-05 module has Baud rate: 9600 with 8 data bits, no parity and 1 stop bit.
Module can be configured in two modes of operation:
In Command Mode, At commands for configuring various settings and parameter of
the module like get firmware information, change UART baud rate , set it as either
master or slave.
In Data Mode, In this mode, the module is used for communication with other
Bluetooth device example data transfer happens in this mode.
9. #define light_FR 14 //LED Front Right pin A0 for Arduino Uno
#define light_FL 15 //LED Front Left pin A1 for Arduino Uno
#define light_BR 16 //LED Back Right pin A2 for Arduino Uno
//#define light_BL 17 LED Back Left pin A3 for Arduino Uno
#define horn_Buzz 18 //Horn Buzzer pin A4 for Arduino Uno
#define ENA_m1 5 // Enable/speed motor Front Right
#define ENB_m1 6 // Enable/speed motor Back Right
#define ENA_m2 10 // Enable/speed motor Front Left
#define ENB_m2 11 // Enable/speed motor Back Left
#define IN_11 2 // L298N #1 in 1 motor Front Right
#define IN_12 3 // L298N #1 in 2 motor Front Right
#define IN_13 4 // L298N #1 in 3 motor Back Right
#define IN_14 7 // L298N #1 in 4 motor Back Right
#define IN_21 8 // L298N #2 in 1 motor Front Left
#define IN_22 9 // L298N #2 in 2 motor Front Left
#define IN_23 12 // L298N #2 in 3 motor Back Left
#define IN_24 13 // L298N #2 in 4 motor Back Left
Arduino Code
10. int command; //Int to store app command
state.
int speedCar = 100;
int speedCarM = 95;// 50 - 255.
int speed_Coeff = 4;
const int trigPin = A5;
const int echoPin = A3;
// defines variables
long duration;
int distance;
int safetyDistance;
boolean lightFront = false;
boolean lightBack = false;
boolean horn = false;
void setup() {
pinMode(light_FR, OUTPUT);
pinMode(light_FL, OUTPUT);
pinMode(light_BR, OUTPUT);
pinMode(light_BR, OUTPUT);
pinMode(horn_Buzz, OUTPUT);
pinMode(ENA_m1, OUTPUT);
pinMode(ENB_m1, OUTPUT);
pinMode(ENA_m2, OUTPUT);
pinMode(ENB_m2, OUTPUT);
pinMode(IN_11, OUTPUT);
pinMode(IN_12, OUTPUT);
pinMode(IN_13, OUTPUT);
pinMode(IN_14, OUTPUT);
pinMode(IN_21, OUTPUT);
pinMode(IN_22, OUTPUT);
pinMode(IN_23, OUTPUT);
pinMode(IN_24, OUTPUT);
pinMode(trigPin, OUTPUT); // Sets the
trigPin as an Output
pinMode(echoPin, INPUT); // Sets the
echoPin as an Input
Serial.begin(9600);
}
15. void loop(){
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro
seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel
time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
safetyDistance = distance;
if (Serial.available() > 0) {
command = Serial.read();
stopRobot(); //Initialize with motors stopped.
if (lightFront) {digitalWrite(light_FR, HIGH);
digitalWrite(light_FL, HIGH);}
if (!lightFront) {digitalWrite(light_FR, LOW);
digitalWrite(light_FL, LOW);}
if (lightBack) {digitalWrite(light_BR, HIGH);
digitalWrite(light_BR, HIGH);}
if (!lightBack) {digitalWrite(light_BR, LOW);
digitalWrite(light_BR, LOW);}
if (horn) {digitalWrite(horn_Buzz, HIGH);}
if (!horn) {digitalWrite(horn_Buzz, LOW);}
if (safetyDistance <= 20){
digitalWrite(light_BR, HIGH);
digitalWrite(horn_Buzz, HIGH);
delay(500);
goBackM();
delay(750);
}
else{
switch (command) {
case 'F':goAhead();break;
case 'B':goBack();break;
case 'L':goLeft();break ;
case 'R':goRight();break;
16. case 'I':goAheadRight();break;
case 'G':goAheadLeft();break;
case 'J':goBackRight();break;
case 'H':goBackLeft();break;
case '0':speedCar = 100;break;
case '1':speedCar = 115;break;
case '2':speedCar = 130;break;
case '3':speedCar = 145;break;
case '4':speedCar = 160;break;
case '5':speedCar = 175;break;
case '6':speedCar = 190;break;
case '7':speedCar = 205;break;
case '8':speedCar = 220;break;
case '9':speedCar = 235;break;
case 'q':speedCar = 255;break;
case 'W':lightFront = true;break;
case 'w':lightFront = false;break;
case 'U':lightBack = true;break;
case 'u':lightBack = false;break;
case 'V':horn = true;break;
case 'v':horn = false;break;
}
}
}
}