Senzor de amprentă Arduino. Dispozitiv antifurt de casă folosind Arduino Uno și senzor de amprentă. Deconectare de la portul com

Pentru a crea o conexiune cu senzorul de amprentă s-au folosit instrucțiuni de la Josh Hawley (descărcare directă a instrucțiunilor).

Pentru a depana funcționarea scanerului de amprentă cu afișajul cu litere, este necesară sincronizarea.

Senzorul de amprentă are propria memorie pentru stocarea imaginilor scanate. Deci, după ce senzorul începe să funcționeze, descărcați-l adăugându-l în baza de date a amprentelor la adresa 0. Deschideți consola de management de pe computer și urmați instrucțiunile pop-up.

Coduri – Exemplu de clipire:

/* Exemplu de bibliotecă pentru controlul scanerului de amprentă digitală (FPS) GT-511C3 */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Configurare hardware - FPS conectat la: //pin digital 10 (arduino rx, fps tx) //pin digital 11 (arduino tx - rezistor 560ohm fps tx - rezistor 1000ohm - masă) //acest lucru reduce linia de 5v tx la aproximativ 3.2v, astfel încât să nu prăjim fps-ul FPS_GT511C3 fps (10, 11); void setup())( Serial.begin(9600); fps.UseSerialDebug = true; // astfel încât să puteți vedea mesajele în ecranul de depanare serial fps.Open(); ) void loop())( // LED intermitent FPS Test fps .SetLED(true); // aprinde LED-ul din interiorul fps delay(1000);

Coduri – Exemplu de înscriere:

/* FPS_Enroll.ino - Exemplu de bibliotecă pentru controlul scanerului de amprentă digitală GT-511C3 (FPS) */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Configurare hardware - FPS conectat la: //digital pin 10 (arduino rx, fps tx) //pin digital 11 (arduino tx - rezistor 560ohm fps tx - rezistor 1000ohm - masă) //acest lucru reduce linia de 5v tx la aproximativ 3.2v, astfel încât să nu prăjim fps-ul FPS_GT511C3, fps(10) 11); void setup())( Serial.begin(9600); delay(100); fps.Open(); fps.SetLED(true); Enroll(); ) void Enroll())( // Înregistrați testul // găsiți deschis enroll id int enrollid = 0; .CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("Eliminați degetul"); fps.Enroll1(); while(fps.IsPressFinger() == true ) delay(100) ; Serial.println("Apăsați din nou același deget"); while(fps.IsPressFinger() == false) delay(100) ( "Eliminați degetul"); fps. IsPressFinger() == true) delay(100); Serial.println("Apăsați din nou același deget"); if (bret != false) ( Serial.println("Eliminați degetul"); iret = fps.Enroll3(); if (iret == 0) ( Serial.println("Înscrierea cu succes");

) else ( Serial.print("Înscrierea eșuată cu codul de eroare:"); Serial.println(iret); ) ) else Serial.println("Eșuat capturarea degetului al treilea");

) else Serial.println("Nu s-a capturat al doilea deget");

) else Serial.println("Nu s-a capturat primul deget"); ) void loop())( întârziere(100000); )

Fișier de sincronizare:

Fișier de înregistrare schiță:

Etapa 7: Programarea procesorului ATtiny85

Microcipul ATtiny85 este ieftin și pe deplin compatibil cu placa Arduino, este probabil cea mai bună parte electrică creată vreodată! De asemenea, este nevoie de un programator Arduino pentru a reflasha cipul ATmega328, care controlează funcționarea afișajului LCD.În dispozitivul asamblat, procesorul ATtiny va executa comenzi foarte simple: verificați semnalul de la ATmega și deschideți ușa garajului când semnalul este confirmat.

Pentru a programa procesorul, acesta trebuie conectat folosind panou la programator împreună cu un condensator de 10 uF, așa cum se arată în imaginea de mai jos. Și apoi descărcați.

După , ieșirea 13 Placa Arduino, conectat la LED, trebuie să fie comutat în starea HIGH pentru a monitoriza funcționarea prin indicație luminoasă.

