İçindekiler:

Arduino High Tech Safe: 6 Adım
Arduino High Tech Safe: 6 Adım

Video: Arduino High Tech Safe: 6 Adım

Video: Arduino High Tech Safe: 6 Adım
Video: Arduino project how to make a laser electronic alarm, an amazing invention DIY 2024, Temmuz
Anonim
Arduino Yüksek Teknoloji Kasası
Arduino Yüksek Teknoloji Kasası

Bu benim arduino yüksek teknoloji kasam. Parmağınızı taramanız, kartınızı taramanız ve ardından çekmecenin kilidini açmak için 4 haneli bir şifre girmeniz gerekir. Bu proje çok gelişmiş olduğu için yeni başlayanlar için önerilmez. Kod uzun ama bu projede paylaşacağım. Benimle aynı kasayı yaparsan maliyeti yaklaşık 75 dolar. Bu projenin tamamlanması da 1-3 gün sürebilir. Öyleyse başlayalım!

Gereçler

Benimkiyle aynı kasayı inşa etmek için ihtiyacınız olacak:

Arduino (Uno önerilir çünkü arduino mega veya nano için adımlarım yoktur. Ama yine de kullanabilirsiniz)

ekmek tahtası

servo

atlama telleri

oyun kolu

20*4 (16*4 kullanabilirsiniz ancak kodu değiştirmeniz gerekecektir)

parmak izi tarayıcısı

mfrc522 rfid kart tarayıcı

bir kova lego

Adım 1: Bir Kutu Oluşturma

Kutu Oluşturma
Kutu Oluşturma

Öncelikle elektronik eşyalarınızı koymak için bir kutuya ihtiyacınız olacak. Legolar, 3 boyutlu baskılı kutular ve hatta karton kullanabilirsiniz! (Bu daha zor olabilir) Çekmece ve elektronik eşyalarınız için delik açmayı unutmayın. Eğer rfid kart tarayıcı kullanıyorsanız duvarlarınız ince ise bunun için delik açmanıza gerek yoktur. Kartlar hala çalışıyor, ancak rfid kart senorunun okuyabilmesi için anahtarlıkları kapatmanız gerekiyor. Ayrıca arduino'nuz ve kablolarınız için de yer bırakın. NOT: Çekmeceyi oluşturduğunuzda, servonuzun çekmeceyi döndürüp kilitleyebilmesi için içinde bir delik bırakın.

Adım 2: Kablolama

Kablolama!
Kablolama!

Bu adım karmaşık olabilir, çünkü kabloları tam yerine takmanız gerekir, aksi takdirde elektronikler çalışmaz. Elimde bir bağlantı şeması yok ama her birinin gideceğini söyleyeceğim. Kablolama sadece arduino uno içindir. Bir arduino mega veya nano kullanıyorsanız, kabloları koymak için aramanız gerekecek. Sahip olduğum tüm elektronikleri kullanmıyorsanız, bu kablolamayı atlayabilirsiniz.

Parmak izi tarayıcı: yeşil kablo: D2 beyaz kablo: D3 siyah kablo: GND kırmızı kablo: 5V

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

rfid kart tarayıcı: 3.3V = 3.3V ilk = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

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

Servo: kırmızı kablo: 5V Kahverengi kablo: GND sarı kablo: D6

NOT: RFID KART TARAYICIYI 5V'A TAKMAYIN. YAPARSAN KIRACAK !!!

Yan tarafta 5V yazıyorken neden joystick gücünü 3.3V'a tak dediğimi merak ediyor olabilirsiniz. Bunun nedeni, servo, ekran ve parmak izi tarayıcısının 5V'a ihtiyaç duymasıdır. Buna joystick'i eklerseniz, her şeyin 5V'a ihtiyacı olduğu için elektronikler çalışmayabilir. Joystick 3.3V ile çalışmaya devam edecektir. Bu sadece maksimum değer 1023 olmayacak, ~ 670 olacak.

