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

Arduino UNO-Based Fire Fighting Robot with IR Sensors and Water Pump

View and Edit Project In Cirkit DesignerImage of Arduino UNO-Based Fire Fighting Robot with IR Sensors and Water Pump

Circuit Documentation

Summary

This document provides a detailed overview of a fire-fighting robot circuit. The robot is designed to detect fire using IR sensors and extinguish it using a water pump. The circuit includes an Arduino UNO microcontroller, an IR sensor, a 9V battery, and a 5V mini water pump. The Arduino UNO is programmed to control the robot's movements and activate the water pump when a fire is detected.

Component List

IR Sensor

9V Battery

Arduino UNO

5V Mini Water Pump

Wiring Details

IR Sensor

9V Battery

Arduino UNO

5V Mini Water Pump

Code Documentation

/*
 * 4-Wheeled Fire Fighting Robot
 * This code controls a fire fighting robot with 4 DC motors, 3 IR sensors,
 * a servo motor, and a water pump. The robot moves towards the fire detected
 * by the IR sensors and uses the water pump to extinguish it.
 */

// Pin definitions
#define IR_SENSOR_LEFT 2
#define IR_SENSOR_CENTER 3
#define IR_SENSOR_RIGHT 4
#define SERVO_PIN 5
#define WATER_PUMP_PIN 13
#define ENA 11
#define ENB 12
#define IN1 6
#define IN2 7
#define IN3 8
#define IN4 9

#include <Servo.h>
Servo servo;

void setup() {
  // Initialize serial communication
  Serial.begin(9600);

  // Initialize IR sensor pins
  pinMode(IR_SENSOR_LEFT, INPUT);
  pinMode(IR_SENSOR_CENTER, INPUT);
  pinMode(IR_SENSOR_RIGHT, INPUT);

  // Initialize motor driver pins
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);

  // Initialize water pump pin
  pinMode(WATER_PUMP_PIN, OUTPUT);

  // Attach servo to pin
  servo.attach(SERVO_PIN);

  // Set initial servo position
  servo.write(90);
}

void loop() {
  // Read IR sensor values
  int irLeft = digitalRead(IR_SENSOR_LEFT);
  int irCenter = digitalRead(IR_SENSOR_CENTER);
  int irRight = digitalRead(IR_SENSOR_RIGHT);

  // Print IR sensor values for debugging
  Serial.print("IR Left: ");
  Serial.print(irLeft);
  Serial.print(" IR Center: ");
  Serial.print(irCenter);
  Serial.print(" IR Right: ");
  Serial.println(irRight);

  // Determine robot movement based on IR sensor values
  if (irLeft == LOW && irCenter == LOW && irRight == LOW) {
    // Move forward
    moveForward();
  } else if (irLeft == LOW && irCenter == HIGH && irRight == HIGH) {
    // Turn left
    turnLeft();
  } else if (irLeft == HIGH && irCenter == HIGH && irRight == LOW) {
    // Turn right
    turnRight();
  } else if (irLeft == HIGH && irCenter == HIGH && irRight == HIGH) {
    // Fire detected, stop and activate water pump
    stopRobot();
    activateWaterPump();
  } else {
    // Default to stop
    stopRobot();
  }

  delay(100);
}

void moveForward() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  analogWrite(ENA, 160);
  analogWrite(ENB, 160);
  servo.write(90); // Rotate servo back to 90 degrees (center position)
}

void turnLeft() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  analogWrite(ENA, 160);
  analogWrite(ENB, 160);
  servo.write(45); // Rotate servo to 45 degrees
}

void turnRight() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  analogWrite(ENA, 160);
  analogWrite(ENB, 160);
  servo.write(45); // Rotate servo to 45 degrees
}

void stopRobot() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
  analogWrite(ENA, 0);
  analogWrite(ENB, 0);
}

void activateWaterPump() {
  digitalWrite(WATER_PUMP_PIN, HIGH);
  delay(5000); // Run the pump for 5 seconds
  digitalWrite(WATER_PUMP_PIN, LOW);
}

This code controls the fire-fighting robot by reading the IR sensor values and determining the robot's movement. When a fire is detected, the robot stops and activates the water pump to extinguish the fire.