Differences

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

Link to this comparison view

pm:prj2023:ndrogeanu:0205 [2023/05/27 14:25]
iulia.olteanu [Software Design]
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 7: Line 7:
 Scopul acestui proiect este construirea unei cutii pentru a proteja diverse obiecte în siguranță de către proprietar. Acesta poate fi utilizat pentru a păstra documente importante precum acte de proprietate,​ contracte de afaceri, buletine de identitate, pașapoarte sau alte documente personale. De asemenea, un alt rol al seifului este de a păstra obiecte de valoare, cum ar fi bijuterii, bani, monede sau alte obiecte prețioase. Scopul acestui proiect este construirea unei cutii pentru a proteja diverse obiecte în siguranță de către proprietar. Acesta poate fi utilizat pentru a păstra documente importante precum acte de proprietate,​ contracte de afaceri, buletine de identitate, pașapoarte sau alte documente personale. De asemenea, un alt rol al seifului este de a păstra obiecte de valoare, cum ar fi bijuterii, bani, monede sau alte obiecte prețioase.
  
-Se dorește realizarea unui seif cu încuietoare,​ iar pentru a fi deschis este nevoie să fie scanat un card RFID sau să fie introdus un cod de acces corect prin intermediul unor potențiometre. Ideea realizării acestui proiect a venit ca urmare a unei nevoi personale de a-mi păstra în siguranță obiecte valoroase în momentul în care sunt plecată în vacanță. Din acest motiv îl consider util, atât pentru mine, cât și pentru alte persoane care își doresc să depoziteze diverse lucruri în certitudine.+Se dorește realizarea unui seif cu încuietoare,​ iar pentru a fi deschis este nevoie să fie scanat un card RFID și să fie introdus un cod de acces corect prin intermediul unor potențiometre. Ideea realizării acestui proiect a venit ca urmare a unei nevoi personale de a-mi păstra în siguranță obiecte valoroase în momentul în care sunt plecată în vacanță. Din acest motiv îl consider util, atât pentru mine, cât și pentru alte persoane care își doresc să depoziteze diverse lucruri în certitudine.
 </​note>​ </​note>​
 ===== Descriere generală ===== ===== Descriere generală =====
  
-Utilizatorul ​are două posibilități de a accesa obiectele existente ​în interiorul seifului si de a debloca modalitatea ​de închidere al acestuia: +Proiectul propus ​are ca scop dezvoltarea unui seif securizat, bazat pe autentificarea în două factori, pentru a oferi un nivel ridicat de securitate șprotecție pentru obiectele ​de valoare ale utilizatorilor. 
-   * scanarea unei cartele RFID corecte\\ + 
-   * introducerea unui cod de acces prin intermediul celor două potențiometre\\ +Principala caracteristică ​acestui seif constă ​în implementarea unui sistem ​de autentificare în două factori, care implică utilizarea ​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. 
-În cazul în care codul introdus ​sau cardul scanat este corespunzător,​ servomotorul va deschide cutia securizată,​ iar buzzer-ul si ledul de culoare verde vor fi activate pentru a semnaliza acustic si vizual starea curentă a seifului.\\+ 
 +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. 
 + 
 +În cazul în care codul introdus ​și cardul scanat este corespunzător,​ servomotorul va deschide cutia securizată,​ iar buzzer-ul si ledul de culoare verde vor fi activate pentru a semnaliza acustic si vizual starea curentă a seifului.\\
 De asemenea, ecranul LCD va afișa mesaje informative,​ adresate proprietarului precum: De asemenea, ecranul LCD va afișa mesaje informative,​ adresate proprietarului precum:
    * codul introdus în varianta clasică cu ajutorul potențiometrelor\\    * codul introdus în varianta clasică cu ajutorul potențiometrelor\\
-   * mesaj de atenționare dacă este scanat ​o cartelă ​greșită sau inserat un cod incorect în raport cu cel adecvat\\+   * mesaj de atenționare dacă este scanat ​un card greșit sau inserat un cod incorect în raport cu cel adecvat\\
    * informații privind starea curentă a cutiei    * informații privind starea curentă a cutiei
      * închisă      * închisă
Line 66: Line 71:
    * Design circuit: TinkerCad    * Design circuit: TinkerCad
 </​note>​ </​note>​
 +
 +<note important>​În cadrul codului, am folosit mai multe variabile, iar acestea au fost definite astfel:</​note> ​  
 +**LCD**
 +    LiquidCrystal_I2C lcd(0x27, 16, 2);
 +**Servomotor**
 +    Servo myServo;
 +**RFID**
 +    MFRC522 mfrc522(SS_PIN,​ RST_PIN);
 +**Codul introdus prin intermediul potențiometrelor**
 +    String cod;
 +**Număr de încercări greșite**
 +     ​volatile int nr;
 +**Caractere speciale, folosite pentru afișarea pe ecran**
 +    const byte Speaker[8] = {
 +    0b00001,
 +    0b00011,
 +    0b01111,
 +    0b01111,
 +    0b01111,
 +    0b00011,
 +    0b00001,
 +    0b00000
 +    };
 +
 +    const byte Heart[8] = {
 +    0b00000,
 +    0b01010,
 +    0b11111,
 +    0b11111,
 +    0b01110,
 +    0b00100,
 +    0b00000,
 +    0b00000
 +    };
 +
 +    const byte Check[8] = {
 +    0b00000,
 +    0b00001,
 +    0b00011,
 +    0b10110,
 +    0b11100,
 +    0b01000,
 +    0b00000,
 +    0b00000
 +    };
 +
 +    const byte Lock[8] = {
 +    0b01110,
 +    0b10001,
 +    0b10001,
 +    0b11111,
 +    0b11011,
 +    0b11011,
 +    0b11111,
 +    0b00000
 +    };
 +**Stare seif**
 +    volatile bool stare;
 +**Valori citite cu potențiometrele**
 +    int val1, val2;
 +    ​
 +
 +**//​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\\ 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\\
-{{:pm:prj2023:ndrogeanu:rfid.jpg?​200|}} ​      {{:pm:prj2023:​ndrogeanu:​configuratie_citire_card.png?​300x300|}}\\ + 
-{{:pm:prj2023:ndrogeanu:uid_rfid.jpg?​400x400|}}\\ ​+Codul a fost modularizat astfel: 
 +  * stare_seif()afișare stare curentă a cutiei, închisă sau deschisă 
 +  * 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 86: 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 106: 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>​
  
pm/prj2023/ndrogeanu/0205.1685186750.txt.gz · Last modified: 2023/05/27 14:25 by iulia.olteanu
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