Përmbajtje:

Arduino High Tech Safe: 6 hapa
Arduino High Tech Safe: 6 hapa

Video: Arduino High Tech Safe: 6 hapa

Video: Arduino High Tech Safe: 6 hapa
Video: Beyond the Basics: Automatic Gatekeeper With IR Sensor And ChatGPT Generated Arduino Code 2024, Nëntor
Anonim
Arduino i teknologjisë së lartë i sigurt
Arduino i teknologjisë së lartë i sigurt

Ky është kasaforta ime arduino e teknologjisë së lartë. Duhet të skanoni gishtin, të skanoni kartën tuaj, pastaj të futni një fjalëkalim 4 shifror për të zhbllokuar sirtarin. Ky projekt nuk rekomandohet për fillestarët sepse është shumë i avancuar. Kodi është i gjatë, por unë do ta ndaj në këtë projekt. Kostoja është rreth 75 dollarë nëse ndërtoni të njëjtën kasafortë si unë. Ky projekt gjithashtu mund të zgjasë 1-3 ditë për t'u përfunduar. Pra, le të fillojmë!

Furnizimet

Për të ndërtuar të njëjtën kasafortë si e imja do t'ju duhet:

Arduino (Uno rekomandohet sepse nuk kam hapa për arduino mega ose nano. Por ju ende mund t'i përdorni ato)

dërrasë buke

servo

telat e kërcyesit

levë

20*4 (mund të përdorni 16*4, por do të duhet të ndryshoni kodin)

skaner i gjurmëve të gishtërinjve

skaner i kartave mfrc522 rfid

një kovë legos

Hapi 1: Ndërtimi i një kutie

Ndërtimi i një kutie
Ndërtimi i një kutie

Së pari do t'ju duhet një kuti për të futur pajisjet elektronike. Mund të përdorni legos, një kuti të printuar në 3D, apo edhe karton! (Megjithëse kjo mund të jetë më e vështirë) Mos harroni të vendosni vrima në të për një sirtar dhe pajisjet tuaja elektronike. Nëse jeni duke përdorur skanerin e kartave rfid, nuk keni nevojë të vendosni një vrimë për këtë nëse muret tuaja janë të holla. Kartat ende funksionojnë, por ju duhet t'i mbyllni çelësat e kyçit në mënyrë që senori i kartës rfid t'i lexojë ato. Gjithashtu lini vend për arduino -n tuaj dhe telat brenda. SHENIM: Kur ndërtoni sirtarin, lini një vrimë në të në mënyrë që servo juaj të kthehet dhe të bllokojë sirtarin.

Hapi 2: Instalimi i telave

Instalim!
Instalim!

Ky hap mund të jetë i komplikuar sepse ju duhet të lidhni telat në vendin e saktë ose elektronika nuk do të funksionojë. Unë nuk kam një diagram të instalimeve elektrike, por do t'ju them nëse secili shkon. Instalimet elektrike janë vetëm për arduino uno. Ju do të keni për të kërkuar për të vënë telat nëse jeni duke përdorur një arduino mega ose nano. Nëse nuk jeni duke përdorur të gjitha elektronet që kam, thjesht mund ta kaloni atë instalime elektrike.

Skaneri i printimit të gishtërinjve: tela jeshile: tela e bardhë D2: tela e zezë D3: tela e kuqe GND: 5V

Xhojstik: 5V = 3.3V GND = GND X = A2 Y = A3 Ndërprerës = D4

skaner i kartave rfid: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

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

Servo: tela e kuqe: 5V Teli kafe: Teli i verdhë GND: D6

SH NOTNIM: MOS E FSHENI SKANERIN E KARTS RFID N 5 5V. NFSE E BON, DO T B PRISH !!!

Ju mund të pyesni pse thashë të lidhni fuqinë e levës në 3.3V kur thotë 5V anash. Kjo ndodh sepse servo, ekrani dhe skaneri i gjurmëve të gishtërinjve kanë nevojë për 5V. Nëse shtoni levën në të, elektronika mund të mos funksionojë sepse gjithçka ka nevojë për 5V. Joystick do të punojë akoma me 3.3V. Thjesht vlera maksimale nuk do të jetë 1023, do të jetë 670.

Hapi 3: Shkarkimi i Bibliotekave

Në këtë projekt, do t'ju duhen 6 biblioteka për të përdorur të gjithë pajisjet elektronike. 1 për servo, 1 për sensorin e gjurmëve të gishtërinjve, 2 për skanerin e kartave rfid dhe 2 për ekranin. Joystick nuk ka nevojë për një bibliotekë. Tani, çfarë është një bibliotekë? Në thelb është një skedar që përmban shumë kod që mund të përdorni në projektin tuaj me komanda të thjeshta. Për të marrë këto biblioteka, duhet të shkoni në një vend të quajtur GitHub. Nëse dini si të shkarkoni dhe hapni bibliotekat, thjesht shkoni te lidhjet më poshtë për shkarkime. Nëse nuk e dini se si, mund të shkoni te instruksioni im i cili flet se si të shkarkoni një bibliotekë në hapin 3:

ose kërkoni një video në youtube se si të shkarkoni një bibliotekë arduino nga GitHub

LIDHJET ME LIRARI:

Servo

sensori i gjurmëve të gishtërinjve:

spi

sensori i kartës rfid

biblioteka e ekranit 1

biblioteka e ekranit 2

Hapi 4: Vendosja e sensorit të gjurmëve të gishtave dhe sensorit të kartës Rfid

Ky hap flet për mënyrën e vendosjes së sensorit të gjurmëve të gishtërinjve dhe sensorit të kartës rfid. Nëse nuk e keni përdorur tashmë sensorin tuaj të gjurmëve të gishtërinjve, do t'ju duhet të tregoni se si duket gjurma juaj e gishtit në mënyrë që ta ruajë atë në kujtesën e tij. Edhe nëse e keni përdorur më parë, me siguri duhet ta bëni këtë hap. Unë do t'ju tregoj se si ta bëni atë shkurt, por nëse nuk ka kuptim, shkoni te e njëjta lidhje udhëzuese në hapin e fundit. I kalon shumë mirë. Ideja themelore thjesht e hapur arduino. Shkoni te skedari> shembuj> sensori i gjurmëve të gishtërinjve adafruit> regjistrohuni. Ngarko kodin në arduino, hap monitorin serik dhe ndiq hapat që të tregon. Kur ju thotë të jepni një numër. Shkruani 1#.

Tani për kartën rfid, ky hap është mjaft i lehtë. Arduino ide e hapur. Shkoni te skedari> shembuj> mfrc522> lexoni të dhënat personale. Ngarko në arduino dhe hap monitorin serik. Skanoni kartën ose çelësin që dëshironi të përdorni që vjen me sensorin tuaj. Pastaj do t'ju japë disa informacione. Kërkoni ID -në e kartës do të jetë 4 grupe me 2 shifra. Diçka si kjo: AB 45 2Y 45 por kodi juaj do të jetë i ndryshëm. Shkruani këtë në një copë letër. Do t'ju duhet përsëri më vonë. Kaq është për këtë hap.

Hapi 5: KODI

Ky do të jetë hapi më i vështirë për shumicën prej jush, por është mjaft i thjeshtë. Së pari kopjoni dhe ngjisni kodin në arduino ide nga poshtë. Së dyti, redaktoni 2 seksionet ku thuhet EDIT CODE. 1 seksion është për skanerin e kartave, 1 është për levën. Këto hapa nuk mund të anashkalohen. Pasi të keni mbaruar, ngarkoni kodin në arduino!

#include #include Fingerprint.h>

#përfshi

#përfshi

#përfshi

#përfshi

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

#përcakto RST_PIN 9

#përcakto SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Gishti Adafruit_Fingerprint = Gjurmë gishtash Adafruit (& mySerial);

Servo servo;

char d1;

kar d2;

kar d3;

char d4;

void setup () {

servo.tach (6);

servo.shkruaj (170);

lcd.filloni (20, 4);

Serial.filloj (9600);

ndërsa (! Serial);

SPI.filloj ();

mfrc522. PCD_Init ();

vonesa (4);

mfrc522. PCD_DumpVersionToSerial ();

vonesë (100);

Serial.println ("\ n / nTesti i zbulimit të gishtit të adafruit");

gisht.filloj (57600);

vonesa (5);

if (finger.verifyPassword ()) {

Serial.println ("Të gjitha sistemet që punojnë");

lcd.qartë ();

lcd.setCursor (1, 0);

lcd.print ("Ju lutemi skanoni gishtin");

} tjetër {

Serial.println ("ERROR: Sensori i printimit të gishtit nuk u gjet!");

lcd.setCursor (0, 0);

lcd.print ("ERROR: Printimi i gishtit");

lcd.setCursor (1, 1);

lcd.print ("sensori nuk u gjet!");

ndërsa (1) {vonesë (1); }

}

finger.getTemplateCount ();

Serial.print ("Sensori përmban"); Serial.print (finger.templateCount); Serial.println ("shabllone"); Serial.println ("Duke pritur për gishtin e vlefshëm …"); }

i pavlefshëm (* resetFunc) (i pavlefshëm) = 0;

lak void () {

getFingerprintIDez ();

vonesë (50);

}

uint8_t merrniFingerprintID () {

uint8_t p = gishti.getImage ();

kaloni (p) {

rasti FINGERPRINT_OK:

Serial.println ("Imazhi i marrë");

pushim;

rasti FINGERPRINT_NOFINGER:

Serial.println ("Asnjë gisht nuk u zbulua");

kthimi p;

rasti FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Gabim komunikimi");

kthimi p;

rasti FINGERPRINT_IMAGEFAIL:

Serial.println ("Gabim në imazh");

kthimi p;

parazgjedhje:

Serial.println ("Gabim i panjohur");

kthimi p;

}

p = gishti.image2Tz ();

kaloni (p) {

rasti FINGERPRINT_OK:

Serial.println ("Imazhi i konvertuar");

pushim;

rasti FINGERPRINT_IMAGEMESS:

Serial.println ("Imazhi shumë i çrregullt");

kthimi p;

rasti FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Gabim komunikimi");

kthimi p;

rasti FINGERPRINT_FEATUREFAIL:

Serial.println ("Nuk u gjetën veçoritë e gjurmëve të gishtërinjve");

kthimi p;

rasti FINGERPRINT_INVALIDIMAGE:

Serial.println ("Nuk u gjetën veçoritë e gjurmëve të gishtërinjve");

kthimi p;

parazgjedhje:

Serial.println ("Gabim i panjohur");

kthimi p;

}

p = gishti.fingerFastSearch ();

nëse (p == FINGERPRINT_OK) {

Serial.println ("Gjeti një ndeshje të shtypur!");

} tjetër if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Gabim komunikimi");

kthimi p;

} tjetër nëse (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Nuk gjeta ndeshje");

kthimi p;

} tjetër {

Serial.println ("Gabim i panjohur");

kthimi p;

}

Serial.print ("ID e gjetur #"); Serial.print (gishti.fingerID);

Serial.print ("me besimin e"); Serial.println (gisht.besim);

gishti i kthimit.fingerID;

}

int getFingerprintIDez () {

uint8_t p = gishti.getImage ();

nëse (p! = FINGERPRINT_OK) kthehet -1;

p = gishti.image2Tz ();

nëse (p! = FINGERPRINT_OK) kthehet -1;

p = gishti.fingerFastSearch ();

nëse (p! = FINGERPRINT_OK) kthehet -1;

Serial.print ("ID e gjetur #"); Serial.print (gishti.fingerID);

Serial.print ("me besimin e"); Serial.println (gisht.besim);

nëse (gishti.fingerID == 1) {

lcd.qartë ();

lcd.setCursor (2, 0);

lcd.print ("Gishti u pranua");

lcd.setCursor (2, 0);

lcd.print ("tani skanoni kartën …");

lcd.setCursor (0, 3);

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

ndërsa (! mfrc522. PICC_IsNewCardPresent ());

ndërsa (! mfrc522. PICC_ReadCardSerial ());

në qoftë se (mfrc522.uid.uidByte [0] == 0x92 && // ======================== EDIT KOD ========= ===============

mfrc522.uid.uidByte [1] == 0xAB && // Merrni atë copë letër me ID -në, kishte 4 grupe me 2 shifra

mfrc522.uid.uidByte [2] == 0x90 && // Shikoni kodin, shihni se ku thotë 0x92, 0xAB, 0x90, 0x1c? Shkruani secilën

mfrc522.uid.uidByte [3] == 0x1C) {// të seksionit 2 shifror pas 0x. Për shembull, pjesa e ID -së thotë

lcd.qartë (); // 3E, pastaj futni 3E pas 0x për të bërë 0x3E. Bëni këtë për secilën pjesë

lcd.setCursor (3, 0);

lcd.print ("Së fundi, fut");

lcd.setCursor (1, 1);

lcd.print ("fjalëkalimi i levës");

ndërsa (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); nëse (analogRead (A2) <= 100) {

d1 = L;

}

nëse (analogRead (A2)> = 670) {

d1 = R;

}

nëse (analogRead (A3) <= 100) {

d1 = U;

}

nëse (analogRead (A3)> = 670) {

d1 = D;

}

vonesë (500);

ndërsa (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

nëse (analogRead (A2) <= 100) {

d2 = L;

}

nëse (analogRead (A2)> = 670) {

d2 = R;

}

nëse (analogRead (A3) <= 100) {

d2 = U;

}

nëse (analogRead (A3)> = 670) {

d2 = D;

}

vonesë (500);

ndërsa (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

nëse (analogRead (A2) <= 100) {

d3 = L;

}

nëse (analogRead (A2)> = 670) {

d3 = R;

}

nëse (analogRead (A3) <= 100) {

d3 = U;

}

nëse (analogRead (A3)> = 670) {

d3 = D;

}

vonesë (500);

ndërsa (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

nëse (analogRead (A2) <= 100) {

d4 = L;

}

nëse (analogRead (A2)> = 670) {

d4 = R;

}

nëse (analogRead (A3) <= 100) {

d4 = U;

}

nëse (analogRead (A3)> = 670) {

d4 = D;

}

vonesë (500);

nëse (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= EDIT KOD ====== =================

lcd.qartë (); // Ky seksion është ku mund të ndryshoni fjalëkalimin me levë

lcd.setCursor (2, 0); // fjalëkalimi është vendosur në të majtë, lart majtas, djathtas. Nëse doni të ndryshoni

lcd.print ("Qasja u dha!"); // atë, vendosni një L për të majtë, R për të djathtë, U për lart, ose D për poshtë në cilindo nga

lcd.setCursor (2, 1); // 4 seksione me një shkronjë pas shenjave ==.

lcd.print ("Sirtari i hapur.");

lcd.setCursor (2, 2);

lcd.print ("Kur të mbaroni, lëvizni");

lcd.setCursor (1, 3);

lcd.print ("levë për rimbushje");

servo.shkruaj (90);

ndërsa (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.shkruaj (170);

lcd.setCursor (3, 0);

lcd.print ("Sirtari i kyçur");

vonesë (3000);

resetFunc ();

} tjetër {

lcd.qartë ();

lcd.setCursor (2, 0);

lcd.print ("QASJA E MENUAR !!!");

lcd.setCursor (0, 2);

lcd.print ("Rinis sistemin …");

vonesë (3000);

resetFunc ();

}

} tjetër {

lcd.qartë ();

lcd.setCursor (2, 0);

lcd.print ("QASJA E MENUAR !!!");

lcd.setCursor (0, 2);

lcd.print ("Rinis sistemin …");

vonesë (3000);

resetFunc ();

}

} tjetër {

lcd.qartë ();

lcd.setCursor (2, 0);

lcd.print ("QASJA E MENUAR !!!");

lcd.setCursor (0, 2);

lcd.print ("Rinis sistemin …");

vonesë (3000);

resetFunc ();

}

gishti i kthimit.fingerID; }

Hapi 6: Përfundoni

Një gjë kam harruar t'ju them, mirë 2 gjëra është se e kam ndërtuar këtë para se të bëja fotografi, kështu që nuk mund t'ju tregoja se si e ndërtova kutinë. Tjetra është se rekomandohet të vidhosni servo pjesën në pjesën që kthehet. Nëse nuk e bëni, dikush mund ta tërheqë sirtarin ndërsa është i kyçur dhe ta tërheqë copën. Por, para se ta vidhosni, gjeni vendin e duhur ku ta vendosni sepse servo kthehet në një shkallë të caktuar. Ose thjesht mund ta ndryshoni në kod. Nëse disa nga pajisjet elektronike janë qesharake, mund të dëshironi të gjeni një mënyrë tjetër për të marrë 5V për disa prej tyre. Vura re kur skaneri im i gjurmëve të gishtërinjve u ndez, ekrani do të ndizte pak me të dhe servo do të bënte zhurmë. Kur servo lëvizi, ekrani do të errësohej. Shpresoj se ju ka pëlqyer projekti! Nëse keni ndonjë pyetje, lërini ato në komente. Unë nuk jam shumë i udhëzueshëm, por do t'i përgjigjem sa më shpejt që të mundem!

Recommended: