Isi kandungan:

Arduino High Tech Safe: 6 Langkah
Arduino High Tech Safe: 6 Langkah

Video: Arduino High Tech Safe: 6 Langkah

Video: Arduino High Tech Safe: 6 Langkah
Video: Amazing arduino project 2024, Julai
Anonim
Arduino High Tech Selamat
Arduino High Tech Selamat

Ini adalah peti keselamatan berteknologi tinggi arduino saya. Anda mesti mengimbas jari, mengimbas kad anda, kemudian memasukkan kata laluan 4 digit untuk membuka kunci laci. Projek ini tidak digalakkan untuk pemula kerana sangat maju. Kodnya panjang, tetapi saya akan kongsikan dalam projek ini. Kosnya sekitar $ 75 jika anda membina peti besi yang sama dengan saya. Projek ini juga memerlukan masa 1-3 hari untuk disiapkan. Oleh itu, mari bermula!

Bekalan

Untuk membina peti keselamatan yang sama dengan saya, anda memerlukan:

Arduino (Tidak disarankan kerana saya tidak mempunyai langkah untuk arduino mega atau nano. Tetapi anda masih boleh menggunakannya)

papan roti

servo

wayar pelompat

kayu bedik

20 * 4 (anda boleh menggunakan 16 * 4, tetapi anda harus menukar kodnya)

pengimbas cap jari

pengimbas kad mfrc522 rfid

baldi legos

Langkah 1: Membina Kotak

Membina Kotak
Membina Kotak

Mula-mula anda memerlukan kotak untuk memasukkan elektronik anda. Anda boleh menggunakan Lego, kotak bercetak 3d, atau kadbod! (Walaupun ini lebih sukar) Jangan lupa meletakkan lubang di dalam laci dan barang elektronik anda. Sekiranya anda menggunakan pengimbas kad rfid, anda tidak perlu meletakkan lubang jika dinding anda nipis. Kad masih berfungsi, tetapi anda harus meletakkan kunci kunci sehingga senor kad rfid dapat membacanya. Tinggalkan juga ruang untuk arduino dan kabel anda di dalamnya. CATATAN: Semasa anda membina laci, tinggalkan lubang di dalamnya supaya servo anda dapat menghidupkan dan mengunci laci.

Langkah 2: Pendawaian

Pendawaian!
Pendawaian!

Langkah ini boleh menjadi rumit kerana anda perlu memasang wayar di tempat yang tepat atau elektronik tidak berfungsi. Saya tidak mempunyai gambarajah pendawaian, tetapi saya akan memberitahu anda masing-masing akan pergi. Pendawaian hanya untuk arduino uno. Anda mesti mencari untuk memasang wayar jika anda menggunakan arduino mega atau nano. Sekiranya anda tidak menggunakan semua elektron yang saya ada, anda boleh melangkau pendawaian itu.

Pengimbas cap jari: wayar hijau: Kawat putih D2: Kawat hitam D3: Kawat merah GND: 5V

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

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

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

Servo: wayar merah: 5V Kawat coklat: Kawat kuning GND: D6

CATATAN: JANGAN MEMASANG RFID CARD SCANNER DALAM 5V. JIKA ANDA LAKUKAN, ITU AKAN BREAK !!!

Anda mungkin tertanya-tanya mengapa saya mengatakan untuk memasang kuasa joystick ke 3.3V apabila ia mengatakan 5V di sebelah. Ini kerana servo, skrin, dan pengimbas cap jari memerlukan 5V. Sekiranya anda menambahkan kayu bedik, elektronik mungkin tidak berfungsi kerana semuanya memerlukan 5V. Joystick akan tetap berfungsi dengan 3.3V. Ia hanya nilai maksimum tidak akan 1023, ia akan menjadi ~ 670.

Langkah 3: Memuat turun Perpustakaan

Dalam projek ini, anda memerlukan 6 perpustakaan untuk menggunakan semua elektronik. 1 untuk servo, 1 untuk sensor cap jari, 2 untuk pengimbas kad rfid, dan 2 untuk skrin. Joystick tidak memerlukan perpustakaan. Sekarang, apa itu perpustakaan? Ini pada dasarnya adalah fail yang menyimpan banyak kod yang boleh anda gunakan dalam projek anda dengan perintah mudah. Untuk mendapatkan perpustakaan ini, anda perlu pergi ke tempat yang dipanggil GitHub. Sekiranya anda tahu cara memuat turun dan membuka zip pustaka, pergi ke pautan di bawah untuk memuat turun. Sekiranya anda tidak tahu caranya, anda boleh pergi ke arahan saya yang membincangkan cara memuat turun perpustakaan pada langkah 3:

atau cari video youtube mengenai cara memuat turun pustaka arduino dari GitHub

HUBUNGAN KE LIRARI:

Servo

sensor cap jari:

spi

sensor kad rfid

perpustakaan skrin 1

perpustakaan skrin 2

Langkah 4: Menyiapkan Sensor Cap Jari dan Sensor Kad Rfid

Langkah ini membincangkan mengenai cara memasang sensor cap jari dan sensor kad rfid. Kecuali anda sudah menggunakan sensor cap jari anda, anda perlu menunjukkan seperti apa cap jari anda sehingga dapat menyimpannya dalam ingatannya. Walaupun anda telah menggunakannya sebelumnya, anda mungkin masih boleh melakukan langkah ini. Saya akan memberitahu anda bagaimana untuk melakukannya secara ringkas, tetapi jika tidak masuk akal, pergi ke pautan yang sama yang boleh diarahkan pada langkah terakhir. Ia mengatasinya dengan baik. Asas hanya buka idea arduino. Pergi ke fail> contoh> sensor cap jari adafruit> daftar. Muat naik kod ke arduino, buka monitor bersiri, dan ikuti langkah-langkah yang diberitahu kepada anda. Apabila ia memberitahu anda untuk memberikannya nombor. Taipkan 1 #.

Sekarang untuk kad rfid, langkah ini cukup mudah. Buka idea arduino. Pergi ke fail> contoh> mfrc522> baca data peribadi. Muat naik ke arduino dan buka monitor bersiri. Imbas kad atau rantai kunci yang anda mahu gunakan yang disertakan dengan sensor anda. Kemudian ia akan memberi anda beberapa maklumat. Cari ID kad itu akan menjadi 4 set 2 digit. Sesuatu seperti ini: AB 45 2Y 45 tetapi kod anda akan berbeza. Tuliskan ini pada sehelai kertas. Anda akan memerlukannya lagi kemudian. Itu sahaja untuk langkah ini.

Langkah 5: KOD

Ini akan menjadi langkah paling sukar bagi kebanyakan anda, tetapi cukup mudah. Pertama salin dan tampal kod ke dalam idea arduino dari bawah. Kedua, edit 2 bahagian yang mengatakan EDIT KOD. 1 bahagian untuk pengimbas kad, 1 bahagian untuk kayu bedik. Langkah-langkah ini tidak boleh dilangkau. Setelah selesai, muat naik kod ke arduino!

#include #include Fingerprint.h>

#sertakan

#sertakan

#sertakan

#sertakan

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIF);

#tentukan RST_PIN 9

#tentukan SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint jari = Adafruit_Fingerprint (& mySerial);

Servo servo;

char d1;

char d2;

char d3;

char d4;

batal persediaan () {

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

sementara (! bersiri);

SPI.begin ();

mfrc522. PCD_Init ();

kelewatan (4);

mfrc522. PCD_DumpVersionToSerial ();

kelewatan (100);

Serial.println ("\ n / nMenguji ujian mengesan jari");

jari.begin (57600);

kelewatan (5);

jika (finger.verifyPassword ()) {

Serial.println ("Semua sistem berfungsi,");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Sila imbas jari");

} lain {

Serial.println ("RALAT: Sensor cap jari tidak dijumpai!");

lcd.setCursor (0, 0);

lcd.print ("RALAT: Cetakan jari");

lcd.setCursor (1, 1);

lcd.print ("sensor tidak dijumpai!");

sementara (1) {kelewatan (1); }

}

jari.getTemplateCount ();

Serial.print ("Sensor mengandungi"); Serial.print (finger.templateCount); Serial.println ("templat"); Serial.println ("Menunggu jari yang sah …"); }

void (* resetFunc) (void) = 0;

gelung kosong () {

getFingerprintIDez ();

kelewatan (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

beralih (p) {

kes FINGERPRINT_OK:

Serial.println ("Gambar diambil");

rehat;

kes FINGERPRINT_NOFINGER:

Serial.println ("Tidak ada jari yang dikesan");

pulangan p;

kes FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kesalahan komunikasi");

pulangan p;

kes FINGERPRINT_IMAGEFAIL:

Serial.println ("Kesalahan pengimejan");

pulangan p;

lalai:

Serial.println ("Ralat tidak diketahui");

pulangan p;

}

p = jari.image2Tz ();

beralih (p) {

kes FINGERPRINT_OK:

Serial.println ("Imej ditukar");

rehat;

kes FINGERPRINT_IMAGEMESS:

Serial.println ("Gambar terlalu tidak kemas");

pulangan p;

kes FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kesalahan komunikasi");

pulangan p;

kes FINGERPRINT_FEATUREFAIL:

Serial.println ("Tidak dapat menemui ciri cap jari");

pulangan p;

kes FINGERPRINT_INVALIDIMAGE:

Serial.println ("Tidak dapat menemui ciri cap jari");

pulangan p;

lalai:

Serial.println ("Ralat tidak diketahui");

pulangan p;

}

p = finger.fingerFastSearch ();

jika (p == FINGERPRINT_OK) {

Serial.println ("Menemui padanan cetak!");

} lain jika (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Kesalahan komunikasi");

pulangan p;

} lain jika (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Tidak menemui padanan");

pulangan p;

} lain {

Serial.println ("Ralat tidak diketahui");

pulangan p;

}

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

Serial.print ("dengan keyakinan"); Serial.println (jari.keyakinan);

mengembalikan jari.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

jika (p! = FINGERPRINT_OK) kembali -1;

p = jari.image2Tz ();

jika (p! = FINGERPRINT_OK) kembali -1;

p = finger.fingerFastSearch ();

jika (p! = FINGERPRINT_OK) kembali -1;

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

Serial.print ("dengan keyakinan"); Serial.println (jari.keyakinan);

jika (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Jari diterima,");

lcd.setCursor (2, 0);

lcd.print ("sekarang kad imbasan …");

lcd.setCursor (0, 3);

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

sementara (! mfrc522. PICC_IsNewCardPresent ());

sementara (! mfrc522. PICC_ReadCardSerial ());

jika (mfrc522.uid.uidByte [0] == 0x92 && // ======================== KOD EDIT ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Ambil sekeping kertas dengan ID di atasnya, terdapat 4 set 2 digit

mfrc522.uid.uidByte [2] == 0x90 && // Lihat kodnya, lihat di mana tertera 0x92, 0xAB, 0x90, 0x1c? Masukkan masing-masing

mfrc522.uid.uidByte [3] == 0x1C) {// bahagian 2 digit selepas 0x. Contohnya, bahagian ID menyatakan

lcd.clear (); // 3E, kemudian masukkan 3E selepas 0x untuk menjadikan 0x3E. Lakukan ini untuk setiap bahagian

lcd.setCursor (3, 0);

lcd.print ("Akhirnya, masukkan");

lcd.setCursor (1, 1);

lcd.print ("kata laluan kayu bedik");

manakala (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); jika (analogRead (A2) <= 100) {

d1 = L;

}

jika (analogRead (A2)> = 670) {

d1 = R;

}

jika (analogRead (A3) <= 100) {

d1 = U;

}

jika (analogRead (A3)> = 670) {

d1 = D;

}

kelewatan (500);

manakala (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

jika (analogRead (A2) <= 100) {

d2 = L;

}

jika (analogRead (A2)> = 670) {

d2 = R;

}

jika (analogRead (A3) <= 100) {

d2 = U;

}

jika (analogRead (A3)> = 670) {

d2 = D;

}

kelewatan (500);

manakala (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

jika (analogRead (A2) <= 100) {

d3 = L;

}

jika (analogRead (A2)> = 670) {

d3 = R;

}

jika (analogRead (A3) <= 100) {

d3 = U;

}

jika (analogRead (A3)> = 670) {

d3 = D;

}

kelewatan (500);

sementara (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

jika (analogRead (A2) <= 100) {

d4 = L;

}

jika (analogRead (A2)> = 670) {

d4 = R;

}

jika (analogRead (A3) <= 100) {

d4 = U;

}

jika (analogRead (A3)> = 670) {

d4 = D;

}

kelewatan (500);

jika (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= EDIT KOD ====== ================

lcd.clear (); // Bahagian ini adalah sekiranya anda dapat mengedit kata laluan dengan kayu bedik

lcd.setCursor (2, 0); // kata laluan ditetapkan ke kiri, atas kiri, kanan. Sekiranya anda mahu berubah

lcd.print ("Akses diberikan!"); // itu, letakkan L untuk kiri, R untuk kanan, U untuk atas, atau D untuk turun di salah satu

lcd.setCursor (2, 1); // 4 bahagian dengan huruf selepas tanda ==.

lcd.print ("Laci tidak dikunci.");

lcd.setCursor (2, 2);

lcd.print ("Apabila selesai, bergerak");

lcd.setCursor (1, 3);

lcd.print ("joystick untuk memuat semula");

servo.write (90);

manakala (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Laci dikunci");

kelewatan (3000);

tetapkan semulaFunc ();

} lain {

lcd.clear ();

lcd.setCursor (2, 0);

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

lcd.setCursor (0, 2);

lcd.print ("Memulakan semula sistem …");

kelewatan (3000);

tetapkan semulaFunc ();

}

} lain {

lcd.clear ();

lcd.setCursor (2, 0);

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

lcd.setCursor (0, 2);

lcd.print ("Memulakan semula sistem …");

kelewatan (3000);

tetapkan semulaFunc ();

}

} lain {

lcd.clear ();

lcd.setCursor (2, 0);

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

lcd.setCursor (0, 2);

lcd.print ("Memulakan semula sistem …");

kelewatan (3000);

tetapkan semulaFunc ();

}

mengembalikan jari.fingerID; }

Langkah 6: Selesaikan

Satu perkara yang saya terlupa untuk memberitahu anda, baik 2 perkara ialah saya membina ini sebelum saya mengambil gambar, jadi saya tidak dapat menunjukkan kepada anda bagaimana saya membina kotak itu. Yang lain adalah disyorkan untuk memusingkan bahagian servo ke bahagian yang berpusing. Sekiranya tidak, seseorang boleh menarik laci sambil dikunci dan mengeluarkannya. Tetapi sebelum anda memasangnya, cari tempat yang tepat untuk meletakkannya kerana servo beralih ke tahap tertentu. Atau anda boleh menukarnya dalam kod. Sekiranya sebilangan elektronik bertindak lucu, anda mungkin ingin mencari cara lain untuk mendapatkan 5V untuk sebilangan dari mereka. Saya perhatikan ketika pengimbas cap jari saya berkedip, layar akan sedikit berkelip dengannya, dan servo akan mengeluarkan suara. Apabila servo bergerak, skrin akan redup. Saya harap anda menikmati projek ini! Sekiranya anda mempunyai sebarang pertanyaan, tinggalkan di komen. Saya tidak banyak mengajar, tetapi saya akan menjawabnya secepat mungkin!

Disyorkan: