Sadržaj:

Arduino High Tech Safe: 6 koraka
Arduino High Tech Safe: 6 koraka

Video: Arduino High Tech Safe: 6 koraka

Video: Arduino High Tech Safe: 6 koraka
Video: ❓ Обязательно к просмотру начинающему в Arduino IDE (ошибка компилятора) 2024, Novembar
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Ovo je moj arduino sef visoke tehnologije. Morate skenirati prst, skenirati karticu, a zatim unijeti četveroznamenkastu lozinku da biste otključali ladicu. Ovaj se projekt ne preporučuje početnicima jer je vrlo napredan. Kôd je dugačak, ali podijelit ću ga u ovom projektu. Cijena je oko 75 USD ako napravite isti sef kao ja. Za završetak ovog projekta moglo bi biti potrebno 1-3 dana. Dakle, počnimo!

Supplies

Za izgradnju istog sefa kao i moj trebat će vam:

Arduino (Uno se preporučuje jer nemam korake za arduino mega ili nano. Ali ih i dalje možete koristiti)

matična ploča

servo

kratkospojne žice

joystick

20*4 (možete koristiti 16*4, ali ćete morati promijeniti kôd)

skener otiska prsta

mfrc522 skener rfid kartica

kanta lego kockica

Korak 1: Izgradnja kutije

Izgradnja kutije
Izgradnja kutije

Prvo će vam trebati kutija u koju ćete staviti svoju elektroniku. Možete koristiti lego kockice, kutiju sa 3D printom ili čak karton! (Iako bi ovo moglo biti teže) Ne zaboravite u njega staviti rupe za ladicu i svoju elektroniku. Ako koristite skener RFID kartice, ne morate staviti rupu za to ako su vam zidovi tanki. Kartice i dalje rade, ali privjeske morate staviti blizu kako bi ih senzor RFID kartice mogao pročitati. Ostavite i prostor za vaš arduino i žice unutra. NAPOMENA: Kada gradite ladicu, ostavite rupu u njoj kako bi se vaš servo mogao okrenuti i zaključati ladicu.

Korak 2: Ožičenje

Wiring Up!
Wiring Up!

Ovaj korak može biti kompliciran jer morate spojiti žice na točno mjesto ili elektronika neće raditi. Nemam dijagram ožičenja, ali reći ću vam hoće li svaki proći. Ožičenje je samo za arduino uno. Morat ćete tražiti da stavite žice ako koristite arduino mega ili nano. Ako ne koristite svu elektroniku koju imam, možete jednostavno preskočiti to ožičenje.

Skener otiska prsta: zelena žica: D2 bijela žica: D3 crna žica: GND crvena žica: 5V

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

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

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

Servo: crvena žica: 5V Smeđa žica: GND žuta žica: D6

NAPOMENA: NE PRIKLJUČUJETE SKENER RFID KARTICE NA 5 V. AKO TO UČINITE, TO ĆE SE Slomiti !!!

Možda se pitate zašto sam rekao da uključite napajanje upravljačke palice na 3,3 V kad na bočnoj strani piše 5V. To je zato što servo, ekran i skener otiska prsta trebaju 5V. Ako tome dodate joystick, elektronika možda neće raditi jer za sve treba 5V. Džojstik će i dalje raditi sa 3.3V. Maksimalna vrijednost neće biti 1023, bit će ~ 670.

Korak 3: Preuzimanje biblioteka

U ovom projektu trebat će vam 6 biblioteka za korištenje sve elektronike. 1 za servo, 1 za senzor otiska prsta, 2 za skener RFID kartice i 2 za ekran. Džojstiku nije potrebna biblioteka. Šta je biblioteka? To je u osnovi datoteka koja sadrži mnogo koda koji možete koristiti u svom projektu jednostavnim naredbama. Da biste dobili ove biblioteke, morate otići na mjesto koje se zove GitHub. Ako znate kako preuzeti i raspakirati biblioteke, samo idite na donje veze za preuzimanje. Ako ne znate kako, možete otići do moje instrukcije koja govori o tome kako preuzeti biblioteku u koraku 3:

ili pretražite YouTube video o tome kako preuzeti arduino biblioteku s GitHub -a

LINKOVI DO LIRARIJA:

Servo

senzor otiska prsta:

spi

senzor kartice rfid

biblioteka ekrana 1

biblioteka ekrana 2

Korak 4: Postavljanje senzora otiska prsta i senzora za RFID karticu

