Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:amocanu:door_lock_rfid_password [2021/06/03 01:12]
ana_maria.milcu
pm:prj2021:amocanu:door_lock_rfid_password [2021/06/03 01:42] (current)
ana_maria.milcu
Line 71: Line 71:
  
 ==Introducerea parolei== ==Introducerea parolei==
-* La introducerea parolei LCD-ul afișează pe primul rând mesajul 'Enter password'​ iar pe al doilea rând va afișa caracterele tastate. Se folosește funcția **readPassword()**. În program există o variabilă numită **count** care reține indexul caracterului la care s-a ajuns cu citirea parolei, și este incrementat la fiecare caracter nou tastat la keypad. Dacă se apasă tasta '​*',​ se va șterge ultimul caracter tastat din memorie, dar și de pe LCD. Acest lucru se realizează cu ajutorul funcției **deleteLastKey()** care decrementează count-ul și șterge de pe ecran ultima tastă. Parola este gata de validare doar atunci când user-ul a tastat 4 caractere și a apăsat '#',​ care joacă rol de enter. Abia apoi se va verifica egalitatea dintre **password** și **correct_pass**. ​+* La introducerea parolei LCD-ul afișează pe primul rând mesajul 'Enter password'​ iar pe al doilea rând va afișa caracterele tastate. Se folosește funcția **readPassword()**. În program există o variabilă numită **count** care reține indexul caracterului la care s-a ajuns cu citirea parolei, și este incrementat la fiecare caracter nou tastat la keypad. Dacă se apasă tasta '​*',​ se va șterge ultimul caracter tastat din memorie, dar și de pe LCD. Acest lucru se realizează cu ajutorul funcției **deleteLastKey()** care decrementează count-ul și șterge de pe ecran ultima tastă. Parola este gata de validare doar atunci când user-ul a tastat 4 caractere și a apăsat '#',​ care joacă rol de enter. Abia apoi se va verifica egalitatea dintre **password** și **correct_pass**. ​\\ 
 + 
 +==Înregistrarea unui nou tag RFID== 
 +* Dacă se scanează un tag al cărei UID nu se găsește printre **tag_uids**,​ utilizatorul este întrebat dacă dorește să înregistreze acest nou tag. Dacă apasă tasta 1 și introduce parola corectă, numărul de tag-uri disponibile va fi incrementat și noul UID se adaugă în lista **tag_uids**.\\
  
 ==State== ==State==
Line 78: Line 81:
 2) Starea 2 înseamnă că s-a scanat deja un tag înregistrat și acum se așteaptă introducerea parolei corecte, pentru a deschide lacătul. După introducerea parolei, fie se deschide lacătul și LED-ul verde se aprinde în cazul parolei corecte, fie LED-ul roșu se aprinde și se activează sunetul buzzer-ului în cazul parolei greșite. Ulterior se revine în starea 1, se așteaptă deci deblocarea lacătului în continuare. \\ 2) Starea 2 înseamnă că s-a scanat deja un tag înregistrat și acum se așteaptă introducerea parolei corecte, pentru a deschide lacătul. După introducerea parolei, fie se deschide lacătul și LED-ul verde se aprinde în cazul parolei corecte, fie LED-ul roșu se aprinde și se activează sunetul buzzer-ului în cazul parolei greșite. Ulterior se revine în starea 1, se așteaptă deci deblocarea lacătului în continuare. \\
 3) Starea 3 este cea în care se dorește înregistrarea unui tag nou. Similar ca mai sus, se așteaptă o parolă. Dacă este corectă, tag-ul se înregistrează cu succes și utilizatorul este anunțat prin aprinderea LED-ului verde și print-un mesaj pe LCD, dacă nu, LED-ul roșu se aprinde și sunetul buzzer-ului se activează. \\ 3) Starea 3 este cea în care se dorește înregistrarea unui tag nou. Similar ca mai sus, se așteaptă o parolă. Dacă este corectă, tag-ul se înregistrează cu succes și utilizatorul este anunțat prin aprinderea LED-ului verde și print-un mesaj pe LCD, dacă nu, LED-ul roșu se aprinde și sunetul buzzer-ului se activează. \\
 +
 +===Alte funcții folosite===
 +* **//​searchTagUID()//​** - funcție care caută prin lista de UID permise tag-ul curent citit de la modulul RFID, returnează 1 dacă găsește o egalitate, 0 dacă nu\\
 +* **//​allowTag()//​** - funcție care anunță utilizatorul că tag-ul scanat este unul permis, activează LED-ul verde\\
 +* **//​denyTag()//​** - funcție care anunță utilizatorul că tag-ul scanat nu este unul permis, activează LED-ul roșu și buzzer-ul; întreabă utilizatorul dacă dorește înregistrarea noului tag și trece programul în state = 3 \\
 +* **//​permitAccess()//​** - funcție care rotește servo-ul cu 90 de grade(deschiderea lacătului) și activează LED-ul verde \\
 +* **//​denyAccess()//​** - funcție care anunță utilizatorul că nu a primit acces, activează LED-ul roșu și buzzer-ul \\
 +* **//​registerNewTag()//​** - funcție care anunță utilizatorul că noul tag s-a adăugat cu succes, adaugă UID-ul noului tag la lista UID-urilor permise și activează LED-ul verde \\
 +* **//​denyRegisteringNewTag()//​** - funcție care anunță utilizatorul că nu parola este eronată deci nu poate înregistra noul tag, activează LED-ul roșu și buzzer-ul \\
 +* **//​setup()//​** - inițializarea variabilelor,​ state = 1\\
 +* **//​loop()//​** - funcție care ciclează prin cele 3 stări posibile\\
 +
 +\\
  
 ===== Rezultate obținute ===== ===== Rezultate obținute =====
pm/prj2021/amocanu/door_lock_rfid_password.1622671965.txt.gz · Last modified: 2021/06/03 01:12 by ana_maria.milcu
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