Sistemul de alarmă vine în ajutorul celor cărora le este frică să stea singuri în casă, simțindu-se amenințați de apariția unor persoane străine sau de alți factori externi ce le-ar putea pune viața în pericol.
Scopul proiectul constă în detectarea scurgerilor de gaz, cât și supravegherea perimetrului din fața ușii, oferind un grad de protecție ridicat.
Fiind o persoană paranoică, ideea mi-a venit din dorința de a mă simți în singuranță atunci când mă aflu singură în casă, în special pe timpul nopții.
Proiectul mi se pare util atât pentru a-mi pune în practică noțiunile învățate la laborator, cât și pentru rolul acestuia în viața de zi cu zi. Este extrem de important să avem grijă de siguranța noastră, mai ales când tehnologia ne oferă atât de multe posibilități de a ne proteja.
Sistemul meu de alarma este alcătuit dintr-un senzor de mișcare PIR și un senzor de gaz care comunică cu placa ArduinoUNO. O dată ce acestea detectează mișcare/gaz vor activa un buzzer și semnalele luminoase ale unor leduri în așa fel încat proprietarul să fie avertizat de pericol. De asemenea, pe ecranul LCD va apărea mesajul cu pericolul (dacă a fost activat senzorul de mișcare/gaz).
Diagrama bloc corespunzatoare proiectului:
Pentru a realiza acest proiect vom avea nevoie de:
Schema electrică:
Prima încercare de implementare a proiectului a fost în tinkercad, rezultatul final fiind schema următoare:
După ce am comandat piesele am realizat că senzorul de gaz cumpărat nu se potrivea cu cel folosit și nu exista în tinkercad o altfel de variantă pentru acesta. Astfel, am recreat schema de cablaj în Eagle, rearanjând și poziționarea componentelor, pentru a fi mai ușor de implementat fizic.
În final proiectul arată așa:
Codul de implementare este:
#include <LiquidCrystal.h> int pirsensor = 0; int gassensor = 0; LiquidCrystal lcd(13, A1, A2, A3, A4, A5); void setup() { //-------------------------Leds----------------------------- pinMode(1, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); //-----------------------PIR sensor------------------------- pinMode(11, INPUT); //-----------------------Gas sensor------------------------- Serial.begin(9600); //--------------------------Piezo--------------------------- pinMode(12, OUTPUT); //---------------------------LCD---------------------------- lcd.begin(16, 2); // 16 coloane, 2 randuri } void loop() { pirsensor = digitalRead(11); gassensor = analogRead(A0); //--------------PIR sensor for motion detection------------- if (pirsensor == HIGH) { lcd.clear(); lcd.setCursor(3, 0); lcd.print("*INTRUDER*"); lcd.setCursor(5, 1); lcd.print("*ALERT*"); // dance led, dance tone(12, 220, 900); digitalWrite(2, HIGH); delay(100); digitalWrite(2, LOW); digitalWrite(3, HIGH); delay(100); digitalWrite(3, LOW); digitalWrite(4, HIGH); delay(100); digitalWrite(4, LOW); digitalWrite(5, HIGH); delay(100); digitalWrite(5, LOW); digitalWrite(6, HIGH); delay(100); digitalWrite(6, LOW); digitalWrite(7, HIGH); delay(100); digitalWrite(7, LOW); digitalWrite(8, HIGH); delay(100); digitalWrite(8, LOW); digitalWrite(9, HIGH); delay(100); digitalWrite(9, LOW); digitalWrite(10, HIGH); delay(100); digitalWrite(10, LOW); } //------------------Gas sensor------------------ if (gassensor > 650) { lcd.clear(); lcd.setCursor(2, 0); lcd.print("*FIRE FIRE*"); lcd.setCursor(2, 1); lcd.print("*GAS ALERT*"); tone(12, 500, 900); digitalWrite(2, HIGH); delay(50); digitalWrite(2, LOW); digitalWrite(3, HIGH); delay(50); digitalWrite(3, LOW); digitalWrite(4, HIGH); delay(50); digitalWrite(4, LOW); digitalWrite(5, HIGH); delay(50); digitalWrite(5, LOW); digitalWrite(6, HIGH); delay(50); digitalWrite(6, LOW); digitalWrite(7, HIGH); delay(50); digitalWrite(7, LOW); digitalWrite(8, HIGH); delay(50); digitalWrite(8, LOW); digitalWrite(9, HIGH); delay(50); digitalWrite(9, LOW); digitalWrite(10, HIGH); delay(50); digitalWrite(10, LOW); } else { // all safe lcd.clear(); lcd.setCursor(5, 0); lcd.print("*ALL*"); lcd.setCursor(5, 1); lcd.print("*SAFE*"); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); } delay(10); }
Funcționalitatea proiectului poate fi văzută aici: Proiect PM Emilia Cocoru.
În final toate obiectivele de la început au fost îndeplinite și implementate cu succes.
Proiectul mi s-a părut extrem de interesant. Au fost momente când nimic nu părea că funcționează, dar toate problemele au fost rezolvate pe rând, câte una la un moment, folosindu-mă de Internet, cât și de ajutor din partea colegilor.
Proiectul a fost implementat pe etape, astfel încât să mă asigur că fiecare componentă funcționează corect. Făcând asta, procesul de debugging a fost destul de simplu de realizat.
Datasheet-uri folosite:
Diagrama bloc: https://www.lucidchart.com
Schema electrică: https://www.tinkercad.com