This is an old revision of the document!


Alarma securitate

Introducere

Alarma securitate este o alarma cu display care se declanseaza daca detecteaza miscare, putand fi dezactivata doar printr-o telecomanda.

Descriere generală

La inceput alarma e pe off si poate fi activata prin telecomanda prin plimbarea printr-un meniu afisat pe display-ul LCD 12C. In plus, tot din acest meniu se poate seta timer-ul la 5 sec sau 10 sec. Acest timer e folosit pt. a sti dupa cate secunde se porneste senzorul de miscare dupa alegerea activarii alarmei. Daca senzorul de miscare detecteaza ceva, o sa se auda un sunet ca de alarma care poate fi oprit doar din telecomanda iar alarma se va dezactiva, urmand ca apoi sa fie reactivata tot din telecomanda daca se doreste. In plus mai sunt 3 LED-uri, dintre care unul rosu care indica daca alrma e pe off, unul verde care indica daca e pe on si unul galben care indica cand alarma poate primi comenzi de la telecomanda intervalul fiind de minim 1 sec intre 2 comenzi succesive.

Hardware Design

 Schema hardware Lista piese:

  • Arduino Uno
  • LCD 12C
  • Senzor miscare
  • Buzzer
  • 3xLED
  • Telecomanda
  • Senzor
  • Breadboard

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

  • Mediu de dezvoltare: Arduino IDE
  • Librării şi surse 3rd-party: IRremote.h, LiquidCrystal_I2C.h

Detalii de implementare

In setup() am configurat toti pinii pe de care aveam nevoie si am configurat intreruperile de tip timer. Pentru configurarile intreruperilor de tip timer m-am folosit de laboratorul 3 de PM. In codul intreruperii, in functia ISR() am o var. volatile long count pe care o cresc mereu.

Pentru a sti ce tasta apas pe telecomanda m-am folosit de IrReceiver.decodedIRData.command care imi intoarcea un numar mai mare ca zero pentru fiecare tasta in parte, dupa care m-am definit cu define toate tastele cu numarul comenzii dat de senzorul IR cu define (#define TASTA_OK 28). Cand apasam o data pe o tasta de cele mai multe ori era interpretata de mai multe ori lucru ce ducea la alegerea unor optiuni nedorite pe meniul afisat pe ecranul LCD, lucru ce a trebuit rezolvat prin folosirea unui timer, astfel trebuie sa astepti 1 sec intre 2 comenzi succesive.

Pentru afisarea meniului pe display m-am folosit de un switch case pe mai multe stari, iar in functie de ce tasta e apasata de pe telecomanda, se schimba var int STATE = 0 cu o alta stare. Pentru a afisa text pe ecran m-am folosit de functiile lcd.clear(), lcd.setCursor() si lcd.print().

Cand se apasa tasta OK STATE ia val lui STATE_4, iar var int flag_alarma = 0 devine 1, astfel se intra intr-u if statement unde se verifica cu digitalRead(PIN_TO_SENSOR) daca valoarea pe pin e LOW sau HIGH. Daca e HIGH insaeamna ca a fost detectata miscare iar var int alarma = 0 devine 1, care duce la apelarea functiei sound(). Pe pin-ul PIN_TO_SENSOR e conectat senzorul de miscare HC-SR501.

Rezultate Obţinute

 Schema hardware

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Video cu functionalitatile: PROIECT

Concluzii

Nu poti folosi functia tone() impreuna cu biblioteca IRremote deoarece, ambele lucreaza pe acelasi timer lucru care duce la incapabilitatea senzorului IR de a mai procesa comenzi. Eu avand nevoie doar de un sunet care sa sune a alarma am putut rezolva acest lucru prin scrierea pe pin-ul pe care e conectat buzze-rul semnale de HIGH sau LOW, evitand astfel utilizarea functiei tone(). O alta metoda era schimbarea timer-ului pe care functioneaza biblioteca IRremote.

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2023/danield/alarma-securitate.1685266761.txt.gz · Last modified: 2023/05/28 12:39 by mihail.oprea2911
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0