Daftar Isi:

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: Top 5 Arduino Projects for Beginners. Full tutorial videos in Youtube Channel #arduino 2024, Juli
Anonim
Arduino Teknologi Tinggi Aman
Arduino Teknologi Tinggi Aman

Ini adalah brankas berteknologi tinggi arduino saya. Anda harus memindai jari Anda, memindai kartu Anda, lalu memasukkan kata sandi 4 digit untuk membuka kunci laci. Proyek ini tidak disarankan untuk pemula karena sangat canggih. Kodenya panjang, tetapi saya akan membagikannya dalam proyek ini. Biayanya sekitar $75 jika Anda membuat brankas yang sama dengan saya. Proyek ini juga bisa memakan waktu 1-3 hari untuk diselesaikan. Jadi, mari kita mulai!

Perlengkapan

Untuk membangun brankas yang sama dengan milik saya, Anda perlu:

Arduino (Uno direkomendasikan karena saya tidak memiliki langkah-langkah untuk arduino mega atau nano. Tapi Anda masih bisa menggunakannya)

papan tempat memotong roti

servo

kabel jumper

joystik

20*4 (Anda dapat menggunakan 16*4, tetapi Anda harus mengubah kode)

pemindai sidik jari

pemindai kartu rfid mfrc522

ember lego

Langkah 1: Membangun Kotak

Membangun Kotak
Membangun Kotak

Pertama, Anda memerlukan kotak untuk meletakkan barang elektronik Anda. Anda bisa menggunakan lego, kotak cetak 3d, atau bahkan karton! (Meskipun ini mungkin lebih sulit) Jangan lupa untuk membuat lubang di dalamnya untuk laci, dan barang elektronik Anda. Jika Anda menggunakan pemindai kartu rfid, Anda tidak perlu melubanginya jika dinding Anda tipis. Kartu masih berfungsi, tetapi Anda harus menutup gantungan kunci agar sensor kartu rfid dapat membacanya. Juga sisakan ruang untuk arduino dan kabel Anda di dalamnya. CATATAN: Saat Anda membuat laci, tinggalkan lubang di dalamnya agar servo Anda dapat berputar dan mengunci laci.

Langkah 2: Pengkabelan

Pengkabelan!
Pengkabelan!

Langkah ini bisa jadi rumit karena Anda harus mencolokkan kabel di tempat yang tepat atau elektronik tidak akan berfungsi. Saya tidak memiliki diagram pengkabelan, tetapi saya akan memberi tahu Anda masing-masing akan berjalan. Kabel hanya untuk arduino uno. Anda harus mencari untuk meletakkan kabel jika Anda menggunakan arduino mega atau nano. Jika Anda tidak menggunakan semua perangkat elektronik yang saya miliki, Anda dapat melewati kabel itu.

Pemindai sidik jari: kabel hijau: D2 kabel putih: D3 kabel hitam: GND kabel merah: 5V

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

pemindai kartu rfid: 3.3V = 3.3V pertama = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

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

Servo: kabel merah: 5V Kabel coklat: GND kabel kuning: D6

CATATAN: JANGAN MASUKKAN PEMINDAI KARTU RFID KE 5V. JIKA ANDA MELAKUKANNYA, ITU AKAN RUSAK!!!

Anda mungkin bertanya-tanya mengapa saya mengatakan untuk menyambungkan daya joystick ke 3.3V ketika tertulis 5V di samping. Itu karena servo, layar, dan pemindai sidik jari membutuhkan 5V. Jika Anda menambahkan joystick ke dalamnya, elektronik mungkin tidak berfungsi karena semuanya membutuhkan 5V. Joystick masih akan bekerja dengan 3.3V. Hanya saja nilai maksimalnya bukan 1023, itu akan menjadi ~670.

Langkah 3: Mengunduh Perpustakaan

Dalam proyek ini, Anda akan memerlukan 6 perpustakaan untuk menggunakan semua elektronik. 1 untuk servo, 1 untuk sensor sidik jari, 2 untuk pemindai kartu rfid, dan 2 untuk layar. Joystick tidak membutuhkan perpustakaan. Sekarang, apa itu perpustakaan? Ini pada dasarnya adalah file yang menyimpan banyak kode yang dapat Anda gunakan dalam proyek Anda dengan perintah sederhana. Untuk mendapatkan perpustakaan ini, Anda harus pergi ke tempat bernama GitHub. Jika Anda tahu cara mengunduh dan membuka zip perpustakaan, cukup buka tautan di bawah untuk mengunduh. Jika Anda tidak tahu caranya, Anda dapat pergi ke instruksi saya yang berbicara tentang cara mengunduh perpustakaan pada langkah 3:

atau cari video youtube tentang cara mengunduh perpustakaan arduino dari GitHub

LINK KE PERPUSTAKAAN:

Servo

sensor sidik jari:

spi

sensor kartu rfid

perpustakaan layar 1