Cod final pentru ATtiny :

//fpsAttiny de Nodcah //Primește un scurt semnal de la modulul principal pentru a închide o configurare de releu void())( pinMode(2,OUTPUT); //indicator LED prin rezistor 10K pinMode(4,OUTPUT); //pin trazistor care deschide garajul pinMode(0,INPUT //input delay(500) //da timp pentru a porni digitalWrite(2, HIGH //indicator LED void loop()); ) ( //model simplu pentru a declanșa întârzierea tranzistorului (125); if(digitalRead(0)==false)( întârziere(55); //cronometrele sunt oprite deoarece temporizatorul ATtiny nu este perfect dacă (digitalRead) ( 0))( întârziere(55); if(digitalRead(0)==fals)( întârziere(55); if(digitalRead(0))( întârziere(55); if(digitalRead(0)==fals)( digitalWrite (4, HIGH //tranzistorul "apăsează" butonul delay(1000 digitalWrite(2, HIGH) );

Blocare biometrică - cod final, tăierea capacului, pregătirea garajului Ceas GPS pe Arduino Blocare biometrică - diagramă și ansamblu afișaj LCD


Pentru a crea un astfel de proiect, autorul a trebuit să-și modifice sistemul de lansare vehicul. Conexiunea principală este conductorul IG de la comutatorul de aprindere, prin care tensiunea de alimentare este furnizată la regulatorul de tensiune și apoi la Arduino însuși pentru a-l porni, precum și pentru a porni senzorul de scanare a degetelor. Dacă scanarea degetelor are succes, sistemul se activează bloc de relee, și controlează releul de pornire. Acum poți porni mașina. Senzorul funcționează timp de 10 secunde și poate fi repornit prin repetarea ciclului de pornire a aprinderii. Dacă în timpul alocat senzorul nu detectează o amprentă sau nu se potrivește cu cea specificată, atunci sistemul de pornire va fi dezactivat și motorul nu va porni.

Deoarece fiecare mașină are propriul său sistem de configurare a lansării, trebuie să vă uitați schema electricaînainte de a modifica sistemul de pornire a motorului.

Acest articol descrie cum să conectați un dispozitiv antifurt la un Mitsubishi Lancer 2000 coupe cu 2 uși.

Materiale:
- Arduino Uno.
- Senzor de amprentă.
- Alimentare electrică.
- Unitate releu.
- tranzistor NPN BC547B
- Rezistor 1 kOhm










Schema de conectare:
Circuitul este usor modificat in functie de componentele folosite. Vă rugăm să rețineți că este valabil doar pentru acest model de mașină.

Pasul 1 Pregătirea componentelor software:
În Arduino IDE, biblioteca este încărcată și adăugată.
Un fișier din biblioteca blank.ino este încărcat în Arduino, care va servi drept interfață între senzor și microcontroler.
Programul este instalat și senzorul este conectat la Arduino așa cum se arată în diagramă. După care amprenta este încărcată prin programul instalat.


Acum senzorul este conectat așa cum se arată în diagrama următoare. După care autorul continuă să descarce programul principal. Un LED cu o rezistență este conectat la pinul 12.

Programul va funcționa în principal pe baza materialului de instruire Adafruit Fingerprint. ÎN codul programului Singurul lucru adăugat este un temporizator de oprire a senzorului de 10 secunde. Puteți descărca codul de mai jos articol.

Pasul 3 asamblare:
Partea 1:

Pentru a începe, deșurubați șuruburile de dedesubt bord. Partea inferioară a panoului este îndepărtată, iar senzorul poate fi plasat în spațiul liber.



Partea 2:
În locația selectată pentru senzor, o zonă este decupată pentru instalarea sa fiabilă.





partea 3:
Placa Arduino este instalată în spatele senzorului de amprentă. Locul de instalare a Arduino a fost ușor ascuțit, astfel încât placa să poată lua poziția corectă.



partea 4:
Sursa de alimentare reglată este montată în spatele tabloului de bord, pe partea șoferului.

partea 5:
Componentele rămase ale echipamentului sunt conectate conform diagramei de la începutul articolului.







Pasul 4 instalare:
Firele necesare sunt conectate și dispozitivul este instalat sub tabloul de bord. Autorul se asigură că nu există un scurtcircuit.

Dacă utilizați un dispozitiv relativ vechi, atunci nu ar trebui să vă supărați din timp. În loc să faci schimb laptop vechi pe unul mai modern, cu senzor biometric încorporat, puteți conecta USB la acesta.

PQI Mini USB Cititorul de amprente este o alegere excelentă pentru cei care doresc să ofere echipamentelor vechi o a doua viață. Scanerul a fost creat special pentru a lucra cu el caracteristică nouă Bună ziua, disponibil pe dispozitivele cu Windows 10. Cu toate acestea, dispozitivul acceptă și versiuni de operare sisteme Windows 7 și 8.

Unul dintre principalele avantaje ale senzorului este că are capabilități de scanare la 360 de grade. Deci, nu trebuie să vă faceți griji cu privire la cea mai bună modalitate de a vă conecta dispozitivul la computer. Folosește-l pe cel mai apropiat Port USBși începe să lucrezi. Când scanerul are nevoie de o amprentă, se va întoarce automat acolo unde este nevoie și va compara datele primite cu copia salvată.

Cititorul de amprente PQI Mini USB poate stoca până la 10 profiluri diferite. Acest lucru face ca dispozitivul să fie excelent pentru partajare sau atunci când trebuie să scanați un deget suplimentar (dacă cel „principal” se murdărește sau se rănește).

Cititorul de amprente PQI Mini USB este disponibil la un preț foarte rezonabil, ceea ce îl face o alegere excelentă pentru cei care caută un model de pornire. În plus, scanerul este suficient de portabil pentru a fi transportat fără prea multe bătăi de cap.

Cititor de amprente Verifi P2000

Dacă utilizați computer desktop pe care nu este atât de ușor să ajungi la porturile USB, apoi fii atent la Cititorul de amprente Verifi P2000. Se conectează cu ușurință la un PC și, cel mai important, poate fi plasat aproape de computer pentru o utilizare mai confortabilă.

Scanerul este fabricat din metal rezistent la impact și va dura mulți ani. În ciuda designului său robust, are o rată bună de recunoaștere a amprentei. Deci nu trebuie să schimbați constant poziția degetului doar pentru a obține o potrivire perfectă. În cele mai multe cazuri, glisarea senzorului o singură dată va fi suficientă.

La crearea lui P2000, Verifit a planificat să facă dispozitivul robust și durabil, astfel încât să nu aibă niciun impact asupra procesului de scanare și asupra acurateței rezultatelor recunoașterii. Cititorul de amprente Verifi P2000 este suficient dispozitiv portabil, care poate fi purtat cu ușurință cu tine. În plus, este compatibil cu un număr mult mai mare de computere decât alte modele similare.

Kensington VeriMark

Pentru incredibil scaner mic Scanerul de amprentă Kensington VeriMark are aproape tot ce aveți nevoie pentru a lucra confortabil. Modelul oferă suport pentru scanare la 360 de grade și dimensiuni mici. Dar principalul lucru care face ca Kensington VeriMark să fie atât de valoros este funcționalitatea suplimentară.

Dispozitivul stochează toate datele primite în formă criptată. Când senzorul scanează o amprentă, o criptează imediat. Avorta acest proces imposibil, deci piratarea software-ului sau hardwareși nu va fi posibilă extragerea datelor biometrice.

În plus, dispozitivul folosește un șablon special pentru a decripta scanările primite, pe care doar producătorul îl are. Acest lucru îl face mai sigur de atacurile hackerilor și alte încercări de a obține acces neautorizat.

Scanerul acceptă lucrul cu porturi relativ vechi, indiferent de versiunea de lansare. Dacă utilizați un model cu , atunci utilizați Adaptor USB-C La Dispozitiv USB-A poate fi conectat la un laptop sau computer relativ vechi fără suport pentru porturi USB mai moderne.

Analizor cititor de amprente Benss

Benss Fingerprint Reader Analyzer este un alt scaner care vă poate face viața mai ușoară și vă poate salva de o mulțime de probleme. De regulă, modelele mai simple fac mai întâi o fotografie de control, după care toate imprimările ulterioare sunt comparate cu rezultatul inițial. Aceasta înseamnă că, dacă se întâmplă ceva cu imaginea originală (cu care sunt comparate toate celelalte scanări), probabilitatea de potrivire a rezultatelor finale va scădea foarte mult.

Benss Fingerprint Reader Analyzer funcționează cu un algoritm de auto-învățare care creează și actualizează automat profilul dvs. la fiecare atingere. Cu cât folosiți mai mult dispozitivul, cu atât rezultatele vor fi mai precise. Acest lucru face ca scanerul să fie mai greu de păcălit cu amprente false. Deoarece senzorul vă scanează în mod constant degetul și actualizează baza de date, detectează imediat încercările de a obține acces neautorizat.

Acesta este unul dintre cele mai eficiente dispozitive de contracarare atacurile hackerilor. Rata sa de acceptare falsă este mai mică de 0,002%, ceea ce înseamnă că trebuie să încercați cu adevărat să piratați dispozitivul. În același timp, acest lucru nu complică prea mult munca coeficientul său FRR (False Rejection Rate - refuzul accesului unei persoane înregistrate în sistem) este de doar 3%.

IDEM BioScan Compact

Dacă sunteți în căutarea unui scaner cu personalizare, vă va plăcea IDEM BioScan Compact. Pentru a-și extinde capacitățile de bază și a obține funcționalități suplimentare, trebuie doar să descărcați software special de pe site-ul oficial al producătorului.

După aceasta, veți putea cripta pe computer fişiere separateși foldere și, de asemenea, stocate în program special informații de conectare și parolă pentru accesarea site-urilor web. În acest fel, vă puteți conecta la orice portal de internet prin simpla atingere a senzorului cu degetul.

Chiar dacă nu țineți cont de funcționalitatea suplimentară, BioScan Compact este considerat un model demn. Dispozitivul este capabil să stocheze până la 10 amprente diferite, are dimensiuni mici și securitate încorporată pentru a recunoaște datele biometrice false.

Blucoil SecuGen Hamster Pro 20

Blucoil SecuGen Hamster Pro 20 este scanerul de amprente ideal pentru nevoile profesionale. Datorită faptului că modelul oferă setări de securitate îmbunătățite, prețul său este aproape de două ori mai mare decât alte dispozitive de pe lista noastră.

În plus, acesta este unul dintre puținele scanere cu un oficial Suport Linux. Prin urmare, nu contează care dintre ele sistem de operare utilizați, senzorul este potrivit pentru orice sarcină.

SecuGen Hamster Pro 20 este un dispozitiv rezistent la șocuri care este protejat de zgârieturi, apă și praf. Scanerul este capabil să urmărească urmele lăsate de scanările anterioare și să respingă rezultatele neclare.

În plus, Blucoil SecuGen Hamster Pro 20 este un dispozitiv care economisește energie, așa că se oprește automat dacă nimeni nu îl folosește o perioadă lungă de timp.

Securitate suplimentară

În ultimii ani, au fost lansate un număr mare de dispozitive mobile și desktop cu scanere de amprentă încorporate, iar numărul acestora crește în fiecare an. Dacă computerul dvs. nu are un senzor încorporat pentru recunoașterea datelor biometrice, atunci nu vă faceți griji. Există o mare varietate de scanere USB pentru PC-uri și laptop-uri, compatibile cu aproape toate modelele populare.

Deoarece nu am mașină, nu trebuie să-mi duc cheile cu mine peste tot. Din această cauză, s-a dovedit că în mai multe rânduri m-am trezit fără chei în afara casei și trebuind să aștept ca una dintre rudele mele să vină acasă și să mă lase să intru, iar la un moment dat am decis că trebuie să fac ceva în privința asta. și a proiectat un lacăt de garaj de casă.

În acest proiect vă voi arăta cum să faceți o încuietoare cu amprentă pentru ușa dvs. din față.

Pasul 1: Materiale


Iată o listă cu materialele și instrumentele necesare.

Electronica:

  • Scaner de amprente (și conector JST)
  • Set LCD (cu ATmega328)
  • ATtiny85
  • tranzistor NPN
  • Difuzor tweeter
  • Cablu difuzor
  • Caz (la pasul 9 vor fi fișiere pentru imprimare 3D)
  • Film de cupru
  • Regulator de tensiune 5V
  • baterie de 9V
  • Conector pentru baterie de 9V
  • Comutator SPDT

Pentru comoditate, voi atașa o listă de dorințe gata făcută pe site-ul Sparkfun.

Instrument:

  • Fier de lipit și lipit
  • Banda izolatoare
  • Fire și jumperi
  • Cleste/decapatoare
  • Placă de prototipare
  • Diverse rezistențe
  • Șuruburi
  • Burghiu
  • Mai multe LED-uri pentru testare
  • Placa FTDI 5V
  • Pistol cu ​​lipici fierbinte
  • Acces la o imprimantă 3D
  • Opțional: priză IC (8-pini pentru ATtiny și 28-pini pentru ATmega)
  • Opțional: altă placă Arduino / condensator 10uF (detalii la pasul 5)

Pasul 2: Diagrama dispozitivului






Kitul LCD achiziționat de la Sparkfun a venit cu un ATmega328 care controlează afișajul. ATmega328 este destul de puternic și poate fi folosit nu numai pentru controlul afișajului, ci și pentru alte sarcini. Având în vedere acest lucru, îl putem folosi în loc de Arduino pentru a comunica cu scanerul de amprentă și a trimite comenzi către ATtiny85, pentru a controla afișajul și beeper-ul.

Pentru a împiedica încuietoarea biometrică a ușii să funcționeze tot timpul, am construit în ea un comutator care funcționează în momentul în care carcasa este închisă. Dacă carcasa este închisă, dispozitivul nu este alimentat și economisim resursele bateriei.

Notă importantă: Scanerul de amprentă funcționează la 3,3V, așa că recomand să utilizați un divizor de tensiune care va converti semnalele de la ATmega la 3,2V. Divizorul de tensiune constă dintr-un rezistor de 560 ohmi între pinul scanerului D10/secundă și un rezistor de 1K între pinul scanerului GND/secundă.

Pinout LCD:

  • D10 - pinul scanerului 1 (fir negru)
  • D11 - pinul 2 al scanerului (prin divizor de tensiune)
  • D12 - ATtiny85
  • D13 - Scârțâit

Pinout ATtiny85:

  • Pin 5 (0 în codul programului) - intrare de la ATmega
  • Pin 3 (4 în codul programului) - tranzistor / LED galben
  • Pin 7 (2 în codul programului) - LED de indicare

Pasul 3: Asamblarea componentelor din kitul LCD

Numele pasului vorbește de la sine: ghid rapid de pornire/asamblare handy-dandy

Pasul 4: Asamblarea circuitului pe placa de prototipare




Amplasarea componentelor pe placă depinde de dvs., încercați doar să lipiți firele astfel încât să fie orientate în aceeași direcție și să nu se rupă.

Odată asamblat, am acoperit partea de sus și de jos a plăcii cu lipici fierbinte - acest lucru a asigurat și izolat elementele circuitului. Lipiciul fierbinte nu va deteriora cipul.

Ca și în cazul plăcii principale, lipiți totul pe placa ATtiny și aplicați lipici fierbinte pentru a fixa și izola componentele. Regulatorul de tensiune poate deveni foarte fierbinte, așa că este o idee bună să evitați aplicarea lipiciului fierbinte pe acesta sau pe orice suprafață din apropiere. De asemenea, este mai bine să nu acoperiți placa ATtiny cu lipici fierbinte, deoarece poate doriți să o îndepărtați și să o reprogramați.

Pasul 5: Programarea ATmega328

După cum sa menționat la pasul 2, ATmega328 are un procesor suficient de puternic și destui pini pentru a controla un LCD în timp ce controlează alții componente suplimentare. Pentru a realiza acest lucru, trebuie să programați cipul.

Dacă aveți un Arduino Uno sau Duemilanove, puteți pur și simplu să scoateți cipul din acesta și să îl înlocuiți cu cel care a venit în kit. Sau puteți găsi o placă FTDI Basic Breakout (5V) și atașamente de lipit în lateral (vezi imaginile de la pasul 3)

De asemenea, va trebui să încărcați codul în modul „Duemilanove w/ ATmega328”.

Codul de mai jos - program de lucru pentru a verifica funcționalitatea dispozitivului.

#include „LiquidCrystal.h” LiquidCrystal lcd(2,3,4,5,6,7,8); void setup() ( pinMode(9, OUTPUT); // backlight pinMode(13, OUTPUT); // beeper lcd.begin(16, 2); // 16 caractere lățime, 2 înalte digitalWrite(9, HIGH) ; / /activează backlight lcd.print("Bună lume! "); //centrează textul folosind spații delay(2000 void loop() ( //beeper-ul se aprinde și se oprește, starea acestuia este afișată pe ecranul LCD); .clear( ); lcd.print(" Buzzer este activat ");

Pasul 6: Configurarea scanerului de amprentă

Am folosit această bibliotecă pentru a comunica cu scanerul. Link de descărcare directă.

Pentru a verifica dacă codul dvs. funcționează, descărcați acest tester intermitent.

Scanerul de amprente are propria memorie încorporată pentru stocarea datelor. Deci, după ce sunteți sigur că scanerul funcționează, descărcați acest program pentru a vă adăuga amprenta la baza de date sub id #0. Deschideți consola dvs. serială și urmați pur și simplu instrucțiunile.

Program LED care clipește pentru a testa scanerul

/* Acest cod simplu va aprinde și stinge LED-ul. Este folosit pentru a înțelege dacă comunicarea funcționează.

*/ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Configurare hardware - scaner de degete conectat la: //pin digital 10 (arduino rx, fps tx) //pin digital 11 (arduino tx - rezistor fps de 560ohm tx - rezistor de 1000ohm - GND) //acest lucru scade 5v tx la aproximativ 3.2v și nu ne vom arde scanerul FPS_GT511C3 fps(10, 11); void setup())( Serial.begin(9600); fps.UseSerialDebug = true; // puteți vedea mesaje pe ecranul de depanare serial fps.Open(); ) void loop())( // LED-ul clipește test pentru fps scanner(true);

#include "FPS_GT511C3.h" #include "SoftwareSerial.h" //Configurare hardware - scanner de degete conectat la: //pin digital 10 (arduino rx, fps tx) //pin digital 11 (arduino tx - rezistor 560ohm fps tx - rezistor 1000ohm - GND) //aceasta scade 5v tx la aproximativ 3.2v și nu vom arde scanerul nostru FPS_GT511C3 fps(10, 11); void setup())( Serial.begin(9600); delay(100); fps.Open(); fps.SetLED(true); Enroll(); ) void Enroll())( // Test de înregistrare // caută open id int enrollid = 0; .CaptureFinger(true); int iret = 0; if (bret != false) ( Serial.println("Eliminați degetul"); fps.Enroll1(); while(fps.IsPressFinger() == true) delay(100) ; Serial.println("Apăsați din nou același deget"); "Remove finger"); while(fps.IsPressFinger() == true) delay(100) == false (100); Serial.println("Eliminați degetul");

) else ( Serial.print("Înscrierea eșuată cu codul de eroare:"); Serial.println(iret); ) ) else Serial.println("Eșuat capturarea degetului al treilea");


) else Serial.println("Nu s-a capturat al doilea deget");

) else Serial.println("Nu s-a capturat primul deget"); ) void loop())( delay(100000); ) Fișiere Pasul 7: Programați ATtiny85 ATtiny85 este ceva ca un Arduino ieftin asamblat într-un singur cip. ATtiny85 poate fi programat de alte Arduinos, inclusiv ATmega328 care se găsește în kitul nostru LCD. În proiect este folosit pentru a rula comenzi foarte simple: verificați semnalul de la ATmega și deschideți poarta dacă semnalul este corect.

Pentru a-l programa, conectați totul conform fotografiilor atașate. Apoi descărcați

fisierele necesare

//Primește un semnal scurt de la modulul principal pentru a închide configurarea releului de gol ())( pinMode(2,OUTPUT); //indicație LED printr-un rezistor de 10K pinMode(4,OUTPUT); //pin tranzistor care deschide garajul pinMode(0,INPUT ); //întârziere de intrare (500); /model simplu pentru comutarea întârzierii tranzistorului (125) if(digitalRead(0)==false)( delay(55); //așteptați, deoarece temporizatorul ATtiny nu este ideal if(digitalRead(0))( delay(55); ); if(digitalRead(0)= =false)(delay(55); if(digitalRead(0))(delay(55); if(digitalRead(0)==false)( digitalWrite(4, HIGH); / / tranzistorul „apasă” butonul delay(1000 ; digitalWrite(4,LOW) digitalWrite(2, HIGH);

Pasul 8: Codul final

Mai jos este un program Arduino pe care l-am scris folosind bibliotecile de scanare și afișare. Pentru a clarifica ce se întâmplă în fiecare parte a programului, am încercat să comentez totul în cel mai bun mod posibil. După descărcarea acestui cod, totul ar trebui să funcționeze și tot ce rămâne de făcut este să integrați sistemul în ușă.

Atenție: dacă biblioteca scanerului nu funcționează, atunci încercați să utilizați versiunea veche Arduino IDE.

Cod pentru ATmega238:

#include "LiquidCrystal.h" //afișează biblioteca #include "FPS_GT511C3.h" //fps (scaner de amprente) #include "SoftwareSerial.h" //utilizat de biblioteca scanerului //Configurați pinii afișajului și scanerului LiquidCrystal lcd( 2, 3, 4, 5, 6, 7, 8); //afișează pinout FPS_GT511C3 fps(10, 11); //RX, TX boolean isFinger = false; //true dacă biblioteca fps detectează degetul pe scaner //pin de ieșire const int buzzerPin = 13; const int backlightPin = 9; const int attinyPin = 12; const String idNames = ("self","Bro", "Ryan", "Mom", "Tad", "Auntie", "Bandma", "Zeide", "Person", "person", "Thumb"); void setup())( //configurați ieșirile pinMode(buzzerPin, OUTPUT); pinMode(backlightPin, OUTPUT); pinMode(attinyPin, OUTPUT); //pentru depanare //Serial.begin(9600); fps.UseSerialDebug = false //devine adevărat pentru depanarea fps prin portul serial //inițializarea bibliotecilor lcd.begin(16,2)(backlightPin, HIGH); Iluminare de fundal LCD fps.Open();<30; i++){ tone(buzzerPin, 50+10*i, 30); delay(30); } tone(buzzerPin, 350); //вывод стартового сообщения lcd.print("Put your finger "); //команда вывода на экран lcd.setCursor(0, 1); //устанавливаем курсор на нулевую колонку первой строки lcd.print(" on the scanner "); delay(150); noTone(buzzerPin); //останавливаем стартовый звук } void loop(){ //сканируем и распознаём отпечаток, когда приложен палец waitForFinger(); lcd.clear(); //очищаем экран и устанавливаем курсов в положение 0,0 fps.CaptureFinger(false); //захватываем отпечаток для идентификации int id = fps.Identify1_N(); //идентифицируем отпечаток и сохраняем id if(id <= 10){ lcd.print(" Access granted "); //сообщение об успехе lcd.setCursor(0,1); //выводим на экран имя когда дверь открывается String message = " Hey " + idNames + "!"; lcd.print(message); tone(buzzerPin, 262, 1000); delay(1500); //отправляем сигнал для открытия двери digitalWrite(attinyPin, HIGH); //первый импульс синхронизирует задержку (10ms) delay(5); digitalWrite(attinyPin, LOW); delay(3); digitalWrite(attinyPin, HIGH); //следующие два - открывают дверь delay(15); digitalWrite(attinyPin, LOW); delay(5); digitalWrite(attinyPin, HIGH); delay(10); digitalWrite(attinyPin, LOW); delay(1000); lcd.clear(); lcd.print("Don"t forget to "); lcd.setCursor(0,1); lcd.print(" shut me off! "); delay(2000); waitForFinger(); //нажмите чтобы продолжить запись while(true){ //сохраняет новый отпечаток //выводит сообщение на экран lcd.clear(); lcd.print(centerText("So you want to")); lcd.setCursor(0,1); lcd.print(centerText("scan a new one?")); delay(2000); //Скопировано и слегка модифицировано из примера регистрации данных: int enrollid = 11; //выбираете какой id переписать\создать //отпустите палец, когда хотите записать id/имя, напечатанное на экране waitForFinger(); //ждёт, когда будет нажат fps while(enrollid==11){ for (int i = 1; i1){ lcd.print(i); enrollid = i-1; break; } } } //предупреждение, если в данном слоте уже есть данные if(fps.CheckEnrolled(enrollid)){ lcd.clear(); lcd.print(" Warning! ID #"); lcd.print(enrollid); lcd.setCursor(0,1); lcd.print(" has data. OK? "); delay(2500); waitForFinger(); //ждёт, когда будет нажат fps fps.DeleteID(enrollid); //удаляет данные delay(100); } //Enroll fps.EnrollStart(enrollid); lcd.clear(); lcd.print("Place finger to "); lcd.setCursor(0,1); lcd.print("enroll #"); lcd.print(enrollid); //выводит id, который был добавлен waitForFinger(); //ждёт, когда будет нажат fps //захватывает отпечаток и сохраняет его в память трижды для точности данных bool bret = fps.CaptureFinger(true); //картинка высокого качества для записи int iret = 0; //в случае ошибки if (bret != false){ //первая регистрация lcd.clear(); lcd.print(" Remove finger "); fps.Enroll1(); while(fps.IsPressFinger() == true) delay(100); //ждёт пока уберут палец lcd.clear(); lcd.print(" Press again "); waitForFinger(); //ждёт, когда будет нажат fps bret = fps.CaptureFinger(true); if (bret != false){ //вторая регистрация lcd.clear(); lcd.print(" Remove finger "); fps.Enroll2(); while(fps.IsPressFinger() == true) delay(100); lcd.clear(); lcd.print("Press yet again "); waitForFinger(); bret = fps.CaptureFinger(true); if (bret != false){ //третья регистрация iret = fps.Enroll3(); if (iret == 0){ //проверяет, были ли какие-нибудь ошибки lcd.clear(); lcd.print(" Success! "); delay(2000); beep(); //выключает Ардуино } else{ //запускает этот код в случае любой ошибки lcd.clear(); lcd.print("Fail. Try again "); delay(1000); } } lcd.clear(); lcd.print(" Failed 3rd "); //ошибка на третьей записи delay(1000); } lcd.clear(); lcd.print(" Failed 2nd "); //ошибка на второй записи delay(1000); } lcd.clear(); lcd.print(" Failed 1st "); //ошибка на первой записи delay(1000); } } else{ lcd.print("Fingerprint is"); //если отпечаток не распознан lcd.setCursor(0,1); lcd.print(" unverified "); delay(2000); lcd.clear(); lcd.print("Please try again"); lcd.setCursor(0,1); lcd.print("Use your pointer"); //pointer - указательный палец (можете использовать любой и заменить это слово) delay(500); } delay(250); } void beep(){ //издаёт звуки, чтобы кто-нибудь закрыл кейс lcd.clear(); lcd.print("Please close the"); lcd.setCursor(0,1); lcd.print(" case! "); for(int i=0;i=80 && !fps.IsPressFinger()){ beep(); } } timer = 0; //обнуляет таймер как только функция завершится } String centerText(String s) { //центрует текст на дисплее, чтобы он лучше смотрелся while(16-s.length()>fps.SetLED(true); //LED pentru fps //încărcare sunet pentru (int i=0; i