Fire Fighting Robot Project - 250324 - 230815
Fire Fighting Robot Project - 250324 - 230815
Fighting
Robot
Project
For Embedded System Subject
By: Suhail Al Hbob
Firefighters continuously run the risk of dying as the world progressively moves toward
automated systems and self-driving cars. If a fire is not put out, it spreads quickly.
Therefore, our system steps in to solve this problem and protect the life of our hero. The
Arduino Uno development board powers this firefighting robotic system, which also has a
fire flame sensor for spotting oncoming fires and a water tank and spray mechanism for
putting out the flames. For optimal coverage, a water spraying nozzle is attached to a
servo motor. A water pump is used to transfer water from the main water tank to the
water nozzle.
A flame sensor is a type of sensor that responds most strongly to ambient light. This
sensor module is utilised in flame alarms as a result. This sensor picks up flames coming
from the light source with wavelengths between 760 and 1100 nm. High temperatures
have the potential to easily harm this sensor. So, a specific distance from the flame can
be chosen for this sensor's placement. The flame can be detected from a distance of 100
cm. This sensor outputs either an analogue signal or a digital signal. These sensors
serve as a flame alert in firefighting robots.
Datasheet
Module dimensions 43 x 43 x 28 mm
COMPONENTS REQUIRED
• Car chassis
• Servo Motor
• 12V Battery
• Solder wire
Software Required
• Arduino IDE
CIRCUIT DIAGRAM
ENA 3
IN1 12
IN2 4
IN3 7
IN4 2
ENB 5
L293 module pins Arduino pins
12v 12v
GND GND
5v 5v
EN1 5v
IN1 GND
IN2 6
Vcc 5v
GND GND
Signal 11
Vcc 5v
GND GND
DO (RIGHT) 9
DO (FORWARD) 8
DO (LEFT) 10
For L298N motor driver module, motors are connected to the motor terminals of the
motor driver module. The motor driver has another 3 terminals, in which one is 12Volt
connected to the battery. The GND terminal is connected to the battery’s negative
terminal and it is also connected to the Arduino board GND pin and 5v is connected to 5v
of the Arduino board.
METHODOLOGY
The methodology for developing an Arduino based firefighting robot typically involves
several stages, including design, implementation, testing, and evaluation. The following is
a general overview of the methodology for developing an Arduino based firefighting
robot:
1 .Design: In this stage, the overall concept and design of the robot are determined. The
design includes the selection of appropriate sensors, Arduino microcontroller, motor
drivers, water spray mechanism, and other components required for the robot.
2 .Implementation: Once the design is finalized, the components are assembled, and the
programming code is written for the Arduino microcontroller. The robot's hardware and
software are integrated to ensure proper functioning.
3 .Testing: The robot is tested in a simulated environment to ensure that it can detect
fires accurately and extinguish them using a water spray mechanism. The robot's
performance is evaluated under different conditions, such as different types of fires,
varying environmental conditions, and obstacles.
4 .Evaluation: Once the testing is complete, the robot's performance is evaluated based
on its ability to detect and extinguish fires accurately and its effectiveness in navigating
through narrow passages and obstacles. Modifications may be made to improve the
robot's performance.
6 .Deployment: Once the robot is deemed to be effective, it can be deployed in actual fire
incidents to assist human firefighters in combatting fires and reducing the risk of injury to
human firefighters.
DESIGN STAGES OF
WORKING
1 .Movement stage.
So, in this step the robot will not move until the flame
c. Three flame sensors used to detect fire from front, left and right.
To be accurate we read three values for each one and evaluate the average and we
must wait few milliseconds before start reading new values from the sensors.
CONCLUSION
An Arduino based autonomous firefighting robot is a viable solution for hazardous fire-
fighting situations where human intervention is not possible. With the use of various
sensors, it can detect fires with high accuracy, and its water spray mechanism can
extinguish fires effectively. Additionally, it can navigate through narrow passages and
avoid obstacles to reach the fire source quickly and safely. Good programming and
control can also ensure that the robot can detect and extinguish fires effectively while
avoiding obstacles and navigating safely. Although challenges and limitations exist, such
as the need for optimized sensors and programming, the potential benefits of such robots
make them a promising area for future research and development. Overall, Arduino
based autonomous firefighting robots have the potential to save lives and property and
can serve as a valuable addition to current fire-fighting methods.
CODE:
#include <Wire.h>
#include <Servo.h>
Servo myservo;
int pos = 0;
double temp;
#define Left 8
#define Right 9
#define Forward 10
#define LM1 2
#define LM2 3
#define RM1 4
#define RM2 5
#define pump 6
void setup() {
pinMode(Left, INPUT);
pinMode(Right, INPUT);
pinMode(Forward, INPUT);
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
pinMode(pump, OUTPUT);
myservo.attach(11);
myservo.write(90);}
void put_off_fire() {
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
digitalWrite(pump, HIGH);
clock.delay(500);
myservo.write(pos);
clock.delay(10); }
myservo.write(pos);
clock.delay(10);}
digitalWrite(pump, LOW);
myservo.write(90);
fire = false;}
put_off_fire();
} else {
fire = false; }}
void loop() {
myservo.write(90);
digitalWrite(LM1, HIGH);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, HIGH);
} else if (digitalRead(Forward) == 0) {
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
} else if (digitalRead(Left) == 0) {
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, HIGH);
} else if (digitalRead(Right) == 0) {
digitalWrite(LM1, HIGH);
digitalWrite(LM2, HIGH);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW); }
RTOS_task(); }