perpustakaan layar 2

Langkah 4: Menyiapkan Sensor Sidik Jari dan Sensor Kartu RFID

Langkah ini berbicara tentang cara mengatur sensor sidik jari dan sensor kartu rfid. Kecuali Anda telah menggunakan sensor sidik jari Anda, Anda harus menunjukkan seperti apa sidik jari Anda sehingga dapat menyimpannya di memorinya. Bahkan jika Anda telah menggunakannya sebelumnya, Anda mungkin masih harus melakukan langkah ini. Saya akan memberi tahu Anda cara melakukannya secara singkat, tetapi jika tidak masuk akal, buka tautan yang dapat diinstruksikan yang sama di langkah terakhir. Ini melewatinya dengan sangat baik. Dasar hanya membuka ide arduino. Buka file > contoh > adafruit sensor sidik jari > daftar. Unggah kode ke arduino, buka serial monitor, dan ikuti langkah-langkahnya. Ketika ia memberitahu Anda untuk memberikan nomor. Ketik 1#.

Nah untuk kartu rfid, langkah ini cukup mudah. Buka ide arduino. Buka file > contoh > mfrc522 > baca data pribadi. Upload ke arduino dan buka serial monitor. Pindai kartu atau gantungan kunci yang ingin Anda gunakan yang disertakan dengan sensor Anda. Kemudian itu akan memberi Anda beberapa informasi. Cari ID kartu itu akan menjadi 4 set 2 digit. Sesuatu seperti ini: AB 45 2Y 45 tetapi kode Anda akan berbeda. Tuliskan ini di selembar kertas. Anda akan membutuhkannya lagi nanti. Itu saja untuk langkah ini.

Langkah 5: KODE

Ini akan menjadi langkah tersulit bagi sebagian besar dari Anda, tetapi ini cukup sederhana. Pertama salin dan tempel kode ke dalam ide arduino dari bawah. Kedua, edit 2 bagian yang bertuliskan EDIT CODE. 1 bagian untuk pemindai kartu, 1 bagian untuk joystick. Langkah-langkah ini tidak dapat dilewati. Setelah selesai, unggah kode ke arduino!

#sertakan #sertakan Sidik Jari.h>

#termasuk

#termasuk

#termasuk

#termasuk

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 finger = Adafruit_Fingerprint(&mySerial);

Servo servo;

karakter d1;

karakter d2;

karakter d3;

karakter d4;

batalkan pengaturan(){

servo.attach(6);

servo.menulis(170);

lcd.begin(20, 4);

Serial.begin(9600);

while (!Serial);

SPI.mulai();

mfrc522. PCD_Init();

penundaan (4);

mfrc522. PCD_DumpVersionToSerial();

penundaan(100);

Serial.println("\n\nTes deteksi jari ada buah");

jari.mulai(57600);

penundaan (5);

if (finger.verifyPassword()) {

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

lcd.clear();

lcd.setCursor(1, 0);

lcd.print("Silahkan pindai jari");

} lain {

Serial.println("ERROR: Sensor sidik jari tidak ditemukan!");

lcd.setCursor(0, 0);

lcd.print("KESALAHAN: Sidik jari");

lcd.setCursor(1, 1);

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

while (1) { penundaan(1); }

}

finger.getTemplateCount();

Serial.print("Sensor berisi "); Serial.print(finger.templateCount); Serial.println("template"); Serial.println("Menunggu jari yang valid…"); }

void(* resetFunc) (void) = 0;

lingkaran kosong() {

getFingerprintIDez();

penundaan(50);

}

uint8_t getFingerprintID() {

uint8_t p = finger.getImage();

beralih (p) {

kasus FINGERPRINT_OK:

Serial.println("Gambar diambil");

merusak;

kasus FINGERPRINT_NOFINGER:

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

kembali hal;

kasus FINGERPRINT_PACKETRECIEVEERR:

Serial.println("Kesalahan Komunikasi");

kembali hal;

kasus FINGERPRINT_IMAGEFAIL:

Serial.println("Kesalahan Pencitraan");

kembali p;

bawaan:

Serial.println("Kesalahan tidak diketahui");

kembali p;

}

p = jari.gambar2Tz();

beralih (p) {

kasus FINGERPRINT_OK:

Serial.println("Gambar dikonversi");

merusak;

kasus FINGERPRINT_IMAGEMESS:

Serial.println("Gambar terlalu berantakan");

kembali hal;

kasus FINGERPRINT_PACKETRECIEVEERR:

Serial.println("Kesalahan Komunikasi");

kembali p;

kasus FINGERPRINT_FEATUREFAIL:

Serial.println("Tidak dapat menemukan fitur sidik jari");

kembali p;

kasus FINGERPRINT_INVALIDIMAGE:

Serial.println("Tidak dapat menemukan fitur sidik jari");

kembali p;

bawaan:

Serial.println("Kesalahan tidak diketahui");

kembali p;

}

p = finger.fingerFastSearch();

if (p == SIDIK JARI_OK) {

Serial.println("Menemukan hasil cetak yang cocok!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Kesalahan komunikasi");

kembali p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println("Tidak menemukan kecocokan");

kembali p;

} lain {

Serial.println("Kesalahan tidak diketahui");

kembali p;

}

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

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

kembali finger.fingerID;

}

int getFingerprintIDez() {

uint8_t p = finger.getImage();

jika (p != FINGERPRINT_OK) kembali -1;

p = jari.gambar2Tz();

jika (p != FINGERPRINT_OK) kembali -1;

p = finger.fingerFastSearch();

jika (p != FINGERPRINT_OK) kembali -1;

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

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

if(finger.fingerID == 1){

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("Jari diterima, ");

lcd.setCursor(2, 0);

lcd.print("Sekarang pindai kartu…");

lcd.setCursor(0, 3);

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

while(! mfrc522. PICC_IsNewCardPresent());

while(! mfrc522. PICC_ReadCardSerial());

if (mfrc522.uid.uidByte[0] == 0x92 && //========================EDIT KODE======== ================

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

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

mfrc522.uid.uidByte[3] == 0x1C) { //dari bagian 2 digit setelah 0x. Misalnya, bagian ID mengatakan

lcd.clear(); //3E, lalu masukkan 3E setelah 0x untuk membuat 0x3E. Lakukan ini untuk setiap bagian

lcd.setCursor(3, 0);

lcd.print("Akhirnya masuk");

lcd.setCursor(1, 1);

lcd.print("password joystik");

while(analogRead(A2) >= 100 &&

analogBaca(A2) <= 670 &&

analogRead(A3) >= 100 &&

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

}

penundaan (500);

while(analogRead(A2) >= 100 &&

analogBaca(A2) <= 670 &&

analogRead(A3) >= 100 &&

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

}

penundaan (500);

while(analogRead(A2) >= 100 &&

analogBaca(A2) <= 670 &&

analogRead(A3) >= 100 &&

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

}

penundaan (500);

while(analogRead(A2) >= 10 &&

analogBaca(A2) <= 670 &&

analogRead(A3) >= 100 &&

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

}

penundaan (500);

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

lcd.clear(); //Bagian ini adalah Anda dapat mengedit kata sandi dengan joystick

lcd.setCursor(2, 0); // kata sandi disetel ke kiri, kiri atas, kanan. Jika Anda ingin berubah

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

lcd.setCursor(2, 1); //4 bagian dengan huruf setelah tanda ==.

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

lcd.setCursor(2, 2);

lcd.print("Setelah selesai, pindahkan");

lcd.setCursor(1, 3);

lcd.print("joystick untuk mengunci kembali");

servo.menulis(90);

while(analogRead(A2) >= 100 &&

analogBaca(A2) <= 670 &&

analogRead(A3) >= 100 &&

analogRead(A3) <= 670);

servo.menulis(170);

lcd.setCursor(3, 0);

lcd.print("Laci terkunci");

penundaan(3000);

resetFunc();

}lain{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("AKSES DITOLAK!!!");

lcd.setCursor(0, 2);

lcd.print("Restart sistem…");

penundaan(3000);

resetFunc();

}

}lain{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("AKSES DITOLAK!!!");

lcd.setCursor(0, 2);

lcd.print("Restart sistem…");

penundaan(3000);

resetFunc();

}

}lain{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("AKSES DITOLAK!!!");

lcd.setCursor(0, 2);

lcd.print("Restart sistem…");

penundaan(3000);

resetFunc();

}

kembali finger.fingerID; }

Langkah 6: Selesai

Satu hal yang saya lupa untuk memberitahu Anda, baik 2 hal adalah bahwa saya membangun ini sebelum saya mengambil gambar, jadi saya tidak bisa menunjukkan bagaimana saya membangun kotak. Yang lainnya adalah disarankan untuk memasang bagian servo ke bagian yang berputar. Jika tidak, seseorang dapat menarik laci saat terkunci dan menariknya keluar. Tetapi sebelum Anda memasangnya, temukan tempat yang tepat untuk memasangnya karena servo berputar ke tingkat tertentu. Atau Anda bisa mengubahnya dalam kode. Jika beberapa elektronik bertingkah lucu, Anda mungkin ingin menemukan cara berbeda untuk mendapatkan 5V untuk beberapa di antaranya. Saya perhatikan ketika pemindai sidik jari saya berkedip, layar akan sedikit berkedip, dan servo akan mengeluarkan suara. Ketika servo bergerak, layar akan menjadi redup. Saya harap Anda menikmati proyek ini! Jika Anda memiliki pertanyaan, tinggalkan di komentar. Saya tidak banyak menggunakan instruksi, tetapi saya akan menjawabnya sesegera mungkin!

Direkomendasikan: