İçindekiler:
- Gereçler
- Adım 1: Bir Kutu Oluşturma
- Adım 2: Kablolama
- 3. Adım: Kitaplıkları İndirme
- Adım 4: Parmak İzi Sensörü ve Rfid Kart Sensörünü Ayarlama
- Adım 5: KOD
- Adım 6: Bitir
Video: Arduino High Tech Safe: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
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
Ö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
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:
Corona Safe: Otomatik Su Tasarruflu Musluk: 6 Adım
Corona Safe: Otomatik Su Tasarruflu Musluk: Corona virüsüne özel virüs ve bakterilerden kurtulmak için hepimizin ara sıra ellerimizi yıkaması gerekiyor, ondan tamamen kurtulmak için ise 20 saniye boyunca ellerimizi yıkamamız gerekiyor. Ayrıca sabunluk veya musluk düğmesi hijyenik veya temiz olmayabilir
IPad Stylus İpucu - (Bir Jet Tornada Küçük Parçalar Nasıl Dönülür), Bunu Tech Shop'ta Yaptım!: 7 Adım
IPad Stylus Tip - (Bir Jet Tornada Küçük Parçalar Nasıl Dönülür), Bunu Tech Shop'ta Yaptım!: Stylus kauçuk uçlarını tutmak için bu pirinç ucu yapın! Bu, kendi kapasitif kaleminizi yapmanın en zor kısmı! Geliştirdiğim basınca duyarlı kalemim için kauçuk ucu tutmak için pirinç bir uca ihtiyacım vardı. Bu talimat size benim
B-Safe, Taşınabilir Kasa: 8 Adım (Resimlerle)
B-Safe, Taşınabilir Kasa: *** 4 Eylül 2019: Kutunun kendisinin yeni bir 3D dosyasını yükledim. Kilidim iyi bir kapanış için 10 mm fazla yüksek gibi görünüyordu ***Sorun Şunu hayal edin: Bir sabah uyanıyorsunuz ve hava gerçekten güzel. Sahile gitmek istiyorsun.Çünkü
Arduino 101: Tech Guy'dan Kurs: 4 Adım
Arduino 101: Tech Guy'dan Kurs: Umarım, Arduino dünyasına dalmak isteyen birçok insan, özellikle yeni başlayanlar, bunu ve diğer makalelerimi/Öğretim Tablolarımı (düzenli olarak yayınlayacağım) faydalı bulacaktır. .Bu normal bir Kopyala-&-Yapıştır dersleri gibi olmaz. Bilişim Teknoloji
Arduino Tabanlı Dijital SAFE KUTU: 10 Adım
Arduino Tabanlı Dijital GÜVENLİ KUTU: Hey millet! Güvenle saklamak istediğiniz bir şey var mı? İstenmeyen davetsiz misafirlerden ve mahremiyet istilacılarından uzak tutulması gereken bir şey mi? Peki, senin problemin için bir çözümüm var! İşte Arduino tabanlı bir kilitli kasa