Proiectul isi propune realizarea unui sistem de alarma multifunctional care sa reactioneze la mai multi factori, de exemplu fumul respectiv vibratiile. In functie de informatia primita sistemul va reactiona diferit.
In cazul detectiei fumului acesta va actiona un motor ce deschide un geam si un alt motor ce porneste un ventilator care are rolul de a elimina pe geam gazele toxice, iar in cazul detectiei de vibratii, la usa, sistemul va actiona o bariera ce va consolida usa astfel incat patrunderea in casa va fi mult mai complicata sau chiar imposibila.
Sistemul are mai multe componente principale printre care se numara:
Aceste rezultate duc la o logică inversă în ceea ce privește codul și funcționalitățile oferite de către placa Arduino, astfel am luat în calcul următorul scenariu: diferența dintre cazul în care cineva ar vrea să intre prin efracție într-o clădire și cazul în care un musafir vine și bate la ușă, nereușind să genereze o vibrație atât de puternică pentru a activa senzorul.
Când senzorul de vibrație nu mai detectează nimic, bariera se va ridica în poziția inițială, iar alarma se va opri.
Declanșarea sistemului de incendiu este prevăzută cu un senzor de gaz MQ2 care este folosit pentru a detecta scurgerile de gaze în încăperi mici sau mari și reprezintă o metodă de precauție pentru incendii sau pentru intoxicații. Senzorul are o sensibilitate ridicată și principalele gaze pe care le vizează sunt GPL-ul, izobutan, propan, metan, alcool, hidrogen și fum. Senzorul dispune de un comparator, astfel că poate citi date analogice în timp real sau poate afla dacă concentrația de gaz a depășit o anumită limită. Pe partea de software, în cod este setată o anumită limită a valorii obținute de către senzor, ceea ce duce la sensibiliatea sa și modul de desfășurare al procesului.
Când limita valorii obținute depășește valoarea impusă, sistemul de incendiu este activat, astfel cele doua motoare DC vor porni, unul va deschide geamul din încăpere, iar celălalt va porni ventilatorul din dreptul geamului. Ventilatorul are un rol important, dat fiind de faptul că anumite gaze sau fumuri sunt foarte dense, întrucât nu este de ajuns doar deschiderea unui geam pentru a diminua pe cât posibil pericolul. De asemenea, va porni alarma de incendiu formată dintr-un buzz pasiv care generează un sunet și un LED roșu se va aprinde.
În cazul în care senzorul returnează valori care nu depășesc de limita impusă, atunci sistemul va reveni în poziția inițială, astfel geamul se va închide, ventilatorul și alarma se vor opri.
În ceea ce privește rotația motoarelor, motorul ventilatorului se învârte decât într-un sens, întrucât are doar rolul de a scoate fumul sau gazul afară, nefiind necesar de rotația inversă, dar, în cazul motoarelor specifice barierei și geamului, am folost 2x Shift Register L293D pentru a putea roti cele două motoare în ambele sensuri, deoarece, după ce a fost declanșată alarma, iar pericolul a fost îndepărtat, sistemul trebuie să revină la poziția inițială.
Librarii utilizate: -
Se declară pinii pentru diferite componente: senzori (de fum și vibrații), motoare (pentru barieră și fereastră), LED și buzzer. De asemenea, se definesc două variabile booleene pentru a păstra starea ferestrei și barierei. quarterRotationTime și windowRotationTime definesc timpul necesar pentru o rotație parțială a motoarelor.
Funcția setup inițializează pinii ca intrări sau ieșiri, setează tonul buzzer-ului și pornește comunicarea serială pentru debugging.
În bucla loop, se citesc valorile senzorilor de vibrații și fum și se afișează pentru debugging. Se controlează motorul barierei și cel al ferestrei pe baza valorilor citite:
Similar, pentru senzorul de fum:
Acest cod este util pentru a monitoriza și reacționa la vibrații și fum, oferind o soluție automată pentru controlul unei bariere și a unei ferestre într-un sistem de siguranță.