This shows you the differences between two versions of the page.
pm:prj2021:agrigore:mecanism_verificare_parola [2021/05/23 16:07] ioana.marin1106 |
pm:prj2021:agrigore:mecanism_verificare_parola [2021/05/27 19:08] (current) ioana.marin1106 [Bibliografie/Resurse] |
||
---|---|---|---|
Line 99: | Line 99: | ||
== Conectarea incuietorii (solenoid) == | == Conectarea incuietorii (solenoid) == | ||
Pentru actionarea solenoidului am folosit un releu care alimentat de cele 4 baterii va genera un camp electromagnetic care va deschide/inchide incuietoarea. Cele doua borne ale solenoidului sunt conectate astfel: | Pentru actionarea solenoidului am folosit un releu care alimentat de cele 4 baterii va genera un camp electromagnetic care va deschide/inchide incuietoarea. Cele doua borne ale solenoidului sunt conectate astfel: | ||
- | * Borna negativa este conectata la borna negativa a celor 4 baterii pozitionate in paralel. | + | * Borna negativa este conectata la borna negativa a celor 4 baterii pozitionate in serie. |
* Borna pozitiva este conectata la NO pin al releului. | * Borna pozitiva este conectata la NO pin al releului. | ||
+ | |||
+ | == Rezultatul initial == | ||
+ | Rezultatul initial este format doar din conectarea tuturor componentelor si functionarea corecta a programului incarcat pe Arduino, dar fara niciun fel de package. | ||
+ | {{ :pm:prj2021:agrigore:rsz_initiala.jpg?nolink |}} | ||
Line 114: | Line 118: | ||
* [[https://www.arduino.cc/reference/en/libraries/rtclib/ | RTClib.h]]: Folosita pentru a se putea realiza comunicarea cu modulul RTC DS3231. | * [[https://www.arduino.cc/reference/en/libraries/rtclib/ | RTClib.h]]: Folosita pentru a se putea realiza comunicarea cu modulul RTC DS3231. | ||
+ | === Program === | ||
+ | Ideea implementarii programului este urmatoarea: | ||
+ | - Functia "setup()": | ||
+ | * Se realizeaza initializarea modulului RTC folosind functia "RTC_module_handler()" care va verifica daca exista conectat acest modul si il va initializa cu un anumit format de data (la alegerea fiecarui utilizator). | ||
+ | * Se va seta frecventa interfetei "Serial" de pe Arduino folosita pentru afisarea parolei dinamice a seifului. | ||
+ | * Se vor seta pinii corespunzatori LED-urilor, buzzer-ului si solenoidului de tip pini de OUTPUT. | ||
+ | * Se va extrage momentul actual al zilei folosindu-se modulul RTC si se va obtine o parola folosindu-se o functie de hash aplicata asupra momentului din zi curent, lucru realizat cu ajutorul functiei "set_password(moment, pass_code)". | ||
+ | - Functia "loop()": | ||
+ | * Vor fi afisate pe ecranul LCD regulile seifului in legatura cu lungimea parolei si tasta care trebuie apasata pentru a se efectua verificarea parolei (tasta'D') prin intermediul functiei "lcd_setup()". | ||
+ | * Se va face verificarea parolei propriu-zis: | ||
+ | * Se va verifica fiecare caracter introdus de la Keypad existand trei cazuri: | ||
+ | * In cazul in care caracterul introdus de catre utilizator este corect se va trece la urmatorul caracter fara a se sta o variabila boolean ce contorizeaza faptul ca un caracter introdus este gresit sau nu. | ||
+ | * In cazul in care caracterul introdus este gresit se va seta variabila de tip boolean cu valoarea "true" (deci parola introdusa de utilizator este gresita). | ||
+ | * Exista cazul in care utilizatorul, din neatentie, poate tasta gresit un caracter al parolei, asa ca exista optiunea de stergere a caracterului anterior folosindu-se tasta 'C'. Astfel se ofera o a doua sansa la a putea deschide seiful ^_^. | ||
+ | * In final, se verifica daca parola introdusa este corecta prin verificarea variabilei de tip boolean: | ||
+ | * Daca parola este corecta: | ||
+ | * LED-ul verde se va aprinde | ||
+ | * Buzzerul va genera o melodie | ||
+ | * Incuietoarea pozitionata pe usita seifului va fi actionata astfel ca usita seifului va putea fi deschisa | ||
+ | * In cazul in care dorim sa resetam seiful si usita seifului sa fie incuiata din nou, se va apasa tasta 'C'. | ||
+ | * Daca parola este gresita: | ||
+ | * LED-ul rosu se va aprinde | ||
+ | * Buzzerul va genera un ton de eroare simplist | ||
+ | * Usita seifului va ramane inchisa, neputand fi deschisa, iar utilizatorul va trebuie sa astepte 5 secunde pentru a incerca iar sa introduca parola. La trei incercari consecutive esuate de introducere a parolei, seiful se va bloca timp de 15 secunde. | ||
+ | - Functii aditionale: | ||
+ | * Functia "set_password(moment, password)": | ||
+ | * Este functia ce realizeaza aplicarea unui hash asupra momentului zilei in ora, minute si secunde dat de modulul RTC. | ||
+ | * Este generat cate un caracter din cele 6 ale parolei folosindu-se operatii matematice aplicate asupra numerelor ce reprezinta ora, minutul si secundele din momentul zilei. | ||
+ | * Sunt folosite atat ridicari la putere, cat si inmultiri, impartiri, adunari si verificari daca de exemplu ora data de modulul RTC este divizibila cu anumite numere prime, in fiecare caz existand un anumit cod hash, astfel asigurandu-ne ca un anumit moment al zilei va avea un hash unic. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | **TODO** | + | ==== Design-ul exterior ==== |
+ | ---- | ||
+ | Acesta este design-ul seifului privit din fata si din spate. | ||
+ | {{ :pm:prj2021:agrigore:rsz_fata_seif_2_.jpg?nolink&300 |}} | ||
+ | {{:pm:prj2021:agrigore:spate_seif.jpeg?nolink&300|}}\\ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Am folosit o cutie de carton inauntrul careia am reusit sa incorporez toate componentele care nu trebuia sa fie neaparat vizibile. Am scos cele doua LED-uri in afara cutiei iar Keypad-ul si ecranul LCD au fost plasate pe usita seifului impreuna cu un maner cu care putem deschide usor usita.\\ | ||
+ | \\ | ||
+ | {{ :pm:prj2021:agrigore:seif2.jpeg?nolink&300|}} | ||
+ | {{:pm:prj2021:agrigore:seif1.jpeg?nolink&300|}} | ||
+ | {{:pm:prj2021:agrigore:seif3.jpeg?nolink&300|}} | ||
+ | |||
+ | ==== Rezultatul final ==== | ||
+ | ---- | ||
+ | Am obtinut in final un mini-seif functional construit treptat, initial fiind un proiect mult mai simplist, incuietoarea si releul impreuna cu bateriile fiind achizionate ulterior, dorindu-se a iesi ceva mai complex decat un simplu mecanism de verificare a parolelor.\\ | ||
+ | \\ | ||
+ | {{ :pm:prj2021:agrigore:welcome.jpeg?300 |}} | ||
+ | {{:pm:prj2021:agrigore:enter_passwd.jpeg?300|}} | ||
+ | {{ :pm:prj2021:agrigore:pass.jpeg?300|}} | ||
+ | {{ :pm:prj2021:agrigore:retry.jpeg?300 |}} | ||
+ | |||
+ | ==== Functionare ==== | ||
+ | [[https://youtu.be/ettk-7eQeKM | Video Demo Safe-Deposit Box]] | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | **TODO** | + | * Proiectul este realizat in intregime si funcional. |
+ | * Initial s-a dorit a fi un mecanism simplit de verificare a parolelor, dar ulterior au fost adaugate solenoidul, releul si cele 4 baterii 3.7V Li-Ion. | ||
+ | * A fost foarte interesant tot procesul de realizare a sa (din punct de vedere hardware, conectarea componentelor si research-ul facut despre toate acestea), chiar daca in final de la prea multe teste aplicatie asupra sa am reusit aproape sa stric cablul de alimentare dintre Arduino si laptop (inca este functional, dar cu greu). | ||
+ | * Procesul de confectionare al cutiei a fost costisitor din punct de vedere al timpului insa cred ca a meritat. | ||
===== Download ===== | ===== Download ===== | ||
- | **TODO** | + | Sursele pot fi gasite {{:pm:prj2021:agrigore:proiect_pm_-_safe_deposit_box.zip| aici}}. |
===== Jurnal ===== | ===== Jurnal ===== | ||
- | * 25/4: creare pagina Wiki, descriere, diagrama bloc, lista componente hardware. | + | * 23/04: alegere tema proiect. |
+ | * 25/04: creare pagina Wiki, descriere, diagrama bloc, lista componente hardware (sumar). | ||
+ | * 02/05: achizitionarea primelor componente (ecran LCD, Keypad, modul RTC, fire, baterie pentru modulul RTC). | ||
+ | * 08/05: inceperea lucrului la proiect | ||
+ | * 12/05: achizitionarea solenoidului, releului, suportului pentru cele 4 baterii impreuna cu acestea. | ||
+ | * 14/05: adaugarea noilor componente la proiectul initial. | ||
+ | * 26/05: realizarea cutiei in care vor fi incorporate toate componentele proiectului. | ||
+ | * 22/05: revizuirea codului, filmarea videoclipului demo. | ||
+ | * 23/05: realizarea paginii de wiki finale pentru proiect. | ||
===== Bibliografie/Resurse===== | ===== Bibliografie/Resurse===== | ||
- | {{:pm:prj2021:agrigore:mecanism_de_verificare_a_parolelor_1_.pdf| PDF}}\\ | + | * [[https://www.arduino.cc/reference/en/libraries/rtclib/]] |
- | [[pm:prj2021:agrigore:mecanism_verificare_parola|]] | + | * [[https://www.arduino.cc/reference/en/language/functions/communication/serial/]] |
+ | * [[https://create.arduino.cc/projecthub/akshayjoseph666/interface-i2c-16x2-lcd-with-arduino-uno-just-4-wires-273b24]] | ||
+ | * [[https://randomnerdtutorials.com/guide-for-relay-module-with-arduino/]] | ||
+ | * [[https://arduinogetstarted.com/tutorials/arduino-relay]] | ||
+ | * [[https://www.youtube.com/watch?v=0wYp7rd4IIo&ab_channel=cytrontech]] | ||
+ | * [[https://www.circuitbasics.com/how-to-set-up-a-keypad-on-an-arduino/]] | ||
+ | * [[https://create.arduino.cc/projecthub/akshayjoseph666/interface-i2c-16x2-lcd-with-arduino-uno-just-4-wires-273b24]] | ||
+ | * [[https://learn.adafruit.com/adafruit-ds3231-precision-rtc-breakout/arduino-usage]] | ||
+ | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab0-2021]] | ||
+ | * [[https://www.arduino.cc/en/Tutorial/BuiltInExamples/toneMelody/]] | ||
+ | * [[https://github.com/robsoncouto/arduino-songs]] | ||
+ | {{:pm:prj2021:agrigore:mecanism_de_verificare_a_parolelor_2_.pdf| PDF}}\\ | ||
+ | [[pm:prj2021:agrigore:mecanism_verificare_parola]] |