Mündəricat:

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

Video: Arduino High Tech Safe: 6 addım

Video: Arduino High Tech Safe: 6 addım
Video: Amazing arduino project 2024, Noyabr
Anonim
Arduino Yüksək Texnologiyalı Təhlükəsiz
Arduino Yüksək Texnologiyalı Təhlükəsiz

Bu mənim arduino yüksək texnologiyalı seyfimdir. Barmağınızı taramalı, kartınızı taramalı və sonra çekmecenin kilidini açmaq üçün 4 rəqəmli parol daxil etməlisiniz. Bu layihə çox inkişaf etmiş olduğu üçün yeni başlayanlar üçün tövsiyə edilmir. Kod uzundur, amma bu layihədə paylaşacam. Mənimlə eyni seyfi tiksəniz, dəyəri 75 dollar civarındadır. Bu layihənin tamamlanması da 1-3 gün çəkə bilər. Beləliklə, başlayaq!

Təchizat

Mənimki ilə eyni seyfi hazırlamaq üçün sizə lazım olacaq:

Arduino (Arduino mega və ya nano üçün addımlarım olmadığı üçün Uno tövsiyə olunur. Ancaq yenə də istifadə edə bilərsiniz)

çörək taxtası

servo

tullanan tellər

joystick

20*4 (16*4 istifadə edə bilərsiniz, ancaq kodu dəyişdirməlisiniz)

barmaq izi skaneri

mfrc522 rfid kart skaneri

bir kova legos

Addım 1: bir qutu qurmaq

Bir qutu qurmaq
Bir qutu qurmaq

Əvvəlcə elektronikanı qoymaq üçün bir qutuya ehtiyacınız olacaq. Legos, 3d çap qutusu və ya hətta kartondan istifadə edə bilərsiniz! (Bu daha çətin olsa da) Bir çekmece və elektronikanız üçün dəlik açmağı unutmayın. RFID kart skanerindən istifadə edirsinizsə, divarlarınız incədirsə bunun üçün bir deşik açmağa ehtiyac yoxdur. Kartlar hələ də işləyir, ancaq rfid kart senorunun oxuya bilməsi üçün açarlıqları bağlamalısınız. İçərisində arduino və tellər üçün də yer buraxın. DİQQƏT: Çekmece qurarkən, içərisində bir deşik buraxın ki, servo çəkməyinizi döndərib kilidləyə bilsin.

Addım 2: Bağlantı qurun

Bağlama!
Bağlama!

Bu addımı çətinləşdirə bilərsiniz, çünki telləri dəqiq yerə bağlamalısınız, yoxsa elektronika işləməyəcək. Bir əlaqə diaqramım yoxdur, amma hər birinin gedəcəyini söyləyəcəyəm. Kablolama yalnız arduino uno üçündür. Bir arduino mega və ya nano istifadə edirsinizsə, telləri qoymaq üçün axtarmalı olacaqsınız. Əlimdəki bütün elektron cihazlardan istifadə etmirsinizsə, sadəcə bu naqilləri atlaya bilərsiniz.

Barmaq izi skaneri: yaşıl tel: D2 ağ tel: D3 qara tel: GND qırmızı tel: 5V

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

rfid kart skaneri: 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: qırmızı tel: 5V Qəhvəyi tel: GND sarı tel: D6

DİQQƏT: RFID KART SKANERİNİ 5V -a QOŞMAYIN. Əgər belə etsən, qırılacaq !!!

Yan tərəfdə 5V yazanda niyə joystickin gücünü 3.3V -a bağlamağı dediyimi maraqlandıra bilərsiniz. Bunun səbəbi servo, ekran və barmaq izi skanerinin 5V -ə ehtiyacı var. Joystick əlavə etsəniz, elektronika işləməyə bilər, çünki hər şey 5V -ə ehtiyac duyur. Joystick hələ də 3.3V ilə işləyəcək. Sadəcə maksimum dəyər 1023 olmayacaq, ~ 670 olacaq.

Addım 3: Kitabxanaların yüklənməsi

Bu layihədə bütün elektronikadan istifadə etmək üçün 6 kitabxanaya ehtiyacınız olacaq. 1 servo üçün, 1 barmaq izi sensoru üçün, 2 rfid kart skaneri üçün və 2 ekran üçün. Joystickin kitabxanaya ehtiyacı yoxdur. İndi kitabxana nədir? Əsasən, layihənizdə sadə əmrlərlə istifadə edə biləcəyiniz çoxlu kod saxlayan bir sənəddir. Bu kitabxanaları əldə etmək üçün GitHub adlı bir yerə getməlisiniz. Kitabxanaların necə yüklənəcəyini və açılacağını bilirsinizsə, yükləmələr üçün aşağıdakı linklərə daxil olun. Necə olduğunu bilmirsinizsə, 3-cü addımda kitabxananın necə yüklənəcəyindən bəhs edən təlimatçılığa gedə bilərsiniz:

və ya GitHub -dan bir arduino kitabxanasını necə yükləmək barədə youtube video axtarın

LİRİMLƏRƏ BAĞLANTILAR:

Servo

barmaq izi sensoru:

spi

rfid kart sensoru

ekran kitabxanası 1

ekran kitabxanası 2

Addım 4: Barmaq izi sensoru və Rfid kart sensoru qurmaq

Bu addım barmaq izi sensoru və rfid kart sensorunun necə qurulacağından bəhs edir. Barmaq izi sensorunuzu hələ istifadə etməmisinizsə, yaddaşınızda saxlaya bilmək üçün barmaq izinizin necə göründüyünü göstərməlisiniz. Daha əvvəl istifadə etsəniz də, yəqin ki, bu addımı atmalısınız. Bunu necə edəcəyimi sizə qısaca söyləyəcəyəm, amma məntiqli deyilsə, son addımda eyni təlimat verən linkə keçin. Bunun üzərindən çox yaxşı keçir. Əsas yalnız açıq arduino ide. Fayl> nümunələr> adafruit barmaq izi sensoru> qeydiyyatdan keçin. Arduinoya kod yükləyin, serial monitoru açın və sizə söylədiyi addımları izləyin. Sənə bir nömrə ver dedikdə. 1#yazın.

İndi rfid kartı üçün bu addım olduqca asandır. Arduino ide açın. Fayl> nümunələr> mfrc522> şəxsi məlumatları oxuyun. Arduino -ya yükləyin və serial monitoru açın. Sensorunuzla birlikdə istifadə etmək istədiyiniz kartı və ya anahtarlığı tarayın. Sonra sizə bir az məlumat verəcək. Kartın şəxsiyyətini axtarın, 2 rəqəmdən ibarət 4 dəst olacaq. Bənzər bir şey: AB 45 2Y 45 amma kodunuz fərqli olacaq. Bunu bir kağıza yazın. Daha sonra yenidən ehtiyacınız olacaq. Bu addım üçün budur.

Addım 5: KOD

Bu çoxunuz üçün ən çətin addım olacaq, amma olduqca sadədir. Əvvəlcə kodu kopyalayın və aşağıdan arduino ide -ə yapışdırın. İkincisi, EDIT CODE yazdığı 2 bölməni düzəldin. 1 bölmə kart skaneri, 1 bölməsi joystick üçündür. Bu addımlar atlana bilməz. Bitirdikdən sonra kodu arduinoya yükləyin!

#daxil edin #barmaq izi daxil edin.h>

#daxil edin

#daxil edin

#daxil edin

#daxil edin

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

#RST_PIN 9 təyin edin

#SS_PIN 10 təyin edin

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint barmaq = Adafruit_Fingerprint (& mySerial);

Servo servo;

char d1;

char d2;

char d3;

char d4;

boş quraşdırma () {

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

while (! Serial);

SPI.begin ();

mfrc522. PCD_Init ();

gecikmə (4);

mfrc522. PCD_DumpVersionToSerial ();

gecikmə (100);

Serial.println ("\ n / nAdafruit barmaq aşkarlama testi");

barmaq.başla (57600);

gecikmə (5);

if (finger.verifyPassword ()) {

Serial.println ("Bütün sistemlər işləyir");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Zəhmət olmasa barmağınızı tarayın");

} başqa {

Serial.println ("ERROR: Parmak izi sensoru tapılmadı!");

lcd.setCursor (0, 0);

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

lcd.setCursor (1, 1);

lcd.print ("sensor tapılmadı!");

isə (1) {gecikmə (1); }

}

finger.getTemplateCount ();

Serial.print ("Sensor ehtiva edir"); Serial.print (finger.templateCount); Serial.println ("şablonlar"); Serial.println ("Düzgün barmaq gözləyirik …"); }

void (* resetFunc) (void) = 0;

boşluq döngəsi () {

getFingerprintIDez ();

gecikmə (50);

}

uint8_t getFingerprintID () {

uint8_t p = barmaq.getImage ();

keçid (p) {

hal FINGERPRINT_OK:

Serial.println ("Şəkil çəkildi");

fasilə;

FINGERPRINT_NOFINGER qutusu:

Serial.println ("Barmaq aşkarlanmadı");

qayıt p;

hal FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Ünsiyyət xətası");

qayıt p;

hal FINGERPRINT_IMAGEFAIL:

Serial.println ("Təsvir xətası");

qayıt p;

defolt:

Serial.println ("Naməlum səhv");

qayıt p;

}

p = barmaq.image2Tz ();

keçid (p) {

hal FINGERPRINT_OK:

Serial.println ("Şəkil çevrildi");

fasilə;

hal FINGERPRINT_IMAGEMESS:

Serial.println ("Şəkil çox qarışıq");

qayıt p;

hal FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Ünsiyyət xətası");

qayıt p;

hal FINGERPRINT_FEATUREFAIL:

Serial.println ("Barmaq izi xüsusiyyətləri tapılmadı");

qayıt p;

hal FINGERPRINT_INVALIDIMAGE:

Serial.println ("Barmaq izi xüsusiyyətləri tapılmadı");

qayıt p;

defolt:

Serial.println ("Naməlum səhv");

qayıt p;

}

p = barmaq.fingerFastSearch ();

əgər (p == FINGERPRINT_OK) {

Serial.println ("Çap uyğunluğu tapıldı!");

} başqa if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Ünsiyyət xətası");

qayıt p;

} başqa əgər (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Bir uyğunluq tapmadım");

qayıt p;

} başqa {

Serial.println ("Naməlum səhv");

qayıt p;

}

Serial.print ("ID nömrəsi tapıldı"); Serial izi (barmaq.barmaq ID);

Serial.print ("inamla"); Serial.println (barmaq güvən);

qayıt barmaq.fingerID;

}

int getFingerprintIDez () {

uint8_t p = barmaq.getImage ();

əgər (p! = FINGERPRINT_OK) qaytar -1;

p = barmaq.image2Tz ();

əgər (p! = FINGERPRINT_OK) qaytar -1;

p = barmaq.fingerFastSearch ();

əgər (p! = FINGERPRINT_OK) qaytar -1;

Serial.print ("ID nömrəsi tapıldı"); Serial izi (barmaq.barmaq ID);

Serial.print ("inamla"); Serial.println (barmaq güvən);

əgər (barmaq.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Barmaq qəbul edildi");

lcd.setCursor (2, 0);

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

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

isə (! mfrc522. PICC_ReadCardSerial ());

əgər (mfrc522.uid.uidByte [0] == 0x92 && // ====================== KODU DÜZƏN ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // ID -si olan o kağız parçasını götürün, 2 rəqəmdən ibarət 4 dəst var idi

mfrc522.uid.uidByte [2] == 0x90 && // Kodla baxın, görün 0x92, 0xAB, 0x90, 0x1c? Hər birini daxil edin

mxrc522.uid.uidByte [3] == 0x1C) {// 0xdan sonra 2 rəqəmli bölmənin. Məsələn, şəxsiyyət vəsiqəsinin bölməsində deyilir

lcd.clear (); // 3E, sonra 0x3E etmək üçün 0xdan sonra 3E daxil edin. Bunu hər bölmə üçün edin

lcd.setCursor (3, 0);

lcd.print ("Nəhayət, daxil edin");

lcd.setCursor (1, 1);

lcd.print ("joystick parol");

while (analogRead (A2)> = 100 &&

analogOxu (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogOxu (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); əgər (analogRead (A2) <= 100) {

d1 = L;

}

əgər (analogRead (A2)> = 670) {

d1 = R;

}

əgər (analogRead (A3) <= 100) {

d1 = U;

}

əgər (analogRead (A3)> = 670) {

d1 = D;

}

gecikmə (500);

while (analogRead (A2)> = 100 &&

analogOxu (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogOxu (A3) <= 670) {

}

lcd.print ("*");

əgər (analogRead (A2) <= 100) {

d2 = L;

}

əgər (analogRead (A2)> = 670) {

d2 = R;

}

əgər (analogRead (A3) <= 100) {

d2 = U;

}

əgər (analogRead (A3)> = 670) {

d2 = D;

}

gecikmə (500);

while (analogRead (A2)> = 100 &&

analogOxu (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogOxu (A3) <= 670) {

}

lcd.print ("*");

əgər (analogRead (A2) <= 100) {

d3 = L;

}

əgər (analogRead (A2)> = 670) {

d3 = R;

}

əgər (analogRead (A3) <= 100) {

d3 = U;

}

əgər (analogRead (A3)> = 670) {

d3 = D;

}

gecikmə (500);

while (analogRead (A2)> = 10 &&

analogOxu (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogOxu (A3) <= 670) {

}

lcd.print ("*");

əgər (analogRead (A2) <= 100) {

d4 = L;

}

əgər (analogRead (A2)> = 670) {

d4 = R;

}

əgər (analogRead (A3) <= 100) {

d4 = U;

}

əgər (analogRead (A3)> = 670) {

d4 = D;

}

gecikmə (500);

əgər (d1 == L && d2 == U && d3 == L && d4 == R) {// ================ KODU DÜZƏN ====== ================

lcd.clear (); // Bu bölmə, şifrəni joystick ilə düzəldə biləcəyiniz yerdir

lcd.setCursor (2, 0); // parol sola, yuxarıya, sağa təyin olunur. Dəyişmək istəyirsinizsə

lcd.print ("Giriş verildi!"); // hər hansı birində sola L, sağa R, yuxarıya U və ya aşağıya D qoyun

lcd.setCursor (2, 1); // == işarələrindən sonra hərfi olan 4 hissə.

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

lcd.setCursor (2, 2);

lcd.print ("Bitdikdə, hərəkət et");

lcd.setCursor (1, 3);

lcd.print ("yerini dəyişmək üçün joystick");

servo.write (90);

while (analogRead (A2)> = 100 &&

analogOxu (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Çekmece kilidli");

gecikmə (3000);

resetFunc ();

} başqa {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("GİRİŞ Rədd edildi!");

lcd.setCursor (0, 2);

lcd.print ("Sistemi yenidən başladın …");

gecikmə (3000);

resetFunc ();

}

} başqa {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("GİRİŞ Rədd edildi!");

lcd.setCursor (0, 2);

lcd.print ("Sistemi yenidən başladın …");

gecikmə (3000);

resetFunc ();

}

} başqa {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("GİRİŞ Rədd edildi!");

lcd.setCursor (0, 2);

lcd.print ("Sistemi yenidən başladın …");

gecikmə (3000);

resetFunc ();

}

qayıt barmaq.fingerID; }

Addım 6: Bitirin

Sənə deməyi unutduğum bir şey, yaxşı 2 şey, şəkil çəkməmişdən əvvəl tikdiyim üçün qutunu necə qurduğumu göstərə bilmədim. Digər tərəfdən, servo hissənin dönən hissəyə vidalanması tövsiyə olunur. Əks təqdirdə, kimsə çekmecəni kilidli halda çəkib parçanı çıxara bilər. Vida etməzdən əvvəl, servonun müəyyən dərəcədə çevrildiyi üçün hara qoyacağınız doğru yeri tapın. Yoxsa kodda dəyişdirə bilərsiniz. Bəzi elektronikalar gülməli davranırsa, bəziləri üçün 5V almaq üçün fərqli bir yol tapmaq istəyə bilərsiniz. Barmaq izi skanerim yanıb -sönəndə ekranın bir az yanıb -sönəcəyini və servonun səs -küy saldığını gördüm. Servo hərəkət edərkən ekran qaralacaqdı. Ümid edirəm layihədən zövq aldınız! Hər hansı bir sualınız varsa, şərhlərdə buraxın. Təlimat mövzusunda çox deyiləm, amma bacardığım qədər onlara cavab verəcəyəm!

Tövsiyə: