Table of Contents

Smoke Detector

Autor

Florina Drastaru - 335CA

Introducere

Proiectul consta intr-un sistem de alarma pentru detectia fumului, putand fi un mod facil de preventie a pericolelor in locuintele oamenilor, prin metodele variate de alarma si notificare.

Descriere generala

Pentru acest proiect, am ales sa folosesc ca resurse hardware un senzor de gaz, ce are rolul de a detecta cantitatea de fum din atmosfera, un buzzer, care porneste atunci cand cantitatea de fum depaseste o anumita limita, leduri de diferite culori, care se aprind in functie de concentratia de gaz detectata si un ecran LCD, unde sunt afisate notificare in functie de pericol.

Schema bloc:

Hardware Design

Lista componente:

Schema tinkercad:

Software Design

Am folosit Arduino IDE ca mediu de dezoltare.

Biblioteca LiquidCrystal am utilizat-o pentru a facilita comunicarea dintre placa Arduino si LCD.

Cu ajutorul variabilelor globale, am stabilit pinii la care sunt conectati ledurile, pinul la care este conectat buzzerul, pinul de la care se citeste si limitele de gaz la care sistemul atentioneaza pericolul:

Implementarea software se bazeaza pe 2 functii principale:

  1. Functia setup()
    • se initializeaza pinii si LCD-ul
  2. Functia loop()
    • se afiseaza pe LCD mesaje de alerta specifice si cantitatea de fum detectata
    • in functie de concentratia de gaz, se aprinde un led de o anumita culoare:
      • ledul verde → este aprins atunci cand nu este detectat fum in atmosfera(senzorul citeste o valoare mai mica decat 300)
      • ledul portocaliu → este aprins atunci cand se detecteaza o cantitate mica de fum(senzorul citeste o valoare mai mare decat 300, dar mai mica decat 380)
      • ledul rosu → este aprins atunci cand se detecteaza o cantitate mai mare de fum(senzorul citeste o valoare mai mare decat 380)
    • buzzerul porneste concomitent cu ledul rosu, atunci cand se da semnalul de alerta

Cod Arduino

Cod Arduino

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

int redLed = 10;
int greenLed = 11;
int orangeLed = 12;
int buzzer = 8;
int readSmoke = A0;
int maxLimit = 380;
int minLimit = 300;

void setup() {
  pinMode(redLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(orangeLed, OUTPUT);
  pinMode(readSmoke, INPUT);
  Serial.begin(9600);
  lcd.begin(16,2);
}

void loop() {
  int analogSensor = analogRead(readSmoke);

  Serial.print("Pin A0: ");
  Serial.println(analogSensor);
  lcd.print("Smoke Level:");
  lcd.print(analogSensor-50);
  if (analogSensor-50 > maxLimit)
  {
    digitalWrite(redLed, HIGH);
    lcd.setCursor(0, 2);
    lcd.print("Alert....!!!");
    digitalWrite(greenLed, LOW);
    digitalWrite(orangeLed, LOW);
    tone(buzzer, 1000, 200);
  } else if (analogSensor - 50 > minLimit) {
    digitalWrite(redLed, LOW);
    digitalWrite(orangeLed, HIGH);
    digitalWrite(greenLed, LOW);
    lcd.setCursor(0, 2);
    lcd.print("Be carreful....!!!");
    noTone(buzzer);
  }
  
  else
  {
    digitalWrite(redLed, LOW);
    digitalWrite(greenLed, HIGH);
    digitalWrite(orangeLed, LOW);
    lcd.setCursor(0, 2);
    lcd.print(".....Normal.....");
    noTone(buzzer);
  }
  delay(500);
  lcd.clear();
}

Rezultate obtinute

Starea sistemului atunci cand nu exista fum in atmosfera.

green.jpeg

Starea sistemului atunci cand se detecteaza o cantitate mica de fum in atmosfera.

orange.jpeg

Starea sistemului atunci cand se detecteaza o cantitate mai mare de fum in atmosfera.

alert.jpeg

DEMO-ul proiectului
https://drive.google.com/file/d/1Ca0p79EU1-_9fi7ORvEVCcYigo7xrgjA/view?usp=sharing

Concluzii

Proiectul a fost, per total, o experienta interesanta prin faptul ca a avut si o parte practica.
Fiind primul proiect de acest tip, m-am informat cum trebuie utilizata fiecare componenta, cum se conecteaza intre ele si, in final, pot spune ca sunt multumita de rezultat.

Jurnal

Bibliografie/Resurse