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

Arduino-Controlled Obstacle-Avoiding Robot with Bluetooth and Ultrasonic Sensor

View and Edit Project In Cirkit DesignerImage of Arduino-Controlled Obstacle-Avoiding Robot with Bluetooth and Ultrasonic Sensor

Circuit Documentation

Summary

This circuit is designed to control a variety of components including motors, sensors, and actuators using an Arduino UNO as the central microcontroller. The circuit features motor drivers for controlling gearmotors, an ultrasonic sensor for distance measurement, IR sensors for object detection, a Bluetooth module for wireless communication, LEDs for visual feedback, a buzzer for audio alerts, a relay for controlling a water pump, and a switch for power control. The system is powered by an 11.1V Li-ion battery.

Component List

5v Mini Water Pump

Arduino UNO

HC-SR04 Ultrasonic Sensor

HC-05 Bluetooth Module

LEDs (Red and White)

L298N DC Motor Driver

Buzzer

Li-ion Battery, 2200 mAh 11.1 V

Hobby Gearmotors with 48:1 Gearbox (4 units)

IR Sensors (3 units)

Rocker Switch (SPST)

LED: Four Pin (RGB)

1-Channel Relay (5V 10A)

Wiring Details

5v Mini Water Pump

Arduino UNO

HC-SR04 Ultrasonic Sensor

HC-05 Bluetooth Module

LEDs (Red and White)

L298N DC Motor Driver

Buzzer

Li-ion Battery, 2200 mAh 11.1 V

Hobby Gearmotors with 48:1 Gearbox

IR Sensors

Rocker Switch (SPST)

LED: Four Pin (RGB)

1-Channel Relay (5V 10A)

Documented Code

#define in1 5 //L298n Motor Driver pins.
#define in2 6
#define in3 10
#define in4 11
#define EXTRA 4 
const int trigPin = 9;
const int echoPin = 18;
long duration;
int distance;
#define light_FR  13    //LED Front Right   pin A0 for Arduino Uno
//#define light_FL  15   //LED Front Left    pin A1 for Arduino Uno
#define light_BR  12    //LED Back Right    pin A2 for Arduino Uno
//#define light_BL  17    //LED Back Left     pin A3 for Arduino Uno
#define horn_Buzz 7    //Horn Buzzer       pin A4 for Arduino Uno
int command; //Int to store app command state.
int Speed = 204; // 0 - 255.
int Speedsec;
int buttonState = 0;
int lastButtonState = 0;
int Turnradius = 0; //Set the radius of a turn, 0 - 255 Note:the robot will malfunction if this is higher than int Speed.
int brakeTime = 45;
int brkonoff = 1; //1 for the electronic braking system, 0 for normal.
boolean lightFront = false;
boolean lightBack = false;
boolean horn = false;
boolean extra = false;

void setup() {
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); 
  pinMode(EXTRA,OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(14,INPUT);
  pinMode(light_FR, OUTPUT);
 //   pinMode(light_FL, OUTPUT);
  pinMode(light_BR, OUTPUT);
 //   pinMode(light_BL, OUTPUT);
  pinMode(horn_Buzz, OUTPUT);
  
  Serial.begin(9600);  //Set the baud rate to your Bluetooth module.
}

void loop() {
  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;
  // Prints the distance on the Serial Monitor
  Serial.println(distance);
  if(distance<25){Stop();
  delay(100);
   digitalWrite(in1,LOW);
    digitalWrite(in2,HIGH);
     digitalWrite(in3,LOW);
      digitalWrite(in4,HIGH);
      delay(500);
      digitalWrite(in1,LOW);
    digitalWrite(in2,LOW);
     digitalWrite(in3,LOW);
      digitalWrite(in4,LOW);
   }
   if(distance<25){digitalWrite(horn_Buzz,1);
   delay(50);
   digitalWrite(horn_Buzz,0);
delay(50);
digitalWrite(horn_Buzz,1);
   delay(50);
   digitalWrite(horn_Buzz,0);
delay(50);
digitalWrite(horn_Buzz,1);
   delay(50);
   digitalWrite(horn_Buzz,0);
   }
   //FRONT IR 1
    if (digitalRead(14)== HIGH){Stop();
  delay(100);
   digitalWrite(in1,LOW);
    digitalWrite(in2,HIGH);
     digitalWrite(in3,LOW);
      digitalWrite(in4,HIGH);
      delay(300);
      digitalWrite(in1,