Documente Academic
Documente Profesional
Documente Cultură
de citire a amprentei
Grupa 1241
08.01.2016
Cluj - Napoca
Savut Flavius
Tutuianu Radu
Rapolti Laszlo
Cuprins
1. Introducere
2. Descrierea componentelor folosite
a. Arduino generaliti
b. Arduino Due
c. Senzor de amprenta Adafruit
i. Modul de funcionare al unui sistem de identificare bazat pe
metode biometrice
1.Introducere
Scopul proiectului este de a crea un sistem de securitate de nivel ridicat pentru a permite
accesul personalului pe baza amprentei si a unei parole universale independent de utilizator.
La pornirea sistemului utilizatorului i se va cere amplasarea unui deget nregistrat in baza
de date pe senzorul de amprenta, in cazul in care amprenta a fost recunoscuta sistemul va cere
introducerea parolei.
Dup introducerea codului ( care este setat in prealabil ) se apas butonul * pentru
confirmarea si verificarea ei. Codul si amprenta fiind introduse corect apare un meniu care
descrie funciile care sistemul le poate executa.
Acesta in cazul apsrii butoanelor A sau B de pe tastatura fiind acionarea a cate unui
releu de pe modulul de releu, in cazul apsrii butonului C acesta va decupla releele.
b. Arduino Due
Caracteristici:
Procesor: AT91SAM3X8E
Tensiune de lucru: 3.3 V
Caracteristici :
Weight: 20 grams.
Diagrama din figura 2 prezint schema-bloc simplificat (generic) a unui sistem biometric.
Principalele operaii pe care sistemul biometric le poate efectua sunt nregistrarea (nscrierea) i
testarea (compararea pentru identificare sau pentru verificare). n timpul fazei de nregistrare,
informaiile biometrice ale unui individ sunt stocate. n timpul fazei de testare, datele biometrice
sunt detectate i comparate cu informaiile stocate anterior. De notat c este crucial ca aciunile
de stocare i de regsire a informaiilor, n cadrul acestor sisteme, s fie securizate, pentru ca
sistemele biometrice s se dovedeasc robuste.
ii.
Una dintre problemele care se pun n cazul sistemelor biometrice este aceea
a construirii i implementrii unui sistem care s asigure, teoretic, o potrivire 100%
la fiecare comparare ntre datele biometrice curente i informaiile de referin
stocate n baza de date. n realitate, un astfel de sistem ar fi lipsit de utilitate
practic, deoarece foarte putini utilizatori l-ar putea folosi (sau chiar nici unul).
Majoritatea utilizatorilor care ar solicita accesul la resursele protejate prin
autentificare biometric ar fi respini practic tot timpul, deoarece rezultatele
msurrilor parametrilor obinui din procesarea datelor biometrice nu ar fi
niciodat aceleai la fiecare proces de comparaie (variabilitate). n mod real, se
permite o variabilitate a datelor biometrice (o gam admis a acestei variabiliti
fiind de 0,1-1% ), pentru a nu fi respini foarte muli dintre utilizatorii legitimi.
Aceast variabilitate este totui limitat de nivelul de securitate dorit. Cu ct
variabilitatea permis este mai mare, cu att mai ridicat este i probabilitatea ca
un impostor cu date biometrice asemntoare datelor de referin s fie acceptat
n sistem, ca utilizator legitim (autorizat).
n mod uzual, aceast variabilitate permis pentru datele biometrice este
calificat drept prag sau nivel de securitate.
Cnd variabilitatea permis este mic, atunci pragul sau nivelul de securitate
este ridicat, iar dac se permite o variabilitate mai mare, atunci pragul sau nivelul
de securitate este sczut.
Cei 3 parametri de performanta sunt: rata falselor acceptri sau a potrivirilor
false (FAR false acceptance rate -sau FMR false match rate), rata falselor
respingeri sau a nepotrivirilor false (FRR false rejection rate sau FNMR false non
match rate), precum i rata erorilor la nregistrare (FTER - failure to enroll rate). O
potrivire fals apare atunci cnd sistemul potrivete o identitate n mod incorect, iar
FMR (sau FAR, rata falselor acceptri) reprezint probabilitatea ca indivizii s fie
acceptai n urma unei potriviri false.
n sistemele de verificare i de identificare pozitiv, persoane neautorizate
pot obine acces la faciliti sau resurse ca urmare a domeniului de toleran larg.
ntr-un sistem de identificare negativ, rezultatul unei false potriviri poate fi
respingerea fals a accesului unui utilizator legitim, dac domeniul de toleran este
foarte ngust. Rata falselor acceptri se definete prin probabilitatea ca sistemul s
declare o potrivire reuit ntre ablonul de intrare i un ablon din baza de date,
ablon care, n realitate, nu se potrivete cu cel curent prezentat sistemului
biometric.
Acest parametru exprim procentul potrivirilor nevalide. Astfel de sisteme
sunt critice, deoarece ele sunt utilizate, n mod comun, pentru a interzice anumite
aciuni pentru persoane neautorizate. O nepotrivire fals apare atunci cnd un
sistem respinge o identitate valid, iar FNMR (sau FRR, rata respingerilor false) este
probabilitatea ca un utilizator valid s nu fie potrivit, n mod eronat. n sistemele de
Un releu este definit ca un comutator acionat electric utilizarea lui principala fiind
controlul circuitelor ce au un semnal de putere mic sau cnd mai multe circuite trebuie s fie
controlate de un semnal.
Primul releu a fost utilizat n circuitele telegrafice pe distane lungi ca si amplificatoare,
practic au repetat semnalul primit de la un circuit, i l-au transmis ntr-un altul, acestea au fost,
de asemenea, utilizate la primele calculatoare pentru a efectua operaii logice.
Modulul releu Arduino este proiectat pentru o gam larg de microcontrolere, cum ar fi
placa de Arduino, AVR, PIC, ARM, cu ieiri digitale. Acest modul include 2 relee.
Sistemul releu este format din urmtoarele componente:
* NC-normal nchis, caz n care este conectat la NC COM cnd INT1 este setat sczut si deconectat,
atunci cnd INT 1 este mare.
* NO normal deschis, caz n care NO este deconectat cu COM cnd INT1 este setat sczut i conectat
atunci cnd INT 1 este mare.
Prin software-ul Arduino, putem programa cu uurin atunci cnd releul primete putere,
funcionnd astfel la fel ca un LED:
Releu - Utilizare simpla:
digitalWrite (Relay, HIGH); // Relay receives power for 1s
delay (1000);
digitalWrite (Relay, LOW); // Relay doesnt receive power for 1s
delay (1000);
Aa cum am menionat mai devreme, releul este format dintr-o serie de switch-uri, atunci
cnd este alimentat, comutatorul NC se deschide i CN-ul se nchide. Prin ataarea a dou LEDuri la fiecare comutator, vom putea vedea o reprezentare vizual a ceea ce se ntmpl.
Modulul releu 2-canale include urmtoarele caracteristici:
Numrul de relee
Semnal de comand
TTL Level
Sarcin nominal
Timp de acionare
10ms / 5ms
Interfaa plcii
Echipament
Microcontrolere acceptate
Schema de conexiune:
3. Sistemul de securitate
Schema bloc:
void loop()
{
if (MATCH == false)
{
getFingerprintIDez();
}
if (Codeaccess == true && acc_granted == false)
{
codevalidation();
}
if (acc_granted == true)
{
Meniu();
}
if ( reset == true )
{
Serial.println("Sistem Rebooted");
Serial.println("Waiting for valid fingerprint...");
MATCH = false;
Codeaccess = true;
acc_granted = false;
reset = false;
code = 0;
}
delay(50);
}
int Meniu() {
char keypressed = myKeypad.getKey();
switch (keypressed)
{
case 'A':
Serial.println();
Serial.print("Relay 1 ACTIVE!");
digitalWrite(Relay1,0);
break;
case 'B':
Serial.println();
Serial.print("Relay 2 ACTIVE!");
digitalWrite(Relay2,0);
break;
case 'C':
Serial.println();
Serial.print("Relays DEACTIVATED!");
digitalWrite(Relay1,1);
digitalWrite(Relay2,1);
break;
case 'D':
Serial.println();
Serial.println();
Reset();
Break;}}
//changing the passcode
int Reset() {
char keypressed = myKeypad.getKey();
Serial.print("Rebooting Sistem! Please Wait");
delay(400);
Serial.print(".");
delay(400);
Serial.print(".");
delay(400);
Serial.println(".");
reset = true;
}
//code validation
int codevalidation() {
char keypressed = myKeypad.getKey();
if ((MATCH == true) && (keypressed != NO_KEY))
{
Serial.print(keypressed);
if (keypressed != '*')
{
int conv_numb = keypressed - '0';
code = code * 10 + conv_numb;
}
if (keypressed == '*')
{
if (code == pass)
{
Serial.println();
Serial.print("Entered Password is:");Serial.print(code);
Serial.println();
Serial.print("Access Granted! Welcome
user:");Serial.print(finger.fingerID);Serial.println();
//access granted
acc_granted = true;
Codeaccess = false;
//Menu form
Serial.println();
Serial.println("Welcome User");
Serial.println();
Serial.println("Please choose an option from the following Menu");
Serial.println();
Serial.println("Press 'A' for the activation of Relay 1");
Serial.println("Press 'B' for the activacion of Relay 2");
Serial.println("Press 'C' for the Deactivation of both Relays");
Serial.println("Press 'D' to change the passcode");
}
else
{
Serial.println();
Serial.print("Entered Password is:");Serial.print(code);
Serial.println();
Serial.println("Code ERROR");
code = 0;
acc_granted = false;
}}}
}
uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.println("No finger detected");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
return p;
default:
Serial.println("Unknown error");
return p;
}
// OK success!
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}
// OK converted!
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
return p;
} else {
Serial.println("Unknown error");
return p;
}
// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
}
// returns -1 if failed, otherwise returns ID #
int getFingerprintIDez() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) return -1;
p = finger.image2Tz();
if (p != FINGERPRINT_OK) return -1;
p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;
// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
MATCH = true;
Serial.println("Enter Password:");
return finger.fingerID;
}
5. Bibliografie
https://learn.adafruit.com/adafruit-optical-fingerprint-sensor/wiring-for-usewith-arduino
http://www.instructables.com/id/Arduino-Fingerprint-Lock/
https://www.adafruit.com/products/751
http://www.instructables.com/id/Arduino-2-Channel-Relay/
https://www.google.ro/search?
q=2+relay+module+arduino&espv=2&biw=1920&bih=979&tbm=isch&tbo
=u&source=univ&sa=X&ved=0ahUKEwjitJC1tZjKAhVECCwKHYYwBfoQsAQIH
A
http://playground.arduino.cc/Main/KeypadTutorial
https://www.google.ro/search?
q=4x4+keypad+arduino&espv=2&biw=1920&bih=979&tbm=isch&tbo=u&s
ource=univ&sa=X&ved=0ahUKEwjGqqTFtZjKAhVBGiwKHWCAAFkQsAQILw
https://www.arduino.cc/en/Reference/HomePage