This is an old revision of the document!


PIN Door Lock

Autor: Olaru Georgiana-Letitia 333CB

Introducere

Proiectul consta in realizarea unui sistem care are ca scop deblocarea unei usi atunci cand este introdus codul pin corect, urmat de tasta '*'.

Descriere generală

Deschiderea usii se realizeaza prin introducerea codului pin de la tastatura, urmat de tasta '*'. Daca codul introdus este corect, se va afisa un mesaj specific, iar daca este gresit, se va afisa alt mesaj si va putea fi introdus un alt cod, apasandu-se inainte tasta '#'. De asemenea, se poate schimba parola folosind tasta '#' cu una noua.

Vom folosi un timer pentru a nu trece foarte mult timp intre introducerea codului pin si apasarea tastei '*', pentru ca altfel se va reseta si va trebui introdus din nou pinul.

Schema Bloc

Hardware Design

Lista piese:

  • Arduino Uno R3
  • Breadboard
  • Tastatura 4×4
  • Ecran LCD
  • Baterie 9v
  • Releu electric
  • Incuietoare
  • Conector baterie 9v
  • Fire

Schema electrica

Software Design

Pentru a putea implementa partea software am folosit Arduino IDE si librariile Keypad.h de la Mark Stanley si Alexander Brevig, LiquidCrystal_I2C.h de la Frank de Brabander si libraria oficiala EEPROM.h. (Toate link-urile sunt incluse in bibliografie).

La inceputul programului imi declar si imi initializez toate variabilele de care o sa am nevoie. Pentru a salva o parola am folosit memoria EEPROM. Initial am setat o parola demo (0000), dar apoi am comentat acele linii de initializare pentru a nu fi mereu acea parola. Apoi de fiecare data citesc ultima parola salvata pe Arduino si initializez parola in functia numita initialPassword, care este apelata mai tarziu in setup().

In functia setup() setez pe HIGH relay pin-ul (adica poarta este inchisa), este pornit ecranul, se citeste parola din memorie si setez timpii.

In functia loop() se verifica initial timer-ul, adica daca au trecut mai mult de 5 secunde de cand a fost introdusa parola si nu a fost apasata tasta '*', se reseteaza si codul pin trebuie introdus din nou. De asemenea, se apasa cate o cheie de pe tastatura si se verifica ce tasta reprezinta. Daca este '#', atunci se apeleaza functia change() care schimba parola cu una noua, daca este 'C', se sterge tot de pe ecran si se revine cu indexul la 0. Daca este altceva introdus, inseamna ca a fost apasata o tasta care reprezinta o bucata din parola si incepe timer-ul sa contorizeze, iar caracterul se adauga in string. Apoi, daca se apasa tasta '*', incepe sa se verifice cu parola initiala. Se citeste iar parola, se verifica si daca este corecta, apare mesajul 'Pass Accepted!', se trece relay pin-ul in LOW si se deblocheaza poarta si ramane asa timp de 4 secunde. Tot aici iti afiseaza pe ecran daca vrei sa schimbi parola. Daca parola introdusa este gresita, relay pin-ul ramane in continuare pe HIGH, afiseaza 'Wrong Password!' si te intreaba din nou daca vrei sa schimbi parola.

Functia change() schimba parola cu una noua. Cand este apasata tasta '#', trebuie introdusa parola curenta si daca este cea corecta, poti sa introduci noua parola si se salveaza in EEPROM caracter cu caracter si afiseaza ca s-a schimbat parola cu succes.

Rezultate Obţinute

Concluzii

Realizarea acestui proiect a fost o experienta interesanta pentru ca am putut expune cunostintele dobandite pe parcursul semestrului intr-un mod fun, practic si putand implementa un proiect la alegere.

Download

Bibliografie/Resurse

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

Export to PDF

pm/prj2022/imacovei/georgiana.olaru.1652555747.txt.gz · Last modified: 2022/05/14 22:15 by georgiana.olaru
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