3. Adım: Kitaplıkları İndirme

Bu projede tüm elektronikleri kullanmak için 6 kütüphaneye ihtiyacınız olacak. Servo için 1, parmak izi sensörü için 1, rfid kart tarayıcı için 2 ve ekran için 2. Joystick'in bir kitaplığa ihtiyacı yoktur. Şimdi, kütüphane nedir? Temelde basit komutlarla projenizde kullanabileceğiniz çok sayıda kod içeren bir dosyadır. Bu kütüphaneleri almak için GitHub adlı bir yere gitmeniz gerekiyor. Kitaplıkları nasıl indirip açacağınızı biliyorsanız, indirmeler için aşağıdaki bağlantılara gitmeniz yeterlidir. Nasıl yapılacağını bilmiyorsanız, 3. adımda bir kitaplığın nasıl indirileceğinden bahseden talimatıma gidebilirsiniz:

veya GitHub'dan bir arduino kitaplığının nasıl indirileceğine dair bir youtube videosu arayın

LİRARİLER İÇİN LİNKLER:

Servo

parmak izi sensörü:

spi

rfid kart sensörü

ekran kitaplığı 1

ekran kitaplığı 2

Adım 4: Parmak İzi Sensörü ve Rfid Kart Sensörünü Ayarlama

Bu adım, parmak izi sensörünün ve rfid kart sensörünün nasıl kurulacağından bahseder. Parmak izi sensörünüzü daha önce kullanmadıysanız, hafızasına kaydedebilmesi için parmak izinizin nasıl göründüğünü göstermeniz gerekecektir. Daha önce kullanmış olsanız bile, muhtemelen bu adımı yapmalısınız. Size kısaca nasıl yapacağınızı anlatacağım, ancak mantıklı gelmiyorsa, son adımda aynı öğretilebilir bağlantıya gidin. Üzerinden çok iyi geçer. Temel sadece arduino ide'yi açın. Dosya > örnekler > adafruit parmak izi sensörü > kaydol'a gidin. Kodu arduino'ya yükleyin, seri monitörü açın ve size söylediği adımları izleyin. Bir numara vermenizi söylediğinde. 1# yazın.

Şimdi rfid kartı için bu adım oldukça kolaydır. Arduino ide'yi açın. Dosyaya gidin > örnekler > mfrc522 > kişisel verileri okuyun. Arduino'ya yükleyin ve seri monitörü açın. Sensörünüzle birlikte gelen kullanmak istediğiniz kartı veya anahtarlığı tarayın. O zaman size bazı bilgiler verecektir. Kartın kimliğini arayın, 4 set 2 hane olacaktır. Bunun gibi bir şey: AB 45 2Y 45 ama kodunuz farklı olacak. Bunu bir kağıda yazın. Daha sonra tekrar ihtiyacınız olacak. Bu adım için bu kadar.

Adım 5: KOD

Çoğunuz için bu en zor adım olacak, ancak oldukça basit. Önce kodu kopyalayıp aşağıdan arduino ide'ye yapıştırın. İkinci olarak, DÜZENLEME KODU yazan 2 bölümü düzenleyin. 1 bölüm kart tarayıcı, 1 bölüm joystick içindir. Bu adımlar atlanamaz. Bittiğinde, arduino'ya kod yükleyin!

#include #include Fingerprint.h>

#Dahil etmek

#Dahil etmek

#Dahil etmek

#Dahil etmek

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POZİTİF);

#define RST_PIN 9

#define SS_PIN 10

MFRC522 mfrc522(SS_PIN, RST_PIN);

YazılımSerial mySerial(2, 3);

Adafruit_Fingerprint parmak = Adafruit_Fingerprint(&mySerial);

Servo servo;

karakter d1;

karakter d2;

karakter d3;

karakter d4;

