Arduino UNO-Based Fire Fighting Robot with IR Sensors and Water Pump
View and Edit Project In Cirkit Designer
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
- Description: Infrared sensor used to detect fire.
- Pins:
outgndvcc
9V Battery
- Description: Power source for the circuit.
- Pins:
-+
Arduino UNO
- Description: Microcontroller used to control the robot.
- Pins:
UNUSEDIOREFReset3.3V5VGNDVinA0A1A2A3A4A5SCLSDAAREFD13D12D11D10D9D8D7D6D5D4D3D2D1D0
5V Mini Water Pump
- Description: Water pump used to extinguish fire.
- Pins:
positive pinnegative pin
Wiring Details
IR Sensor
- vcc connected to Arduino UNO 5V
- gnd connected to Arduino UNO GND
- out connected to Arduino UNO D4
9V Battery
- - connected to Arduino UNO GND
Arduino UNO
- 5V connected to IR Sensor vcc
- GND connected to IR Sensor gnd
- GND connected to 9V Battery -
- GND connected to 5V Mini Water Pump negative pin
- D13 connected to 5V Mini Water Pump positive pin
- D4 connected to IR Sensor out
5V Mini Water Pump
- negative pin connected to Arduino UNO GND
- positive pin connected to Arduino UNO D13
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.