This is an old revision of the document!
Ideea proiectului constă în realizarea unei alarme de incendiu. Aceasta va prelua date în timp real despre temperatura și cantitatea de fum din încăperea în care este plasată alarma și, în cazul în care temperatura și cantitatea de fum depășesc limitele setate, alarma va emite un semnal sonor, un LED roșu se va aprinde, mesajul de “Pericol incendiu!” va fi afișat pe un LCD. Pentru a opri alarma, va fi necesară introducerea unui cod PIN setat de programator. Când alarma nu este declanșată, temperatura camerei va fi afisata pe LCD.
Senzorii de temperatură și fum vor prelua temperatura, respectiv cantitatea de fum din încăpere. Aceste date vor fi citite de o plăcuță Arduino, care va activa piezo-rezistorul, LED-ul și va transmite mesajul “Pericol incendiu!” către ecranul LCD dacă valoarile datelor citite de Arduino sunt mai mari decat limitele setate de programator. În caz contrar, plăcuța Arduino va afișa datele citite de la senzorul de temperatură și le va afișa ecranul LCD. În momentul pornirii alarmei, prima placuță Arduino va înștiința a doua plăcuță Arduino, care va avea ca input o tastatură, că alarma a fost pornită. Pentru a dezactiva alarma, utilizatorul va trebui să intrucă un cod PIN la tastatura care să corespundă cu codul PIN setat pe a doua plăcuță. În momentul în care utilizatorul introduce codul bun, a doua plăcuță îi dă acordul primei plăcuțe să dezactiveze alarma.
Schema bloc
Piesele folosite în cadrul proiectului sunt:
- 2 x Arduino Uno ATmega328P
- Senzor de temperatura TMP36
- Breadboard
- Fire
- Senzor de fum MQ-7
- Display LCD1602 I2C
- Buzzer pasiv 5V
- Led de 5 mm
- Keypad
- Rezistenta 220Ω
Implementarea software este formata din 2 fisiere: sender_pm.ino si receiver_pm.ino .
Sender_pm.ino
Arduino va transmite date LCD-ul prin protocolul I2C, astfel ca e nevoie de adresa LCD-ului (0x27 in cazul de fata) in momentul initierii conexiunii dintre Arduino si LCD. Buzzer-ul este conectat la pinul 7 al placutei Arduino, iar LED-ul la pinul 13. Variabila “alarm_trigger”, care devine 1 in cazul aparitiei unui incendiu, este initial setata initial pe 0.
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // Temperatura in grade Celsius double temp; // Temperatura in Volti double temp_voltage; // Output-ul senzorului de temperatura int read_temp; int LED = 13; int buzzer = 7; // Output-ul senzorului de gaz int read_gas; // Daca alarm_trigger = 1, alarma a fost declansata char alarm_trigger = 0;
In setup, A0 si A1 sunt setati ca pini de input, A0 primind concentratia de gaz de la senzorul de gaz, iar A1 primind temperatura de la senzorul de temperatura. Buzzer-ul este setat pe HIGH initial deoarece el este activ pe LOW, iar acesta trebuie sa fie activ doar in momentul declansarii alarmei. Cand alarma este pornita, mesajul "Loading Fire Alarm..." este afisat pe LCD timp de 5 secunde.