Indholdsfortegnelse:

Arduino High Tech Safe: 6 trin
Arduino High Tech Safe: 6 trin

Video: Arduino High Tech Safe: 6 trin

Video: Arduino High Tech Safe: 6 trin
Video: Amazing arduino project 2024, Juli
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Dette er min arduino højteknologiske pengeskab. Du skal scanne din finger, scanne dit kort og derefter indtaste en firecifret adgangskode for at låse skuffen op. Dette projekt anbefales ikke til begyndere, fordi det er meget avanceret. Koden er lang, men jeg vil dele den i dette projekt. Omkostningerne er omkring $ 75, hvis du bygger den samme pengeskab som mig. Dette projekt kan også tage 1-3 dage at gennemføre. Så lad os komme i gang!

Forbrugsvarer

For at bygge den samme pengeskab som min skal du bruge:

Arduino (Uno anbefales, fordi jeg ikke har trin til arduino mega eller nano. Men du kan stadig bruge dem)

brødbræt

servo

jumper ledninger

joystick

20*4 (du kan bruge 16*4, men du bliver nødt til at ændre koden)

fingeraftryksscanner

mfrc522 rfid -kortscanner

en spand legoer

Trin 1: Bygning af en kasse

Bygger en kasse
Bygger en kasse

Først skal du bruge en kasse til at sætte din elektronik i. Du kan bruge legoer, en 3D -trykt æske eller endda pap! (Selvom det kan være sværere) Glem ikke at sætte huller i det til en skuffe og din elektronik. Hvis du bruger rfid -kortscanneren, behøver du ikke at sætte et hul til det, hvis dine vægge er tynde. Kortene fungerer stadig, men du skal lægge nøgleringene tæt, så rfid -kortets senor kan læse dem. Efterlad også plads til din arduino og ledninger indeni. BEMÆRK: Når du bygger skuffen, skal du efterlade et hul i den, så din servo kan dreje og låse skuffen.

Trin 2: Tilslutning

Kabelføring!
Kabelføring!

Dette trin kan være kompliceret, fordi du skal tilslutte ledninger til det nøjagtige sted, ellers vil elektronikken ikke fungere. Jeg har ikke et ledningsdiagram, men jeg vil fortælle dig, om hver enkelt går. Ledningerne er kun til arduino uno. Du bliver nødt til at søge efter at sætte ledningerne, hvis du bruger en arduino mega eller nano. Hvis du ikke bruger alle de elektroner, jeg har, kan du bare springe den ledning over.

Fingeraftryksscanner: grøn ledning: D2 hvid ledning: D3 sort ledning: GND rød ledning: 5V

Joystick: 5V = 3.3V GND = GND X = A2 Y = A3 Switch = D4

rfid -kortscanner: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

lcd -skærm: 5V = 5V GND = GND sda = A4 sck = A5

Servo: rød ledning: 5V Brun tråd: GND gul ledning: D6

BEMÆRK: STIK IKKE RFID CARD SCANNER I 5V. HVIS DU GØR DET, VIL DET GÅ PÅ !!!

Du undrer dig måske over, hvorfor jeg sagde at tilslutte joystick -strømmen til 3,3V, når der står 5V på siden. Det er fordi servoen, skærmen og fingeraftryksscanneren har brug for 5V. Hvis du tilføjer joysticket til det, fungerer elektronikken muligvis ikke, fordi alt har brug for 5V. Joysticket fungerer stadig med 3,3V. Det er bare den maksimale værdi, der ikke vil være 1023, den vil være ~ 670.

Trin 3: Downloadning af biblioteker

I dette projekt skal du bruge 6 biblioteker til at bruge al elektronikken. 1 til servoen, 1 til fingeraftrykssensoren, 2 til rfid -kortscanner og 2 til skærmen. Joysticket behøver ikke et bibliotek. Hvad er et bibliotek nu? Det er dybest set en fil, der indeholder masser af kode, som du kan bruge i dit projekt med enkle kommandoer. For at få disse biblioteker skal du gå til et sted kaldet GitHub. Hvis du ved, hvordan du downloader og pakker biblioteker ud, skal du bare gå til nedenstående links for at downloade. Hvis du ikke ved hvordan, kan du gå til min instruktive, der taler om, hvordan du downloader et bibliotek i trin 3:

eller søg i en youtube -video om, hvordan du downloader et arduino -bibliotek fra GitHub

LINKER TIL LIRARIES:

Servo

fingeraftrykssensor:

spi

rfid -kort sensor

skærmbibliotek 1

skærmbibliotek 2

Trin 4: Opsætning af fingeraftrykssensor og Rfid -kortsensor

Dette trin taler om, hvordan du konfigurerer fingeraftrykssensor og RFID -kort sensor. Medmindre du allerede har brugt din fingeraftrykssensor, skal du vise den, hvordan dit fingeraftryk ser ud, så det kan gemme det i hukommelsen. Selvom du har brugt det før, bør du sandsynligvis stadig gøre dette trin. Jeg vil fortælle dig, hvordan du gør det kort, men hvis det ikke giver mening, skal du gå til det samme instruerbare link i det sidste trin. Det går meget godt over det. Grundlæggende bare åben arduino ide. Gå til fil> eksempler> adafruit fingeraftrykssensor> tilmeld dig. Upload kode til arduino, åbn den serielle skærm, og følg trinene, den fortæller dig. Når det fortæller dig at give det et nummer. Indtast 1#.

Nu til rfid -kortet er dette trin ret let. Åben arduino ide. Gå til fil> eksempler> mfrc522> læs personlige data. Upload til arduino og åben seriel skærm. Scan det kort eller den nøglering, du vil bruge, der fulgte med din sensor. Så vil det give dig nogle oplysninger. Kig efter kortets ID, det vil være 4 sæt med 2 cifre. Noget som dette: AB 45 2Y 45, men din kode vil være anderledes. Skriv dette ned på et stykke papir. Du får brug for det igen senere. Det er det for dette trin.

Trin 5: KODEN

Dette bliver det sværeste trin for de fleste af jer, men det er ret simpelt. Kopier og indsæt først koden i arduino -ideen nedenunder. For det andet, rediger de 2 sektioner, hvor der står EDIT CODE. 1 sektion er til kortscanneren, 1 er til joysticket. Disse trin kan ikke springes over. Når det er gjort, skal du uploade kode til arduino!

#include #include Fingerprint.h>

#omfatte

#omfatte

#omfatte

#omfatte

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

#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;

ugyldig opsætning () {

servo. fastgør (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

mens (! Seriel);

SPI.begin ();

mfrc522. PCD_Init ();

forsinkelse (4);

mfrc522. PCD_DumpVersionToSerial ();

forsinkelse (100);

Serial.println ("\ n / nAdafruit finger detect test");

finger.begynder (57600);

forsinkelse (5);

hvis (finger.verifyPassword ()) {

Serial.println ("Alle systemer fungerer");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Scan venligst finger");

} andet {

Serial.println ("FEJL: Fingeraftrykssensor ikke fundet!");

lcd.setCursor (0, 0);

lcd.print ("FEJL: Fingeraftryk");

lcd.setCursor (1, 1);

lcd.print ("sensor ikke fundet!");

mens (1) {forsinkelse (1); }

}

finger.getTemplateCount ();

Serial.print ("Sensor indeholder"); Serial.print (finger.templateCount); Serial.println ("skabeloner"); Serial.println ("Venter på gyldig finger …"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

forsinkelse (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

switch (p) {

sag FINGERPRINT_OK:

Serial.println ("Billede taget");

pause;

sag FINGERPRINT_NOFINGER:

Serial.println ("Ingen finger registreret");

returnere p;

sag FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kommunikationsfejl");

returnere p;

sag FINGERPRINT_IMAGEFAIL:

Serial.println ("billedfejl");

returnere p;

Standard:

Serial.println ("Ukendt fejl");

returnere p;

}

p = finger.image2Tz ();

switch (p) {

sag FINGERPRINT_OK:

Serial.println ("Billede konverteret");

pause;

sag FINGERPRINT_IMAGEMESS:

Serial.println ("Billedet er for rodet");

returnere p;

sag FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kommunikationsfejl");

returnere p;

sag FINGERPRINT_FEATUREFAIL:

Serial.println ("Kunne ikke finde fingeraftryksfunktioner");

returnere p;

sag FINGERPRINT_INVALIDIMAGE:

Serial.println ("Kunne ikke finde fingeraftryksfunktioner");

returnere p;

Standard:

Serial.println ("Ukendt fejl");

returnere p;

}

p = finger.fingerFastSearch ();

hvis (p == FINGERPRINT_OK) {

Serial.println ("Fundet et printmatch!");

} ellers hvis (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Kommunikationsfejl");

returnere p;

} ellers hvis (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Fandt ikke et match");

returnere p;

} andet {

Serial.println ("Ukendt fejl");

returnere p;

}

Serial.print ("Fundet ID #"); Serielt tryk (finger.fingerID);

Serial.print ("med tillid til"); Serial.println (finger.confidence);

return finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

hvis (p! = FINGERPRINT_OK) returnerer -1;

p = finger.image2Tz ();

hvis (p! = FINGERPRINT_OK) returnerer -1;

p = finger.fingerFastSearch ();

hvis (p! = FINGERPRINT_OK) returnerer -1;

Serial.print ("Fundet ID #"); Serielt tryk (finger.fingerID);

Serial.print ("med tillid til"); Serial.println (finger.confidence);

hvis (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Finger accepteret");

lcd.setCursor (2, 0);

lcd.print ("nu scannekort …");

lcd.setCursor (0, 3);

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

mens (! mfrc522. PICC_IsNewCardPresent ());

mens (! mfrc522. PICC_ReadCardSerial ());

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

mfrc522.uid.uidByte [1] == 0xAB && // Tag det stykke papir med id'et på, der var 4 sæt med 2 cifre

mfrc522.uid.uidByte [2] == 0x90 && // Kig efter koden, se hvor der står 0x92, 0xAB, 0x90, 0x1c? Indtast hver

mfrc522.uid.uidByte [3] == 0x1C) {// af det 2 -cifrede afsnit efter 0x. For eksempel siger afsnittet i id'et

lcd.clear (); // 3E, indtast derefter 3E efter 0x for at lave 0x3E. Gør dette for hver sektion

lcd.setCursor (3, 0);

lcd.print ("Endelig indtast");

lcd.setCursor (1, 1);

lcd.print ("joystick -adgangskode");

mens (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

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

d1 = L;

}

hvis (analogRead (A2)> = 670) {

d1 = R;

}

hvis (analogRead (A3) <= 100) {

d1 = U;

}

hvis (analogRead (A3)> = 670) {

d1 = D;

}

forsinkelse (500);

mens (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

hvis (analogRead (A2) <= 100) {

d2 = L;

}

hvis (analogRead (A2)> = 670) {

d2 = R;

}

hvis (analogRead (A3) <= 100) {

d2 = U;

}

hvis (analogRead (A3)> = 670) {

d2 = D;

}

forsinkelse (500);

mens (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

hvis (analogRead (A2) <= 100) {

d3 = L;

}

hvis (analogRead (A2)> = 670) {

d3 = R;

}

hvis (analogRead (A3) <= 100) {

d3 = U;

}

hvis (analogRead (A3)> = 670) {

d3 = D;

}

forsinkelse (500);

mens (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

hvis (analogRead (A2) <= 100) {

d4 = L;

}

hvis (analogRead (A2)> = 670) {

d4 = R;

}

hvis (analogRead (A3) <= 100) {

d4 = U;

}

hvis (analogRead (A3)> = 670) {

d4 = D;

}

forsinkelse (500);

hvis (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= EDIT CODE ====== ==================

lcd.clear (); // Dette afsnit er, hvor du kan redigere adgangskoden med joysticket

lcd.setCursor (2, 0); // adgangskoden er indstillet til venstre, op til venstre, til højre. Hvis du vil ændre

lcd.print ("Adgang givet!"); // det, sæt en L for venstre, R for højre, U for op eller D for ned i nogen af

lcd.setCursor (2, 1); // 4 sektioner med et bogstav efter == tegnene.

lcd.print ("Skuffe ulåst.");

lcd.setCursor (2, 2);

lcd.print ("Når du er færdig, skal du flytte");

lcd.setCursor (1, 3);

lcd.print ("joystick til genlåsning");

servo.write (90);

mens (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("skuffe låst");

forsinkelse (3000);

resetFunc ();

}andet{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ADGANG NÆGT !!!");

lcd.setCursor (0, 2);

lcd.print ("Genstart af system …");

forsinkelse (3000);

resetFunc ();

}

}andet{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ADGANG NÆGT !!!");

lcd.setCursor (0, 2);

lcd.print ("Genstart af system …");

forsinkelse (3000);

resetFunc ();

}

}andet{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ADGANG NÆGT !!!");

lcd.setCursor (0, 2);

lcd.print ("Genstart af system …");

forsinkelse (3000);

resetFunc ();

}

return finger.fingerID; }

Trin 6: Afslut

En ting jeg glemte at fortælle dig, ja 2 ting er, at jeg byggede dette, før jeg tog billeder, så jeg kunne ikke vise dig, hvordan jeg byggede kassen. Den anden er, at det anbefales at skrue servodelen på den del, der drejer. Hvis du ikke gør det, kan nogen trække skuffen, mens den er låst, og trække stykket af. Men før du skruer den fast, skal du finde det rigtige sted, hvor du skal sætte den på, fordi servoen drejer til en vis grad. Eller du kan bare ændre det i koden. Hvis noget af elektronikken virker sjovt, vil du måske finde en anden måde at få 5V til nogle af dem. Jeg lagde mærke til, at da min fingeraftryksscanner blinkede, ville skærmen blinke lidt med den, og servoen ville lave støj. Når servoen flyttede, ville skærmen blive svag. Jeg håber du nød projektet! Hvis du har spørgsmål, skal du efterlade dem i kommentarerne. Jeg er ikke meget på instrukser, men jeg vil besvare dem, så snart jeg kan!

Anbefalede: