This shows you the differences between two versions of the page.
pm:prj2023:ndrogeanu:0205 [2023/05/27 17:20] iulia.olteanu [Descriere generală] |
pm:prj2023:ndrogeanu:0205 [2023/05/29 21:30] (current) iulia.olteanu [Rezultate Obţinute] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Locky Box ====== | ====== Locky Box ====== | ||
- | Nume : <iulia.olteanu@stud.acs.upb.ro>\\ | + | Nume : //Iulia Olteanu//\\ |
Grupă : //334CC// | Grupă : //334CC// | ||
===== Introducere ===== | ===== Introducere ===== | ||
Line 15: | Line 15: | ||
Principala caracteristică a acestui seif constă în implementarea unui sistem de autentificare în două factori, care implică utilizarea a două metode distincte de verificare a identității utilizatorului înainte de a permite accesul la seif. Această abordare adaugă un nivel suplimentar de securitate în comparație cu metodele tradiționale de autentificare cu o singură parolă sau PIN. | Principala caracteristică a acestui seif constă în implementarea unui sistem de autentificare în două factori, care implică utilizarea a două metode distincte de verificare a identității utilizatorului înainte de a permite accesul la seif. Această abordare adaugă un nivel suplimentar de securitate în comparație cu metodele tradiționale de autentificare cu o singură parolă sau PIN. | ||
- | Primul factor de autentificare este reprezentat de codul introdus prin intermediul celor două potențiometre. Astfel, dacă se citesc cele două valori cu ajutorul potențiometrelor, iar suma acestora se află în intervalul [50, 150], atunci codul de acces format prin concatenarea celor două numere este corect. | + | Primul factor de autentificare este reprezentat de codul introdus prin intermediul celor două potențiometre. Astfel, dacă se citesc cele două valori cu ajutorul potențiometrelor, iar suma acestora se află în intervalul [50, 150], atunci codul de acces format prin concatenarea celor două numere este corect. Dacă codul format are suma mai mică sau egală decât 15, se afișează codul, iar seiful este în //idle//. În caz contrar, codul format este incorect. |
Al doilea factor de autentificare este ceva ce utilizatorul cunoaște, în cazul de față o cartelă RFID corectă. Utilizatorul va trebui să apropie acest card pentru a debloca modalitatea de închidere a seifului și a accesa obiectele existente în interiorul acestuia. | Al doilea factor de autentificare este ceva ce utilizatorul cunoaște, în cazul de față o cartelă RFID corectă. Utilizatorul va trebui să apropie acest card pentru a debloca modalitatea de închidere a seifului și a accesa obiectele existente în interiorul acestuia. | ||
Line 81: | Line 81: | ||
**Codul introdus prin intermediul potențiometrelor** | **Codul introdus prin intermediul potențiometrelor** | ||
String cod; | String cod; | ||
- | **Număr de încercări greșite** | + | **Număr de încercări greșite** |
volatile int nr; | volatile int nr; | ||
- | **Caractere speciale, folosite pentru afișarea pe ecran** | + | **Caractere speciale, folosite pentru afișarea pe ecran** |
const byte Speaker[8] = { | const byte Speaker[8] = { | ||
0b00001, | 0b00001, | ||
Line 127: | Line 127: | ||
0b00000 | 0b00000 | ||
}; | }; | ||
+ | **Stare seif** | ||
+ | volatile bool stare; | ||
+ | **Valori citite cu potențiometrele** | ||
+ | int val1, val2; | ||
| | ||
- | Prima etapă din realizarea proiectului a fost legată de aflarea UID a cardului RFID utilizat pentru a debloca cutia, iar accesul proprietarului la obiectele din interior să fie permis. Acest pas a fost realizat, urmărind un demo din biblioteca MFRC522.h\\ | ||
+ | **//Macro-uri utilizate://**\\ | ||
+ | * Instanța RFID | ||
+ | *#define SS_PIN 10 | ||
+ | *#define RST_PIN 9 | ||
+ | * Leduri | ||
+ | *#define LED_G 7 | ||
+ | *#define LED_R 6 | ||
+ | * Buzzer | ||
+ | *#define BUZZER 3 | ||
+ | * Potențiometre | ||
+ | *#define POTENTIOMETRU1 A0 | ||
+ | *#define POTENTIOMETRU2 A1 | ||
+ | Prima etapă din realizarea proiectului a fost legată de aflarea UID a cardului RFID utilizat pentru a debloca cutia, iar accesul proprietarului la obiectele din interior să fie permis. Acest pas a fost realizat, urmărind un demo din biblioteca MFRC522.h\\ | ||
- | + | Codul a fost modularizat astfel: | |
- | {{:pm:prj2023:ndrogeanu:rfid.jpg?200|}} {{:pm:prj2023:ndrogeanu:configuratie_citire_card.png?300x300|}}\\ | + | * stare_seif(): afișare stare curentă a cutiei, închisă sau deschisă |
- | {{:pm:prj2023:ndrogeanu:uid_rfid.jpg?400x400|}}\\ | + | * afisare_mesaj_cod(): afișare pe LCD text ("Introduceti cod") |
+ | * afisare_mesaj_card(): afișare pe LCD text ("Apropiati card") | ||
+ | * acces_depasit(): codul sau cardul au fost folosite greșit de trei ori consecutiv, se afișează un mesaj de atenționare, ledul roșu pâlpăie și buzzerul emite semnale acustice până în momentul în care este scanat un card corect | ||
+ | * acces_permis(): cutia este deschisă prin intermediul servomotorului, ledul verde este activ, iar buzzerul emite un scurt semnal sonor. | ||
+ | * acces_nepermis(): codul sau cartele sunt greșite, se afișează un mesaj corespunzător pe LCD | ||
+ | * setup(): se inițializeză MFRC522, comunicația serială, magistrala SPI, pinii pentru servomotor, poziția de start a servomotorului, cele două leduri, cele două potențiometre, buzzerul, caracterele speciale, se afișează un mesaj de bun-venit pentru utilizator | ||
+ | * citire_cod(): valorile sunt preluate de la potențiometre, acestea sunt mapate în intervalul [0, 100] | ||
+ | * loop(): au loc verificări cu privire la suma celor două valori citite, dacă acestea se află sau nu în intervalul corespunzător de valori și se citesc noile numere prin intermediul potențiometrelor. | ||
Line 151: | Line 174: | ||
{{:pm:prj2023:ndrogeanu:p4.jpg?200|}} | {{:pm:prj2023:ndrogeanu:p4.jpg?200|}} | ||
+ | **Rezultate finale**\\ | ||
+ | **Codul introdus și cartela scanată sunt corecte**\\ | ||
+ | {{:pm:prj2023:ndrogeanu:3.jpg?200|}} | ||
+ | {{:pm:prj2023:ndrogeanu:2.jpg?200|}} | ||
+ | {{:pm:prj2023:ndrogeanu:4.jpg?200|}} | ||
+ | {{:pm:prj2023:ndrogeanu:6.jpg?200|}} | ||
+ | {{:pm:prj2023:ndrogeanu:7.jpg?200|}} | ||
+ | |||
+ | **Codul introdus este corect, dar cartela scanată este greșită**\\ | ||
+ | {{:pm:prj2023:ndrogeanu:8.jpg?200|}} | ||
+ | {{:pm:prj2023:ndrogeanu:9.jpg?200|}} | ||
+ | |||
+ | **Cod sau card greșit de trei ori consecutiv, este nevoie de un card corect pentru a debloca sistemul audio și vizual și a deschide seiful**\\ | ||
+ | {{:pm:prj2023:ndrogeanu:10.jpg?200|}} | ||
+ | {{:pm:prj2023:ndrogeanu:11.jpg?200|}} | ||
+ | {{:pm:prj2023:ndrogeanu:12.jpg?200|}} | ||
+ | {{:pm:prj2023:ndrogeanu:13.jpg?200|}} | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Realizând acest proiect, am identificat multe lucruri practice care pot fi făcute cu ajutorul unui Arduino. Acest proiect a reprezentat o introducere interesantă în microprocesoare, utilă și care a necesitat efort. Locky Box poate reprezenta un punct de pornire pentru realizarea unei | ||
+ | cutii securizate mai performante. Chiar dacă am întâmpinat bug-uri pe parcurs, sunt mulțumită de implementarea obținută și faptul că este un proiect practic și utilizabil. Am încercat să aduc o notă personală în modul de prezentare al circuitului final, prin caracterele custom create și afișate pe ecranul LCD. Pe viitor aș vrea să îmi extind implementarea, poate prin crearea unei aplicații care să permită interacțiunea într-un mod interactiv cu utilizatorii, astfel încât aceștia să își poată seta, de exemplu, propria cartela sau cod de acces la momentul achiziției seifului, să modifice cardul sau/și codul. | ||
===== Download ===== | ===== Download ===== | ||
<note warning> | <note warning> | ||
- | 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ă ;-). | + | *Cod Arhivă {{:pm:prj2023:ndrogeanu:locky_box.zip|}} |
- | + | ||
- | 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**. | + | |
</note> | </note> | ||
+ | |||
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 171: | Line 212: | ||
* 14.05.2023 - Adăugare schemă electrică și design circuit\\ | * 14.05.2023 - Adăugare schemă electrică și design circuit\\ | ||
* 16.05.2023 - Completare milestone 2\\ | * 16.05.2023 - Completare milestone 2\\ | ||
+ | * 27.05.2023 - Completare detalii software\\ | ||
+ | * 27.05.2023 - Finalizare pagina wiki | ||
</note> | </note> | ||