Table of Contents

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:

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

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

2. LCD cu modul I2C

3. Buzzer pasiv

4. LED

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

6. Alimentare și conexiuni comune

Software Design

Setup

Mediu de dezvoltare : Visual Studio Code + PlatformIO

Librării :

Obiective software

Funcționalități software

1. Inițializare și configurare periferice

2. Monitorizare continuă a flăcării

3. Citire analogică ADC

Modulul ADC este configurat în funcție de:

  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:

* 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

Datasheet ATmega324P

Datasheet ATmega328P