Ovaj korak govori o tome kako postaviti senzor otiska prsta i senzor RFID kartice. Osim ako ste već koristili senzor otiska prsta, morat ćete mu pokazati kako izgleda vaš otisak prsta kako bi ga mogao spremiti u svoju memoriju. Čak i ako ste ga već koristili, ipak biste trebali napraviti ovaj korak. Ukratko ću vam reći kako to učiniti, ali ako to nema smisla, idite na istu poveznicu u zadnjem koraku. To odlično prolazi. Basic samo otvorite arduino ide. Idite na datoteku> primjeri> adafruit senzor otiska prsta> upišite se. Otpremite kôd na arduino, otvorite serijski monitor i slijedite korake koje vam kaže. Kad vam kaže da mu date broj. Upišite 1#.

Što se tiče RFID kartice, ovaj korak je prilično jednostavan. Otvorite arduino ide. Idite na datoteku> primjeri> mfrc522> pročitajte lične podatke. Otpremite na arduino i otvorite serijski monitor. Skenirajte karticu ili privjesak za ključeve koje želite koristiti koji ste dobili sa senzorom. Tada će vam dati neke informacije. Potražite ID kartice. To će biti 4 seta od 2 znamenke. Nešto ovako: AB 45 2Y 45, ali vaš kôd će biti drugačiji. Zapišite ovo na komad papira. Kasnije će vam trebati ponovo. To je to za ovaj korak.

Korak 5: KOD

Ovo će većini vas biti najteži korak, ali prilično je jednostavan. Prvo kopirajte i zalijepite kôd u arduino ide odozdo. Drugo, uredite 2 odjeljka u kojima piše EDIT CODE. 1 odjeljak je za skener kartica, 1 za joystick. Ovi koraci se ne mogu preskočiti. Kada završite, prenesite kôd na arduino!

#include #include Otisak prsta.h>

#include

#include

#include

#include

LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POZITIVNO);

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

void setup () {

servo.priključak (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

while (! Serijski);

SPI.begin ();

mfrc522. PCD_Init ();

kašnjenje (4);

mfrc522. PCD_DumpVersionToSerial ();

kašnjenje (100);

Serial.println ("\ n / n Test detekcije prsta od ploda");

finger.begin (57600);

kašnjenje (5);

if (finger.verifyPassword ()) {

Serial.println ("Svi sistemi rade",);

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Molimo skenirajte prst");

} else {

Serial.println ("GREŠKA: Senzor otiska prsta nije pronađen!");

lcd.setCursor (0, 0);

lcd.print ("GREŠKA: Otisak prsta");

lcd.setCursor (1, 1);

lcd.print ("senzor nije pronađen!");

while (1) {odgoda (1); }

}

finger.getTemplateCount ();

Serial.print ("Senzor sadrži"); Serial.print (finger.templateCount); Serial.println ("predlošci"); Serial.println ("Čekanje valjanog prsta …"); }

void (* resetFunc) (void) = 0;

void loop () {{100} {101}

getFingerprintIDez ();

kašnjenje (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

switch (p) {

slučaj FINGERPRINT_OK:

Serial.println ("Slika je snimljena");

break;

kućište FINGERPRINT_NOFINGER:

Serial.println ("Nije otkriven prst");

return p;

kućište FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Komunikacijska greška");

return p;

slučaj FINGERPRINT_IMAGEFAIL:

Serial.println ("Greška pri snimanju");

return p;

zadano:

Serial.println ("Nepoznata greška");

return p;

}

p = finger.image2Tz ();

switch (p) {

slučaj FINGERPRINT_OK:

Serial.println ("Slika je pretvorena");

break;

kućište FINGERPRINT_IMAGEMESS:

Serial.println ("Slika je previše neuredna");

return p;

kućište FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Komunikacijska greška");

return p;

kućište FINGERPRINT_FEATUREFAIL:

Serial.println ("Nije moguće pronaći funkcije otiska prsta");

return p;

slučaj FINGERPRINT_INVALIDIMAGE:

Serial.println ("Nije moguće pronaći funkcije otiska prsta");

return p;

zadano:

Serial.println ("Nepoznata greška");

return p;

}

p = finger.fingerFastSearch ();

if (p == FINGERPRINT_OK) {

Serial.println ("Pronađeno štampanje!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Greška u komunikaciji");

return p;

} inače ako (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Nije pronađeno podudaranje");

return p;

} else {

Serial.println ("Nepoznata greška");

return p;

}

Serial.print ("Pronađen ID #"); Serial.print (finger.fingerID);

Serial.print ("s povjerenjem"); Serial.println (finger.confidence);

return finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

if (p! = FINGERPRINT_OK) vraća -1;

p = finger.image2Tz ();

if (p! = FINGERPRINT_OK) vraća -1;

p = finger.fingerFastSearch ();

if (p! = FINGERPRINT_OK) vraća -1;

Serial.print ("Pronađen ID #"); Serial.print (finger.fingerID);

Serial.print ("s povjerenjem"); Serial.println (finger.confidence);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Prst prihvaćen,");

lcd.setCursor (2, 0);

lcd.print ("sada skeniraj karticu …");

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== UREDI KOD ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Uzmite taj komad papira s ID -om, bilo je 4 seta od 2 znamenke

mfrc522.uid.uidByte [2] == 0x90 && // Pogledajte prema kodu, pogledajte gdje piše 0x92, 0xAB, 0x90, 0x1c? Unesite svaki

mfrc522.uid.uidByte [3] == 0x1C) {// dvocifrenog odjeljka iza 0x. Na primjer, dio ID -a kaže

lcd.clear (); // 3E, zatim unesite 3E nakon 0x da biste napravili 0x3E. Učinite to za svaki odjeljak

lcd.setCursor (3, 0);

lcd.print ("Konačno, unesite");

lcd.setCursor (1, 1);

lcd.print ("lozinka džojstika");

dok je (analogRead (A2)> = 100 &&

analogno čitanje (A2) <= 670 &&

analogno čitanje (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;

}

kašnjenje (500);

dok je (analogRead (A2)> = 100 &&

analogno čitanje (A2) <= 670 &&

analogno čitanje (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;

}

kašnjenje (500);

dok je (analogRead (A2)> = 100 &&

analogno čitanje (A2) <= 670 &&

analogno čitanje (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;

}

kašnjenje (500);

dok je (analogRead (A2)> = 10 &&

analogno čitanje (A2) <= 670 &&

analogno čitanje (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;

}

kašnjenje (500);

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

lcd.clear (); // Ovaj odjeljak je mjesto gdje možete promijeniti lozinku pomoću joystick -a

lcd.setCursor (2, 0); // lozinka je postavljena na lijevo, gore lijevo, desno. Ako želite promijeniti

lcd.print ("Pristup odobren!"); // to, stavite L za lijevo, R za desno, U za gore ili D za dolje u bilo kojem od

lcd.setCursor (2, 1); // 4 odjeljka sa slovom iza znakova ==.

lcd.print ("Ladica otključana.");

lcd.setCursor (2, 2);

lcd.print ("Kada završite, premjestite");

lcd.setCursor (1, 3);

lcd.print ("džojstik za ponovno učitavanje");

servo.write (90);

dok je (analogRead (A2)> = 100 &&

analogno čitanje (A2) <= 670 &&

analogno čitanje (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Ladica zaključana");

kašnjenje (3000);

resetFunc ();

} else {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("PRISTUP ODBIJEN !!!");

lcd.setCursor (0, 2);

lcd.print ("Ponovno pokretanje sistema …");

kašnjenje (3000);

resetFunc ();

}

} else {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("PRISTUP ODBIJEN !!!");

lcd.setCursor (0, 2);

lcd.print ("Ponovno pokretanje sistema …");

kašnjenje (3000);

resetFunc ();

}

} else {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("PRISTUP ODBIJEN !!!");

lcd.setCursor (0, 2);

lcd.print ("Ponovno pokretanje sistema …");

kašnjenje (3000);

resetFunc ();

}

return finger.fingerID; }

Korak 6: Završite

Jedna stvar koju sam vam zaboravio reći, pa dvije stvari je da sam ovo napravio prije nego što sam slikao, pa vam nisam mogao pokazati kako sam napravio kutiju. Drugi je da se preporučuje pričvrstiti servo dio na dio koji se okreće. Ako to ne učinite, netko bi mogao povući ladicu dok je zaključana i izvući komad. Ali prije nego što ga zašrafite, pronađite pravo mjesto na koje ćete ga staviti jer se servo okreće u određenom stupnju. Ili ga možete jednostavno promijeniti u kodu. Ako se neka elektronika ponaša smiješno, možda ćete htjeti pronaći drugačiji način za dobivanje 5V za neke od njih. Primetio sam kada mi je skener otiska prsta zatreptao, ekran bi blago trepnuo sa njim, a servo bi stvarao buku. Kad bi se servo pomaknuo, ekran bi se zamračio. Nadam se da ste uživali u projektu! Ako imate pitanja, ostavite ih u komentarima. Nisam puno na instrukcijama, ali odgovorit ću na njih čim mogu!

Preporučuje se: