Fire alarm

Introducere

Acest proiect constă în realizarea unei alarme de incendiu folosind o placuță Arduino și un senzor de fum care detectează particulele din aer, avertizând utilizatorii prin semnale sonore și vizuale. Ideea a pornit de la necesitatea unui sistem simplu și eficient de avertizare în caz de incendiu, destinat în special spațiilor mici precum locuințe sau birouri.

Scopul proiectului este de a semnala rapid prezența unei flăcări, oferind astfel un timp de reacție cât mai scurt pentru prevenirea accidentelor. Un astfel de sistem este util nu doar pentru siguranța personală, ci și ca oportunitate de a aplica practic cunoștințele acumulate în cadrul laboratoarelor cursului de Proiectare cu microprocesoare.

Proiectul se dorește a fi o soluție accesibilă, ușor de înțeles și de replicat, cu potențial de extindere și îmbunătățire în funcție de nevoile utilizatorului.

Descriere generală

Sistemul de alarmă de incendiu este compus din mai multe module hardware și software care colaborează pentru a detecta în timp real prezența unei flăcări și pentru a declanșa un semnal de avertizare.

Componenta hardware include următoarele elemente:

  • Placă Arduino UNO – unitatea centrală de control care primește datele de la senzor și controlează ieșirile de semnal.
  • Modul Senzor Gaz – detectează fumul din aer și trimite un semnal digital către Arduino când pragul de sensibilitate este depășit.
  • LED de avertizare – se aprinde atunci când este detectată o flacără, oferind un semnal vizual.
  • Buzzer – emite un sunet de alarmă pentru a atrage atenția în caz de incendiu.
  • Rezistențe și fire de conexiune – pentru conectarea sigură a componentelor în circuit.
  • LCD - afișează mesaje despre starea sistemului.

Pe partea software, programul scris în Arduino IDE monitorizează constant semnalul de la senzorul de flacără. Dacă acesta detectează o sursă de infraroșu caracteristică unei flăcări, Arduino activează simultan buzzerul și LED-ul de avertizare. Sistemul poate fi configurat să reacționeze doar la semnale constante, pentru a evita alarmele false cauzate de surse accidentale de lumină.

Sistemul poate fi extins cu module suplimentare, precum un afișaj LCD, un modul Wi-Fi pentru notificări sau un buton de reset manual, însă proiectul de bază se concentrează pe funcționalitatea esențială de detecție și alertare locală.

Această arhitectură simplă permite înțelegerea ușoară a principiilor de bază ale sistemelor embedded de detecție și reacție, fiind potrivită pentru studenți, hobbyiști sau orice persoană interesată de siguranță și automatizări simple.

Schema bloc a proiectului este urmatoarea:

Hardware Design

Listă componente

  • Arduino Uno R3 AtMega328P
  • L298N Driver
  • Modul Senzor de Flacara Infrarosu
  • Mini Pompă de Apă (12 V)
  • LED Roșu de 3 mm cu Lentile Difuze
  • LCD 1602 cu Interfata I2C si Backlight Albastru
  • Buzzer Pasiv de 5 V
  • Rezistor 0.25W 220Ω
  • Breadboard HQ (830 Puncte)

Bill of Materials

Componenta Link achiziție Cantitate Preț
Modul Senzor Gaz MQ-2 Modul Senzor Gaz 1 10,99 lei
Mini pompa de apa (12V) Mini pompa de apa 1 15,99 lei
Buzzer Pasiv 5V Buzzer 1 1,40 lei
LCD 1602 cu Interfata I2C si Backlight Albastru Display 1 16,34 lei
LED Roșu de 5 mm Led roșu 1 0,39 lei
LED Verde de 5 mm Led verde 1 0,39 lei
Rezistor 0.25W 220Ω Rezistențe 10 1,00 lei
Set Fire pentru Breadboard Set de fire de dimensiuni variate 1 7,99 lei
Fire Colorate Mamă-Tată (10p) 20 cm Set de fire mamă-tată 1 3,99 lei
Fire Colorate Tată-Tată (10p, 30 cm) Set de fire tată-tată 1 4,99 lei
Breadboard HQ (830 Points) Breadboard 1 9,98 lei
Cablu Albastru USB AM la BM 30 cm pentru Arduino MEGA și UNO Cablu 1 3,60 lei
Cost total componente: 77,05 lei

Schemă electrică

Funcționalitatea hardware și pinii folosiți:

1. Senzor de fum

  • Comunicare: semnal analogic → convertit de Arduino prin ADC (Analog to Digital Converter)
  • Pin utilizat: A0
  • Funcționare: Senzorul detectează particule de fum și trimite un semnal analogic către Arduino. Acesta este citit prin pinul A0 și convertit într-o valoare digitală. Când valoarea depășește un prag setat, se consideră că a fost detectat fum.

2. LCD cu modul I2C

  • Comunicare: protocol I2C (serial)
  • Pini utilizați:
    1. SDA (Serial Data) → 18 pe Arduino Uno
    2. SCL (Serial Clock) → 19 pe Arduino Uno
  • Funcționare: Arduino transmite mesaje pe LCD (ex: “FUM DETECTAT”) folosind comunicare serială I2C.

3. Buzzer pasiv

  • Comunicare: semnal PWM (Pulse Width Modulation)
  • Pin utilizat: Digital 9
  • Funcționare: Arduino generează semnale PWM pe pinul 9 pentru a activa buzzerul cu o anumită frecvență. Acesta emite un sunet de alarmă când se detectează fum. O rezistență este plasată în serie pentru protecție.

4. LED

  • Comunicare: semnal digital (ON/OFF)
  • Pin utilizat: Digital 13
  • Funcționare: LED-ul este aprins de Arduino prin trimiterea unui semnal HIGH pe pinul 13 atunci când se detectează fum. O rezistență este folosită pentru protecția LED-ului.

5. Driver de motor + pompă de apă 12V

  • Comunicare: semnal digital de control către driver
  • Pini utilizați: D7 și D4
  • Funcționare:
    1. Arduino trimite un semnal digital către driverul de motor.
    2. Driverul activează pompa de apă (alimentată separat la 12V), care simulează stingerea incendiului.
    3. Pompa este alimentată prin driver, iar Arduino controlează doar semnalul logic (ON/OFF).

6. Alimentare și conexiuni comune

  • VCC și GND: sunt distribuite pe breadboard pentru a alimenta componentele.

Software Design

Setup

Mediu de dezvoltare : Visual Studio Code + PlatformIO

Librării :

  • Wire : permite comunicarea prin protocolul I2C cu LCD-ul
  • LiquidCrystal_I2C : împreună cu biblioteca Wire oferă control asupra LCD-ului

Obiective software

  • detectarea și semnalizarea prezenței unei flăcări în timp real.
  • afișarea clară a stării sistemului pe un ecran LCD.
  • răspuns rapid prin activarea LED-ului și buzzerului.
  • organizare modulară și extensibilă a codului.

Funcționalități software

1. Inițializare și configurare periferice

  • Se inițializează afișajul LCD cu mesaje de test pentru a indica buna funcționare.
  • Se configurează ADC-ul pentru a putea citi în mod automat valori analogice de la senzorul de fum, folosind un timer hardware (Timer1) pentru declanșare.
  • Se configurează pini digitali pentru LED (PB5), buzzer (PB3, PWM prin Timer2), pompă (PD2 și PD3).

2. Monitorizare continuă a flăcării

  • Sistemul citește periodic valoarea de la un senzor de flacără (cu ieșire analogică).
  • Valoarea este afișată pe LCD în timp real, pentru a oferi feedback vizual utilizatorului.

3. Citire analogică ADC

Modulul ADC este configurat în funcție de:

  • Referință de tensiune internă: AVcc (REFS0 = 1).
  • Trigger automat: activat pe overflow-ul Timer1 (controlat prin registrul ADCSRB și bitii ADTS2:0).
  • Prescaler: 64, oferind un compromis bun între viteză și precizie.
  • Conversia analogică este declanșată periodic de Timer1, iar valoarea rezultată este salvată într-o variabilă globală (fire_sensor_value) în ISR-ul TIMER1_COMPB_vect.
  ADMUX = (1 << REFS0); // referință AVcc
  ADCSRA = (1 << ADEN) | (1 << ADATE) | (1 << ADPS2) | (1 << ADPS1);
  ADCSRB |= (1 << ADTS2) | (1 << ADTS1); // trigger: overflow Timer1

4. Detecția flăcării și răspunsul automat

Dacă valoarea analogică depășește un prag configurabil (care indică prezența unei flăcări), se declanșează automat următoarele acțiuni:

  1. Semnalizare vizuală: LED-ul roșu este aprins continuu.
  2. Semnalizare auditivă: Buzzer-ul este activat într-un mod sonor distinct, controlat prin Timer2 în mod Fast PWM.
  3. Activarea pompei: este pornită o pompă conectată la un pin digital, care funcționează pentru o durată presetată pentru a stinge focul.
  4. Afișare stare pe LCD: pe ecran apare un mesaj de alertă (ex. „FIRE”).

Setarea timerului 2 pentru buzzer constă în:

  TCCR2A |= (1 << COM2A1) | (1 << COM2A0); // PWM inversat
  TCCR2A |= (1 << WGM21) | (1 << WGM20); // Fast PWM

5. Resetare și revenire în modul de așteptare După finalizarea procesului de stingere, sistemul revine în modul de monitorizare:

  1. LED-ul este stins.
  2. Buzzer-ul este dezactivat prin resetarea registrului DDRB pentru pinul PB3.
  3. Pompa este oprită.
  4. Afișajul LCD este actualizat cu valoarea curentă a ADC-ului.

Logica principală (bucla main())

Inițializări hardware:

  1. Inițializare periferice (LCD, UART, pompe, LED, buzzer).
  2. Configurare ADC + Timer1 + întreruperi.
  3. Activare întreruperi globale (sei()).
  4. Bucla principală (while(1)):
    • Verifică dacă o nouă valoare ADC a fost citită (flag new_adc_value).
    • În funcție de valoarea senzorului:
      • Activează sau dezactivează sistemele de semnalizare și stingere.
      • Actualizează ecranul LCD cu un mesaj corespunzător.

Rezultate Obţinute

Link video: https://youtube.com/shorts/0wSd_gcqmnE

* Sistemul detectează în mod automat prezența unei flăcări pe baza valorii analogice citite de la senzorul de flacără. * Afișajul LCD oferă în timp real feedback vizual privind valoarea senzorului și starea sistemului (normal / alertă). * La depășirea unui prag configurabil, sunt declanșate automat acțiuni de alertare:

  • LED-ul roșu este aprins pentru semnalizare vizuală.
  • Buzzer-ul emite un semnal sonor distinct, generat prin PWM.
  • Pompa este activată pentru a simula stingerea focului.

* Sistemul se resetează corect după acțiunea de stingere, revenind în starea de monitorizare.

Observații despre teste:

Sistemul a fost testat cu succes în condiții simulate, prin apropierea unei surse de fum de senzorul de gaz. Reacția sistemului este rapidă (sub 1 secundă de la declanșare), iar componentele răspund corect și sincronizat. Singura limitare observată este legată de sensibilitatea senzorului, care poate varia în funcție de condițiile de mediu și cât de curat este aerul în încăperea în care se află.

Concluzii

Realizarea acestui proiect mi-a oferit ocazia să învăț și să aplic concepte esențiale din domeniul sistemelor embedded, în special legate de lucrul cu senzori analogici și controlul precis al perifericelor prin PWM și întreruperi. Am înțeles mai bine cum funcționează ADC-ul intern al microcontrolerului, cum pot fi folosite timer-ele hardware pentru declanșări automate, și cum se pot sincroniza mai multe componente (buzzer, pompă, LED, LCD) pentru a răspunde în timp real la un eveniment critic, precum detectarea unei flăcări.

Download

Arhiva cu implementarea componentei software poate fi descărcată de pe Github.

Github: https://github.com/paularusen/Fire-Alarm

Jurnal

Task Status
Alegere temă proiect Complet
Achiziționarea componentelor hardware Complet
Asigurarea functionalității hardware Complet
Implementarea componentei software Complet
Aspect fizic In progress
Adăugare documentație pe OCW In progress

Bibliografie/Resurse

pm/prj2025/ajipa/paula.rusen.txt · Last modified: 2025/05/30 08:28 by paula.rusen
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0