geçersiz kurulum(){

servo.attach(6);

servo.write(170);

lcd.başla(20, 4);

Seri.başla(9600);

while (!Seri);

SPI.begin();

mfrc522. PCD_Init();

gecikme(4);

mfrc522. PCD_DumpVersionToSerial();

gecikme(100);

Serial.println("\n\nAdafruit parmak algılama testi");

parmak.başla(57600);

gecikme(5);

if (finger.verifyPassword()) {

Serial.println("Tüm sistemler çalışıyor, ");

lcd.clear();

lcd.setCursor(1, 0);

lcd.print("Lütfen parmağınızı tarayın");

} Başka {

Serial.println("HATA: Parmak izi sensörü bulunamadı!");

lcd.setCursor(0, 0);

lcd.print("HATA: Parmak izi");

lcd.setCursor(1, 1);

lcd.print("sensör bulunamadı!");

while (1) {gecikme(1); }

}

parmak.getTemplateCount();

Serial.print("Sensör içeriği"); Seri.print(parmak.templateCount); Serial.println("şablonlar"); Serial.println("Geçerli parmak bekleniyor…"); }

void(* resetFunc) (void) = 0;

boşluk döngüsü () {

getFingerprintIDez();

gecikme(50);

}

uint8_t getFingerprintID() {

uint8_t p = parmak.getImage();

geçiş (p) {

durum PARMAK İZİ_OK:

Serial.println("Görüntü alındı");

kırmak;

durum PARMAK İZİ_NOFINGER:

Serial.println("Parmak algılanmadı");

dönüş p;

durum FINGERPRINT_PACKETRECIEVEERR:

Serial.println("İletişim hatası");

dönüş p;

durum PARMAK İZİ_GÖRÜNTÜ BAŞARISIZ:

Serial.println("Görüntüleme hatası");

dönüş p;

varsayılan:

Serial.println("Bilinmeyen hata");

dönüş p;

}

p = parmak.image2Tz();

geçiş (p) {

durum PARMAK İZİ_OK:

Serial.println("Görüntü dönüştürüldü");

kırmak;

durum PARMAK İZİ_IMAGEMESS:

Serial.println("Görüntü çok dağınık");

dönüş p;

durum FINGERPRINT_PACKETRECIEVEERR:

Serial.println("İletişim hatası");

dönüş p;

durum FINGERPRINT_FEATUREFAIL:

Serial.println("Parmak izi özellikleri bulunamadı");

dönüş p;

vaka PARMAK İZİ_INVALIDIMAGE:

Serial.println("Parmak izi özellikleri bulunamadı");

dönüş p;

varsayılan:

Serial.println("Bilinmeyen hata");

dönüş p;

}

p = parmak.fingerFastSearch();

if (p == PARMAK İZİ_OK) {

Serial.println("Baskı eşleşmesi bulundu!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("İletişim hatası");

dönüş p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println("Bir eşleşme bulunamadı");

dönüş p;

} Başka {

Serial.println("Bilinmeyen hata");

dönüş p;

}

Serial.print("Bulunan Kimlik #"); Seri.print(parmak.parmakID);

Serial.print(" güvenle "); Serial.println(parmak.güven);

geri parmak.fingerID;

}

int getFingerprintIDez() {

uint8_t p = parmak.getImage();

if (p != PARMAK İZİ_OK) -1 döndürür;

p = parmak.image2Tz();

if (p != PARMAK İZİ_OK) -1 döndürür;

p = parmak.fingerFastSearch();

if (p != PARMAK İZİ_OK) -1 döndürür;

Serial.print("Bulunan Kimlik #"); Seri.print(parmak.parmakID);

Serial.print(" güvenle "); Seri.println(parmak.güven);

if(finger.fingerID == 1){

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("Parmak kabul edildi,");

lcd.setCursor(2, 0);

lcd.print("şimdi kartı tarayın…");

lcd.setCursor(0, 3);

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

while(!mfrc522. PICC_IsNewCardPresent());

while(!mfrc522. PICC_ReadCardSerial());

if (mfrc522.uid.uidByte[0] == 0x92 && //======================= DÜZENLEME KODU======== ==============

mfrc522.uid.uidByte[1] == 0xAB && //Üzerinde kimlik yazan kağıdı alın, 2 basamaklı 4 takım vardı

mfrc522.uid.uidByte[2] == 0x90 && //Koda bakın, nerede 0x92, 0xAB, 0x90, 0x1c yazdığına bakın? Her birini girin

mfrc522.uid.uidByte[3] == 0x1C) { //0x'ten sonraki 2 basamaklı bölümün. Örneğin, kimliğin bölümünde şöyle diyor:

lcd.clear(); ///3E, ardından 0x3E yapmak için 0x'ten sonra 3E'yi girin. Bunu her bölüm için yapın

lcd.setCursor(3, 0);

lcd.print("Son olarak giriniz");

lcd.setCursor(1, 1);

lcd.print("joystick şifresi");

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;

}

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

}

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

}

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

}

gecikme(500);

if(d1 == L && d2 == U && d3 == L && d4 == R){ //================DÜZENLEME KODU====== ================

lcd.clear(); //Bu bölümde joystick ile şifrenizi düzenleyebilirsiniz.

lcd.setCursor(2, 0); //parola sola, yukarı sola, sağa ayarlanır. değiştirmek istersen

lcd.print("Erişim verildi!"); //it, herhangi birinde sol için L, sağ için R, yukarı için U veya aşağı için D koyun

lcd.setCursor(2, 1); // == işaretlerinden sonra bir harf içeren bölümler.

lcd.print("Çekmece kilidi açıldı.");

lcd.setCursor(2, 2);

lcd.print("İşiniz bittiğinde taşıyın");

lcd.setCursor(1, 3);

lcd.print("yeniden kilitlemek için joystick");

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("Çekmece kilitli");

gecikme(3000);

resetFunc();

}Başka{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("ERİŞİM REDDİ!!!");

lcd.setCursor(0, 2);

lcd.print("Sistemi yeniden başlatıyorum…");

gecikme(3000);

resetFunc();

}

}Başka{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("ERİŞİM REDDİ!!!");

lcd.setCursor(0, 2);

lcd.print("Sistemi yeniden başlatıyorum…");

gecikme(3000);

resetFunc();

}

}Başka{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("ERİŞİM REDDİ!!!");

lcd.setCursor(0, 2);

lcd.print("Sistemi yeniden başlatıyorum…");

gecikme(3000);

resetFunc();

}

geri parmak.fingerID; }

Adım 6: Bitir

Size söylemeyi unuttuğum bir şey var, 2 şey, bunu fotoğraf çekmeden önce yaptım, bu yüzden kutuyu nasıl yaptığımı gösteremedim. Diğeri ise servo parçanın dönen parçaya vidalanması tavsiye edilir. Aksi takdirde, çekmece kilitliyken birisi çekmeceyi çekip parçayı çekebilir. Ama vidalamadan önce, servo belli bir dereceye kadar döndüğü için takacağınız doğru yeri bulun. Ya da sadece kodda değiştirebilirsiniz. Elektroniklerin bazıları komik davranıyorsa, bazıları için 5V elde etmenin farklı bir yolunu bulmak isteyebilirsiniz. Parmak izi tarayıcımın yanıp söndüğünü fark ettim, ekran onunla birlikte hafifçe yanıp sönecek ve servo gürültü yapacaktı. Servo hareket ettiğinde ekran kararırdı. Umarım projeden hoşlanmışsınızdır! Herhangi bir sorunuz varsa, bunları yorumlarda bırakın. Çok fazla talimat vermiyorum, ancak mümkün olan en kısa sürede onlara cevap vereceğim!

Önerilen: