Innholdsfortegnelse:

Arduino High Tech Safe: 6 trinn
Arduino High Tech Safe: 6 trinn

Video: Arduino High Tech Safe: 6 trinn

Video: Arduino High Tech Safe: 6 trinn
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, November
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Dette er min arduino høyteknologiske safe. Du må skanne fingeren, skanne kortet og deretter skrive inn et firesifret passord for å låse opp skuffen. Dette prosjektet anbefales ikke for nybegynnere fordi det er veldig avansert. Koden er lang, men jeg vil dele den i dette prosjektet. Kostnaden er rundt $ 75 hvis du bygger den samme safen som meg. Dette prosjektet kan også ta 1-3 dager å fullføre. Så, la oss komme i gang!

Rekvisita

For å bygge den samme safe som min trenger du:

Arduino (Uno anbefales fordi jeg ikke har trinn for arduino mega eller nano. Men du kan fortsatt bruke dem)

brødbrett

servo

jumper ledninger

styrespak

20*4 (du kan bruke 16*4, men du må endre koden)

fingeravtrykkskanner

mfrc522 rfid -kortskanner

en bøtte legos

Trinn 1: Bygg en boks

Å bygge en boks
Å bygge en boks

Først trenger du en eske for å sette elektronikken i. Du kan bruke legos, en 3D -boks eller til og med papp! (Selv om dette kan være vanskeligere) Ikke glem å sette hull i den for en skuff og elektronikken din. Hvis du bruker rfid -kortskanneren, trenger du ikke sette hull for det hvis veggene er tynne. Kortene fungerer fortsatt, men du må sette nøkkelringene tett slik at rfid -kortets senor kan lese dem. La også plass til arduino og ledninger inne. MERK: Når du bygger skuffen, la det være et hull i den slik at servoen din kan snu og låse skuffen.

Trinn 2: Tilkobling

Kabling opp!
Kabling opp!

Dette trinnet kan være komplisert fordi du må koble ledninger til det nøyaktige stedet, ellers vil elektronikken ikke fungere. Jeg har ikke et koblingsskjema, men jeg vil fortelle deg om hver enkelt går. Ledningene er kun for arduino uno. Du må søke etter å sette ledningene hvis du bruker en arduino mega eller nano. Hvis du ikke bruker alle elektronene jeg har, kan du bare hoppe over ledningene.

Fingerutskriftsscanner: grønn ledning: D2 hvit ledning: D3 svart ledning: GND rød ledning: 5V

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

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

LCD -skjerm: 5V = 5V GND = GND sda = A4 sck = A5

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

MERK: IKKE KOBLE RFID -KORTSKANNER I 5V. HVIS DU GJØR DET, VIL DET BRYTE !!!

Du lurer kanskje på hvorfor jeg sa å koble styrespaken til 3,3V når det står 5V på siden. Det er fordi servoen, skjermen og fingeravtrykksskanneren trenger 5V. Hvis du legger joysticken til det, fungerer kanskje ikke elektronikken fordi alt trenger 5V. Styrespaken vil fortsatt fungere med 3,3V. Det er bare maksverdien som ikke vil være 1023, den vil være ~ 670.

Trinn 3: Last ned biblioteker

I dette prosjektet trenger du 6 biblioteker for å bruke all elektronikken. 1 for servoen, 1 for fingeravtrykkssensoren, 2 for rfid -kortskanner og 2 for skjermen. Styrespaken trenger ikke et bibliotek. Hva er et bibliotek? Det er i utgangspunktet en fil som inneholder mye kode som du kan bruke i prosjektet ditt med enkle kommandoer. For å få disse bibliotekene må du gå til et sted som heter GitHub. Hvis du vet hvordan du laster ned og pakker ut biblioteker, går du til koblingene nedenfor for nedlasting. Hvis du ikke vet hvordan, kan du gå til instruksjonsboken min som snakker om hvordan du laster ned et bibliotek i trinn 3:

eller søk i en youtube -video om hvordan du laster ned et arduino -bibliotek fra GitHub

LENKER TIL LIRARIES:

Servo

fingeravtrykkssensor:

spi

rfid -kortsensor

skjermbibliotek 1

skjermbibliotek 2

Trinn 4: Konfigurere fingeravtrykkssensor og Rfid -kortsensor

Dette trinnet snakker om hvordan du konfigurerer fingeravtrykkssensor og rfid -kortsensor. Med mindre du allerede har brukt fingeravtrykkssensoren din, må du vise den hvordan fingeravtrykket ditt ser ut, slik at det kan lagre det i minnet. Selv om du har brukt det før, bør du sannsynligvis gjøre dette trinnet. Jeg vil fortelle deg hvordan du gjør det kort, men hvis det ikke er fornuftig, gå til den samme instruerbare lenken i det siste trinnet. Det går veldig bra over det. Grunnleggende bare åpne arduino ide. Gå til fil> eksempler> adafruit fingeravtrykkssensor> registrer deg. Last opp kode til arduino, åpne seriell skjerm, og følg trinnene den forteller deg. Når den forteller deg å gi den et tall. Skriv inn 1#.

Nå for rfid -kortet, dette trinnet er ganske enkelt. Åpen arduino ide. Gå til fil> eksempler> mfrc522> les personlige data. Last opp til arduino og åpne seriell skjerm. Skann kortet eller nøkkelringen du vil bruke som fulgte med sensoren. Da vil det gi deg litt informasjon. Se etter ID -en til kortet det vil være 4 sett med 2 sifre. Noe som dette: AB 45 2Y 45, men koden din vil være annerledes. Skriv dette ned på et stykke papir. Du trenger det igjen senere. Det er det for dette trinnet.

Trinn 5: KODEN

Dette kommer til å være det vanskeligste trinnet for de fleste av dere, men det er ganske enkelt. Kopier og lim først koden inn i arduino ideen nedenfra. For det andre, rediger de to seksjonene der det står EDIT CODE. 1 del er for kortskanneren, 1 er for styrespaken. Disse trinnene kan ikke hoppes over. Når du er ferdig, last opp koden til arduino!

#include #include Fingerprint.h>

#inkludere

#inkludere

#inkludere

#inkludere

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;

røye d1;

røye d2;

røye d3;

røye d4;

ugyldig oppsett () {

servo. fest (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

mens (! Seriell);

SPI.begin ();

mfrc522. PCD_Init ();

forsinkelse (4);

mfrc522. PCD_DumpVersionToSerial ();

forsinkelse (100);

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

finger.begin (57600);

forsinkelse (5);

if (finger.verifyPassword ()) {

Serial.println ("Alle systemer fungerer");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Vennligst skann finger");

} annet {

Serial.println ("FEIL: Fingerutskriftssensor ikke funnet!");

lcd.setCursor (0, 0);

lcd.print ("FEIL: Fingerprint");

lcd.setCursor (1, 1);

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

mens (1) {forsinkelse (1); }

}

finger.getTemplateCount ();

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

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

forsinkelse (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

bytte (p) {

sak FINGERPRINT_OK:

Serial.println ("Bilde tatt");

gå i stykker;

sak FINGERPRINT_NOFINGER:

Serial.println ("Ingen finger oppdaget");

retur p;

sak FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kommunikasjonsfeil");

retur p;

sak FINGERPRINT_IMAGEFAIL:

Serial.println ("bildefeil");

retur p;

misligholde:

Serial.println ("Ukjent feil");

retur p;

}

p = finger.image2Tz ();

bytte (p) {

sak FINGERPRINT_OK:

Serial.println ("Bilde konvertert");

gå i stykker;

sak FINGERPRINT_IMAGEMESS:

Serial.println ("Bildet er for rotete");

retur p;

sak FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kommunikasjonsfeil");

retur p;

sak FINGERPRINT_FEATUREFAIL:

Serial.println ("Kunne ikke finne fingeravtrykkfunksjoner");

retur p;

sak FINGERPRINT_INVALIDIMAGE:

Serial.println ("Kunne ikke finne fingeravtrykkfunksjoner");

retur p;

misligholde:

Serial.println ("Ukjent feil");

retur p;

}

p = finger.fingerFastSearch ();

hvis (p == FINGERPRINT_OK) {

Serial.println ("Fant en utskriftsmatch!");

} annet hvis (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Kommunikasjonsfeil");

retur p;

} annet hvis (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Fant ingen treff");

retur p;

} annet {

Serial.println ("Ukjent feil");

retur p;

}

Serial.print ("Fant ID #"); Serial.print (finger.fingerID);

Serial.print ("med tillit 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 ("Fant ID #"); Serial.print (finger.fingerID);

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

hvis (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Finger akseptert");

lcd.setCursor (2, 0);

lcd.print ("nå skannekort …");

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 && // Ta det papiret med ID -en på, det var 4 sett med 2 sifre

mfrc522.uid.uidByte [2] == 0x90 && // Se etter koden, se hvor det står 0x92, 0xAB, 0x90, 0x1c? Skriv inn hver

mfrc522.uid.uidByte [3] == 0x1C) {// av den tosifrede delen etter 0x. For eksempel sier delen av ID -en

lcd.clear (); // 3E, skriv deretter inn 3E etter 0x for å lage 0x3E. Gjør dette for hver seksjon

lcd.setCursor (3, 0);

lcd.print ("Endelig, skriv inn");

lcd.setCursor (1, 1);

lcd.print ("joystick -passord");

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;

}

if (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;

}

if (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;

}

if (analogRead (A3) <= 100) {

d3 = U;

}

if (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;

}

if (analogRead (A3)> = 670) {

d4 = D;

}

forsinkelse (500);

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

lcd.clear (); // Denne delen er hvor du kan redigere passordet med styrespaken

lcd.setCursor (2, 0); // passordet er satt til venstre, opp til venstre, høyre. Hvis du vil endre

lcd.print ("Tilgang gitt!"); // den, sett en L for venstre, R for høyre, U for opp, eller D for ned i noen av

lcd.setCursor (2, 1); // 4 seksjoner med en bokstav etter == skiltene.

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

lcd.setCursor (2, 2);

lcd.print ("Når du er ferdig, flytt");

lcd.setCursor (1, 3);

lcd.print ("joystick til relock");

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 ("Skuff låst");

forsinkelse (3000);

resetFunc ();

}ellers{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("Start systemet på nytt …");

forsinkelse (3000);

resetFunc ();

}

}ellers{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("Start systemet på nytt …");

forsinkelse (3000);

resetFunc ();

}

}ellers{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("Start systemet på nytt …");

forsinkelse (3000);

resetFunc ();

}

return finger.fingerID; }

Trinn 6: Fullfør

En ting jeg glemte å fortelle deg, vel 2 ting er at jeg bygde dette før jeg tok bilder, så jeg kunne ikke vise deg hvordan jeg bygde boksen. Den andre er at det anbefales å skru servodelen på delen som snur. Hvis du ikke gjør det, kan noen trekke skuffen mens den er låst og trekke av stykket. Men før du skrur den på, finn det rette stedet å sette den på fordi servoen svinger til en viss grad. Eller du kan bare endre det i koden. Hvis noen av elektronikkene virker morsomme, kan det være lurt å finne en annen måte å få 5V for noen av dem. Jeg la merke til at når fingeravtrykksskanneren min blinket, ville skjermen blinke litt med den, og servoen bråket. Når servoen flyttet, ble skjermen svak. Jeg håper du likte prosjektet! Hvis du har spørsmål, legg dem i kommentarene. Jeg er ikke mye på instrukser, men jeg vil svare dem så snart jeg kan!

Anbefalt: