Cuprins:

Arduino High Tech Safe: 6 pași
Arduino High Tech Safe: 6 pași

Video: Arduino High Tech Safe: 6 pași

Video: Arduino High Tech Safe: 6 pași
Video: Amazing arduino project 2024, Iulie
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Acesta este seiful meu arduino de înaltă tehnologie. Trebuie să vă scanați degetul, să vă scanați cardul, apoi să introduceți o parolă de 4 cifre pentru a debloca sertarul. Acest proiect nu este recomandat pentru începători, deoarece este foarte avansat. Codul este lung, dar îl voi împărtăși în acest proiect. Costul este de aproximativ 75 USD dacă construiți același seif ca mine. De asemenea, acest proiect ar putea dura 1-3 zile pentru finalizare. Deci sa începem!

Provizii

Pentru a construi același sigur ca și a mea veți avea nevoie de:

Arduino (Uno recomandat pentru că nu am pași pentru arduino mega sau nano. Dar totuși îi puteți folosi)

panou de masă

servo

fire jumper

joystick

20 * 4 (puteți utiliza 16 * 4, dar va trebui să schimbați codul)

scaner de amprente

scanner de carduri RFID mfrc522

o găleată de legos

Pasul 1: Construirea unei cutii

Construind o cutie
Construind o cutie

Mai întâi veți avea nevoie de o cutie pentru a vă pune electronica. Puteți folosi legosuri, o cutie imprimată 3D sau chiar carton! (Deși acest lucru ar putea fi mai greu) Nu uitați să puneți găuri în el pentru un sertar și electronice. Dacă utilizați scanerul de card RFID, nu trebuie să puneți o gaură pentru asta, dacă pereții dvs. sunt subțiri. Cardurile încă funcționează, dar trebuie să puneți brelocurile aproape, astfel încât senorul cardului RFID să le poată citi. De asemenea, lăsați spațiu pentru arduino și firele din interior. NOTĂ: Când construiți sertarul, lăsați o gaură în el, astfel încât servo-ul dvs. să poată roti și bloca sertarul.

Pasul 2: Cablare

Cablare!
Cablare!

Acest pas poate fi complicat, deoarece trebuie să conectați firele în locul exact, pentru ca electronica să nu funcționeze. Nu am o schemă de cablare, dar vă voi spune că fiecare va merge. Instalația electrică este de numai Arduino UNO. Va trebui să căutați să puneți firele dacă utilizați un mega arduino sau un nano. Dacă nu utilizați toate electronele pe care le am, puteți sări peste cablarea respectivă.

Scanner de amprente: fir verde: fir alb D2: fir negru D3: fir roșu GND: 5V

Joystick: 5V = 3,3V GND = GND X = A2 Y = A3 Comutator = D4

scaner de card RFID: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

ecran LCD: 5V = 5V GND = GND sda = A4 sck = A5

Servo: fir roșu: 5V fir maro: GND fir galben: D6

NOTĂ: NU CONECTAȚI SCANNERUL DE CARDURI RFID ÎN 5V. DACĂ O FACI, SE VA RUPE !!!

S-ar putea să vă întrebați de ce am spus să conectați joystick-ul la 3,3V când scrie 5V pe lateral. Acest lucru se datorează faptului că servo, ecranul și scanerul de amprentă au nevoie de 5V. Dacă adăugați joystick-ul la aceasta, este posibil ca dispozitivele electronice să nu funcționeze, deoarece totul are nevoie de 5V. Joystick-ul va funcționa în continuare cu 3,3V. Doar valoarea maximă nu va fi 1023, va fi de ~ 670.

Pasul 3: Descărcarea bibliotecilor

În acest proiect, veți avea nevoie de 6 biblioteci pentru a utiliza toate componentele electronice. 1 pentru servo, 1 pentru senzorul de amprentă, 2 pentru scanerul de card RFID și 2 pentru ecran. Joystick-ul nu are nevoie de o bibliotecă. Acum, ce este o bibliotecă? Este practic un fișier care conține o mulțime de cod pe care îl puteți utiliza în proiectul dvs. cu comenzi simple. Pentru a obține aceste biblioteci, trebuie să mergeți la un loc numit GitHub. Dacă știți cum să descărcați și să dezarhivați bibliotecile, accesați linkurile de mai jos pentru descărcări. Dacă nu știți cum, puteți merge la instructable-ul meu, care vorbește despre cum să descărcați o bibliotecă la pasul 3:

sau căutați un videoclip pe YouTube despre cum să descărcați o bibliotecă arduino de pe GitHub

LEGĂTURI LA LIRARE:

Servo

senzor de amprentă:

spi

senzor card RFID

bibliotecă ecran 1

biblioteca de ecran 2

Pasul 4: Configurarea senzorului de amprentă digitală și a senzorului cardului RFID

Acest pas vorbește despre cum să configurați senzorul de amprentă și senzorul cardului RFID. Dacă nu ați folosit deja senzorul de amprentă, va trebui să îi arătați cum arată amprenta dvs., astfel încât să o poată salva în memoria sa. Chiar dacă l-ați folosit înainte, probabil că ar trebui să faceți acest pas. Vă voi spune cum să o faceți pe scurt, dar dacă nu are sens mergeți la același link instructiv din ultimul pas. Se descurcă foarte bine. De bază doar deschide ideea arduino. Accesați fișier> exemple> senzor de amprentă adafruit> înscrieți-vă. Încărcați codul pe arduino, deschideți monitorul serial și urmați pașii pe care vi-i spune. Când îți spune să îi dai un număr. Introduceți 1 #.

Acum, pentru cardul RFID, acest pas este destul de ușor. Deschide arduino ide. Accesați fișierul> exemple> mfrc522> citiți datele personale. Încărcați pe arduino și deschideți monitorul serial. Scanați cardul sau brelocul pe care doriți să-l utilizați, furnizat împreună cu senzorul. Apoi vă va oferi câteva informații. Căutați ID-ul cardului, acesta va fi de 4 seturi de 2 cifre. Ceva de genul acesta: AB 45 2Y 45, dar codul dvs. va fi diferit. Notează acest lucru pe o bucată de hârtie. Veți avea nevoie de el mai târziu. Gata pentru acest pas.

Pasul 5: CODUL

Acesta va fi cel mai greu pas pentru majoritatea dintre voi, dar este destul de simplu. Mai întâi copiați și lipiți codul în ideea arduino de jos. În al doilea rând, editați cele 2 secțiuni unde scrie EDIT COD. 1 secțiune este pentru scanerul de carduri, 1 este pentru joystick. Acești pași nu pot fi omiși. După ce ați terminat, încărcați codul pe arduino!

#include #include Fingerprint.h>

#include

#include

#include

#include

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POZITIV);

#define RST_PIN 9

#define SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint (& mySerial);

Servo servo;

char d1;

char d2;

char d3;

char d4;

configurare nulă () {

servo.attach (6);

servo.write (170);

lcd.inceput (20, 4);

Serial.begin (9600);

while (! Serial);

SPI.begin ();

mfrc522. PCD_Init ();

întârziere (4);

mfrc522. PCD_DumpVersionToSerial ();

întârziere (100);

Serial.println ("\ n / nTest de detectare a degetelor de fructe");

finger.begin (57600);

întârziere (5);

if (finger.verifyPassword ()) {

Serial.println („Toate sistemele funcționează”);

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Vă rugăm să degetul scanare");

} altceva {

Serial.println ("EROARE: Senzorul de amprentă nu a fost găsit!");

lcd.setCursor (0, 0);

lcd.print („EROARE: amprentă digitală”);

lcd.setCursor (1, 1);

lcd.print ("senzorul nu a fost găsit!");

while (1) {întârziere (1); }

}

finger.getTemplateCount ();

Serial.print ("Senzorul conține"); Serial.print (finger.templateCount); Serial.println ("șabloane"); Serial.println („Se așteaptă degetul valid …”); }

void (* resetFunc) (void) = 0;

bucla nulă () {

getFingerprintIDez ();

întârziere (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

comuta (p) {

carcasa FINGERPRINT_OK:

Serial.println („Imagine realizată”);

pauză;

caz FINGERPRINT_NOFINGER:

Serial.println („Nu a fost detectat niciun deget”);

retur p;

carcasa FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Eroare de comunicare");

retur p;

cazul FINGERPRINT_IMAGEFAIL:

Serial.println ("Eroare de imagine");

retur p;

Mod implicit:

Serial.println ("Eroare necunoscută");

retur p;

}

p = finger.image2Tz ();

comuta (p) {

carcasa FINGERPRINT_OK:

Serial.println („Imagine convertită”);

pauză;

cazul FINGERPRINT_IMAGEMESS:

Serial.println („Imaginea este prea dezordonată”);

retur p;

carcasa FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Eroare de comunicare");

retur p;

caz FINGERPRINT_FEATUREFAIL:

Serial.println („Nu s-au putut găsi caracteristici de amprentă”);

retur p;

carcasa FINGERPRINT_INVALIDIMAGE:

Serial.println („Nu s-au putut găsi caracteristici de amprentă”);

retur p;

Mod implicit:

Serial.println („Eroare necunoscută”);

retur p;

}

p = finger.fingerFastSearch ();

if (p == FINGERPRINT_OK) {

Serial.println („S-a găsit o potrivire de tipărit!”);

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Eroare de comunicare");

retur p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println („Nu a găsit o potrivire”);

retur p;

} altceva {

Serial.println ("Eroare necunoscută");

retur p;

}

Serial.print ("ID găsit #"); Serial.print (finger.fingerID);

Serial.print („cu încrederea în”); Serial.println (deget.încredere);

returnează degetul.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

if (p! = FINGERPRINT_OK) returnează -1;

p = finger.image2Tz ();

if (p! = FINGERPRINT_OK) returnează -1;

p = finger.fingerFastSearch ();

if (p! = FINGERPRINT_OK) returnează -1;

Serial.print („ID găsit #”); Serial.print (finger.fingerID);

Serial.print („cu încrederea în”); Serial.println (deget.încredere);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print („Degetul acceptat”);

lcd.setCursor (2, 0);

lcd.print („acum scanare card …”);

lcd.setCursor (0, 3);

lcd.print ("===================>>");

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== EDITĂ COD ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Ia acea bucată de hârtie cu ID-ul pe el, erau 4 seturi de 2 cifre

mfrc522.uid.uidByte [2] == 0x90 && // Uită-te după cod, vezi unde scrie 0x92, 0xAB, 0x90, 0x1c? Introduceți fiecare

mfrc522.uid.uidByte [3] == 0x1C) {// din secțiunea cu 2 cifre după 0x. De exemplu, secțiunea din ID spune

lcd.clear (); // 3E, apoi introduceți 3E după 0x pentru a face 0x3E. Faceți acest lucru pentru fiecare secțiune

lcd.setCursor (3, 0);

lcd.print ("În cele din urmă, introduceți");

lcd.setCursor (1, 1);

lcd.print („parola joystick-ului”);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); if (analogRead (A2) <= 100) {

d1 = L;

}

if (analogRead (A2)> = 670) {

d1 = R;

}

if (analogRead (A3) <= 100) {

d1 = U;

}

if (analogRead (A3)> = 670) {

d1 = D;

}

întârziere (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (analogRead (A2) <= 100) {

d2 = L;

}

if (analogRead (A2)> = 670) {

d2 = R;

}

if (analogRead (A3) <= 100) {

d2 = U;

}

if (analogRead (A3)> = 670) {

d2 = D;

}

întârziere (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (analogRead (A2) <= 100) {

d3 = L;

}

if (analogRead (A2)> = 670) {

d3 = R;

}

if (analogRead (A3) <= 100) {

d3 = U;

}

if (analogRead (A3)> = 670) {

d3 = D;

}

întârziere (500);

while (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (analogRead (A2) <= 100) {

d4 = L;

}

if (analogRead (A2)> = 670) {

d4 = R;

}

if (analogRead (A3) <= 100) {

d4 = U;

}

if (analogRead (A3)> = 670) {

d4 = D;

}

întârziere (500);

if (d1 == L && d2 == U && d3 == L && d4 == R) {// ================== EDITĂ COD ====== ================

lcd.clear (); // Această secțiune este în care puteți edita parola cu joystick-ul

lcd.setCursor (2, 0); // parola este setată la stânga, sus la stânga, la dreapta. Dacă vrei să te schimbi

lcd.print („Acces acordat!”); // it, puneți un L pentru stânga, R pentru dreapta, U pentru sus sau D pentru jos în oricare dintre

lcd.setCursor (2, 1); // 4 secțiuni cu o literă după semnele ==.

lcd.print („Sertar deblocat.”);

lcd.setCursor (2, 2);

lcd.print („Când ați terminat, mutați”);

lcd.setCursor (1, 3);

lcd.print („joystick pentru relock”);

servo.write (90);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print („Sertar blocat”);

întârziere (3000);

resetFunc ();

} altceva {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCES ÎNEGAT !!!");

lcd.setCursor (0, 2);

lcd.print („Repornirea sistemului …”);

întârziere (3000);

resetFunc ();

}

} altceva {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCES ÎNEGAT !!!");

lcd.setCursor (0, 2);

lcd.print („Repornirea sistemului …”);

întârziere (3000);

resetFunc ();

}

} altceva {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCES ÎNEGAT !!!");

lcd.setCursor (0, 2);

lcd.print („Repornirea sistemului …”);

întârziere (3000);

resetFunc ();

}

returnează degetul.fingerID; }

Pasul 6: Terminați

Un lucru pe care am uitat să-l spun, bine 2 lucruri este că am construit asta înainte de a face poze, așa că nu ți-am putut arăta cum am construit cutia. Cealaltă este că se recomandă înșurubarea piesei servo pe partea care se rotește. Dacă nu, cineva ar putea trage sertarul în timp ce este blocat și ar putea scoate piesa. Dar, înainte de a-l înșuruba, găsiți locul potrivit unde să-l puneți, deoarece servo se transformă într-un anumit grad. Sau l-ai putea schimba doar în cod. Dacă unele dintre componentele electronice acționează amuzant, poate doriți să găsiți un mod diferit de a obține 5V pentru unele dintre ele. Am observat că atunci când scanerul meu de amprente a clipit, ecranul ar clipi ușor cu el și servo ar face zgomot. Când sa mutat servo, ecranul ar merge dim. Sper că v-a plăcut proiectul! Dacă aveți întrebări, lăsați-le în comentarii. Nu sunt foarte instructiv, dar le voi răspunde cât de repede pot!

Recomandat: