Tomescu Petru-Alin
Grupa: 331CC
Proiectul descrie crearea unui sistem de securitate ce poate să detecteze intrușii prin intermediul unui senzor PIR și care comunică cu telefonul mobil.
Scopul proiectului este de a obține un sistem de alarmă, de dimensiuni reduse, capabil să atenționeze utilizatorii, atât prin intermediul unor indicatori fizici ai săi precum un ecran LCD și un buzzer, cât și prin transmiterea unor alerte la distanță, pe telefon. Oprirea alarmei se poate face fie fizic prin introducerea unei parole, fie de la distanță, prin intermediul aplicației.
Consider că proiectul devine util pentru protejarea unei zone împortiva accesului nedorit, oferind protecție continuă prin capacitatea sa de alertare la distanță.
La pornirea sistemului, acesta va citi parola de securitate, salvată pe un card SD. Totodată, sistemul oferă utilizatorului posibilitatea de a o reseta. Pentru a avea acces la conținutul cardului SD și a putea realiza operații (citire/scriere), va fi utilizat un modul de card SD. Urmează apoi inițializarea componentelor, durând aproximativ un minut pentru acomodarea senzorului PIR cu camera în care se află.
Atunci când senzorul PIR detectează mișcare, buzzer-ul sistemului de securitate va începe să scoată un zgomot de atenționare. Sistemul va folosi modulul bluetooth pentru a transmite că alarma a fost activată și pe telefonul mobil. Oprirea alarmei se realizează direct din aplicație, sau prin apăsarea unui buton pentru a activa o întrerupere a sistemului, ce permite apoi utilizatorului să introducă parola de securitate (anterior setată sau resetată).
În timpul funcționării, un LCD va fi utilizat cu scopul de a afișa diverse mesaje despre starea în care se găsește sistemul de securitate. Sistemul dispune și de un keypad, utilizat pentru introducerea parolei sau acceptarea, neacceptarea diferitelor operații. Aceste două componente vor fi conectate nu direct la placa Arduino, ci prin intermediul unor module I2C. Această interfațare are drept scop reducerea numărului de pini necesari pentru conectarea celor două componente.
Componente Utilizate | Cantitate |
---|---|
Arduino UNO R3 ATmega328p | X1 |
Senzor PIR HC-SR501 | X1 |
Buzzer | X1 |
LCD 1602 | X1 |
I2C adaptor pentru LCD | X1 |
Button | X1 |
Tastatura Matriciala 4×4 (Keypad) | X1 |
Modul expansiune IO I2C | X1 |
Modul SD card | X1 |
Card Micro SDHC de 8 GB | X1 |
Modul bluetooth HC-05 | X1 |
Breadboard | X5 |
Fire legatura | - |
In cadrul proiectului, am folosit ca mediu de dezvoltare Arduino IDE.
In cadrul proiectului am utilizat urmatoarele bibilioteci:
La pornirea sistemului, au loc urmatoarele actiuni:
Pe durata functionarii sistemului de alarma, exista 4 stari(moduri) in care acesta se afla:
Comunicarea cu senzorul HC-05 se realizeaza printr-o aplicatie de android. Pentru implementarea functionalitatilor
aplicatiei, am utilizat MIT app inventor. Aplicatia permite conectarea la senzorul HC-05, precum si deconectarea de la acesta
in orice moment in timpul functionarii aplicatiei.
La primirea mesajului “Motion Detected!”, aplicatia afiseaza pe ecran mesajul. Totodata, se activeaza butonul de stop alarm. Apasarea
sa determina trimiterea unui mesaj de stop inapoi catre Arduino, ce opreste alarma.
La primirea mesajului “WAIT”, aplicatia nu mai permite apasarea butonului de stop alarm, in cazul in care acesta era activ. Scopul este
impiedicarea trimiterii unui mesaj de stop eronat catre Arduino, in cazul in care alarma oricum este dezactivata de la sistemul principal, in mod fizic. Desi primirea mesajului nu afecteaza alarma, atunci cand aceasta este in alt mod de functionare, mesajul ramane salvat in buffer-ul lui HC-05.
Astfel, la o viitoare declansare a alarmei, mesajul de stop trimis eronat va primit, si alarma oprita in mod gresit.
Functia realizeaza asteptarea unui minut, ceea ce permite resetarea senzorului PIR pentru a putea detecta din nou.
Functia asteapta introducerea unei parole de 4 digits de la keypad, si o salveaza in memoria programului.
Functia citeste din memoria cardului micro sd parola, si o incarca in memoria programului.
Functia realizeaza setarea pinului butonului, in mod INPUT PULLUP.
Functia realizeaza setarea pinilor pentru PIR si Buzzer, precum si pentru buton prin apelarea lui setButton().
Functia seteaza intreruperile externe, declansate la apasarea butonului.
Functia initializeaza LCD-ul.
Functia scrie pe cardul micro-sd parola curenta salvata in memorie.
Functia permite resetarea parolei curente, utilizatorul putand accepta (apasa tasta A) sau nu (apasa tasta D). Daca decide resetarea, parola este setata prin functia setPassword() si apoi scrisa pe cardul micro-sd cu un apel al functiei writeToCard().
Functia asteapta introducerea unei parole de 4 cifre de la tastatura. Daca aceasta este corecta, are loc recalibrarea senzorului PIR (un apel calibratePir()), precum si trecerea in modul 0 de functionare. Daca parola este gresita, sistemul va ramane in modul 1, iar alarma va ramane activa.
Demo activare alarma si oprire prin aplicatie
Demo introducere parola incorecta si corecta
Demo password reset
Demo introducere parola gresita si oprire alarma din aplicatie
Aplicatie neconectata \ conectata
Aplicatie conectata, cu notificare primita. Butonul de oprirea a sistemului nu e activat. Se asteapta oprirea prin introducerea parolei.
Aplicatie conectata, cu notificare primita si butonul de oprire a sistemului activ.
De-a lungul proiectului, am intampinat mici obstacole, atat software, cat si hardware. Acestea m-au determinat sa lucrez cu mai multe metode de debugging, de la printarea pe seriala, la testarea separate a componentelor, atat a functionalitatii, cat si a alimentarii lor corecte, utilizand leduri. Am invatat, de asemenea, sa lucrez mai bine cu Arduino, proiectul oferindu-mi posibilitatea de a aprofunda conceptele studiate la laborator si curs.
In concluzie, experienta a fost una placuta si o modalitate excelenta de a pune in practica ceea ce am invatat de-a lungul semestrului despre lucrul cu Arduino, cu datasheet-uri pentru diverse componente electronice si de intra in lumea micro-controller-elor.
Link catre arhiva zip, unde se pot gasi atat codul sursa, cat si codul aplicatie de android si schema electrica:
security_alarm.zip
Github: SecurityAlarm
alertelor;
Security Alarm
Linkuri utile:
Laboratoare
Software
Hardware
Biblioteci utilizate: