Halo teman-teman, ketemu lagi kita di artikel Duwi Arsana nih. Kali ini, kita bakal bahas tentang cara membuat kunci motor menggunakan sidik jari dengan Arduino. Proyek ini sangat menarik karena bisa meningkatkan keamanan motor kamu dengan teknologi biometrik. Jadi, yuk kita mulai!

Apa yang Dibutuhkan?

Untuk proyek ini, kita membutuhkan beberapa komponen:

  1. Arduino (bisa menggunakan Uno, Mega, atau lainnya)
  2. Sensor Sidik Jari (misalnya, Adafruit Fingerprint Sensor)
  3. Modul MP3 (misalnya, DFPlayer Mini)
  4. EEPROM (untuk menyimpan data sidik jari)
  5. Relay (untuk mengontrol starter dan kontak motor)
  6. Kabel jumper dan breadboard
  7. Software Serial Library (untuk komunikasi serial)
  8. Adafruit Fingerprint Library (untuk sensor sidik jari)
  9. DFPlayer Mini Library (untuk modul MP3)

Langkah-langkah Pembuatan

Berikut adalah langkah-langkah yang bisa teman-teman ikuti untuk membuat kunci motor dengan sidik jari:

1. Persiapkan Komponen dan Rangkaian

Hubungkan sensor sidik jari, modul MP3, dan relay ke Arduino sesuai dengan skema berikut:

  • Sensor Sidik Jari:
    • VCC ke 5V Arduino
    • GND ke GND Arduino
    • TX ke pin 7 Arduino
    • RX ke pin 8 Arduino
  • Modul MP3:
    • VCC ke 5V Arduino
    • GND ke GND Arduino
    • TX ke pin RX Arduino
    • RX ke pin TX Arduino
  • Relay:
    • VCC ke 5V Arduino
    • GND ke GND Arduino
    • IN1 ke pin 15 Arduino (kontak motor)
    • IN2 ke pin 14 Arduino (starter motor)

2. Instalasi Library

Pastikan kamu sudah menginstal library Adafruit Fingerprint dan DFPlayer Mini di Arduino IDE kamu. Jika belum, kamu bisa mengunduhnya melalui Library Manager di Arduino IDE.

3. Upload Kode ke Arduino

Berikut adalah kode yang sudah dirapikan untuk proyek kunci motor sidik jari. Copy dan paste kode ini ke Arduino IDE, lalu upload ke board Arduino kamu.

#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#include <EEPROM.h>
#include <DFPlayer_Mini_Mp3.h>

// Konstanta dan variabel
const int aktif = 6;
const int daftar = 2;
const int hapus = 3;
const int relay1 = 15;
const int relay2 = 14;
const int alamat = 0;
byte isi;
int k = 0;
boolean b = false;
boolean a = false;

// Objek
SoftwareSerial mySerial(7, 8);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

// Fungsi setup
void setup() {
    Serial.begin(9600);
    mp3_set_serial(Serial);
    mp3_set_volume(25);

    pinMode(13, OUTPUT);
    pinMode(aktif, INPUT_PULLUP);
    pinMode(daftar, INPUT_PULLUP);
    pinMode(hapus, INPUT_PULLUP);
    pinMode(relay1, OUTPUT);
    pinMode(relay2, OUTPUT);

    digitalWrite(relay1, HIGH);
    digitalWrite(relay2, HIGH);

    mySerial.begin(9600);
    finger.begin(57600);

    if (!finger.verifyPassword()) {
        while (1);
    }

    delay(100);
    if (!digitalRead(hapus)) {
        EEPROM.write(alamat, 0);
        delay(1);
    }

    isi = EEPROM.read(alamat);
    if (isi > 50) {
        EEPROM.write(alamat, 0);
    }

    isi = EEPROM.read(alamat);
    while (!digitalRead(daftar)) {
        Serial.print("Daftar");
        digitalWrite(13, HIGH);
        getFingerprintEnroll(isi);
        digitalWrite(13, LOW);
        delay(10000);
        
        if (isi < 50) {
            isi++;
        }
        
        EEPROM.write(alamat, isi);
        delay(100);
        isi = EEPROM.read(alamat);
    }
}

// Fungsi loop
void loop() {
    b = digitalRead(relay1);
    a = digitalRead(aktif);

    if (a) {
        Serial.println(b);
        Serial.println("masuk");
        getFingerprintID();
    }
}

// Fungsi pendaftaran sidik jari
uint8_t getFingerprintEnroll(int id) {
    int p = -1;

    while (p != FINGERPRINT_OK) {
        p = finger.getImage();
    }

    p = finger.image2Tz(1);
    if (p != FINGERPRINT_OK) return p;

    delay(2000);
    while (p != FINGERPRINT_NOFINGER) {
        p = finger.getImage();
    }

    while (p != FINGERPRINT_OK) {
        p = finger.getImage();
    }

    p = finger.image2Tz(2);
    if (p != FINGERPRINT_OK) return p;

    p = finger.createModel();
    if (p != FINGERPRINT_OK) return p;

    p = finger.storeModel(id);
    if (p == FINGERPRINT_OK) {
        EEPROM.write(alamat, 2);
        delay(1000);
    }

    return p;
}

// Fungsi pencarian sidik jari
uint8_t getFingerprintID() {
    uint8_t p = finger.getImage();
    if (p != FINGERPRINT_OK) return p;

    p = finger.image2Tz();
    if (p != FINGERPRINT_OK) return p;

    p = finger.fingerSearch();
    if (p == FINGERPRINT_OK) {
        // Sidik jari ditemukan
    } else {
        Serial.println("Salah");
        mp3_play(3);
        k++;

        while (p != FINGERPRINT_NOFINGER) {
            p = finger.getImage();
        }

        delay(2000);
        if (k > 2) {
            mp3_play(4);
            k = 0;
            delay(300000); // Kunci selama 5 menit
        }

        return p;
    }

    k = 0;
    if (b) {
        digitalWrite(relay1, LOW);
        mp3_play(1);

        while (p != FINGERPRINT_NOFINGER) {
            p = finger.getImage();
        }

        for (int a = 0; a < 50; a++) {
            p = finger.getImage();
            if (p == FINGERPRINT_OK) {
                p = finger.image2Tz();
                if (p == FINGERPRINT_OK) {
                    p = finger.fingerSearch();
                    if (p == FINGERPRINT_OK) {
                        goto starter;
                    }
                }
            }
            delay(1000);
            if (a >= 25) goto mati;
        }

        starter:
        mp3_play(2);
        delay(2000);
        digitalWrite(relay2, LOW);
        delay(1200);
        digitalWrite(relay2, HIGH);
    } else {
        mati:
        digitalWrite(relay1, HIGH);
        while (p != FINGERPRINT_NOFINGER) {
            p = finger.getImage();
        }
    }

    return finger.fingerID;
}

// Fungsi mendapatkan ID sidik jari dengan cepat
int getFingerprintIDez() {
    uint8_t p = finger.getImage();
    if (p != FINGERPRINT_OK) return -1;

    p = finger.image2Tz();
    if (p != FINGERPRINT_OK) return -1;

    p = finger.fingerFastSearch();
    if (p != FINGERPRINT_OK) {
        Serial.println("Salah");
        mp3_play(3);
        k++;

        while (p != FINGERPRINT_NOFINGER) {
            p = finger.getImage();
        }

        delay(2000);
        if (k > 2) {
            mp3_play(4);
            k = 0;
            delay(300000); // Kunci selama 5 menit
        }

        return -1;
    }

    k = 0;
    if (b) {
        digitalWrite(relay1, LOW);
        mp3_play(1);

        while (p != FINGERPRINT_NOFINGER) {
            p = finger.getImage();
        }

        for (int a = 0; a < 50; a++) {
            p = finger.getImage();
            if (p == FINGERPRINT_OK) {
                p = finger.image2Tz();
                if (p == FINGERPRINT_OK) {
                    p = finger.fingerFastSearch();
                    if (p == FINGERPRINT_OK) {
                        goto starter;
                    }
                }
            }
            delay(1000);
            if (a >= 25) goto mati;
        }

        starter:
        mp3_play(2);
        delay(2000);
        digitalWrite(relay2, LOW);
        delay(1200);
        digitalWrite(relay2, HIGH);
    } else {
        mati:
        digitalWrite(relay1, HIGH);
        while (p != FINGERPRINT_NOFINGER) {
            p = finger.getImage();
        }
    }

    return finger.fingerID;
}

4. Pengujian dan Penyesuaian

Setelah kode berhasil diupload, saatnya menguji sistem kunci motor sidik jari kamu. Pastikan semua koneksi sudah benar dan fungsi dari sidik jari sudah bekerja sesuai dengan harapan. Jika terdapat kendala, kamu bisa melakukan debugging dengan melihat output di Serial Monitor.

Baca juga  Menyalakan Lampu Dengan Gerakan Tangan Part 1

5. Peningkatan Proyek

Kamu bisa meningkatkan proyek ini dengan menambahkan fitur-fitur seperti:

  • Alarm jika ada upaya pembobolan
  • Modul GPS untuk melacak posisi motor
  • Sistem penguncian otomatis jika motor tidak terdeteksi dalam jangka waktu tertentu

Kesimpulan

Dengan menggunakan Arduino dan sensor sidik jari, kita bisa membuat kunci motor yang lebih aman dan canggih. Proyek ini tidak hanya meningkatkan keamanan, tetapi juga memberikan pengalaman belajar yang berharga tentang bagaimana mengintegrasikan berbagai komponen elektronik dan memprogramnya.

Semoga artikel ini bermanfaat dan bisa membantu teman-teman dalam membuat proyek kunci motor sidik jari. Jangan lupa untuk terus bereksperimen dan mengembangkan kemampuan kamu dalam bidang elektronika dan pemrograman. Sampai ketemu di artikel berikutnya!

Happy making!

Loading

Koding arduino project kunci motor sidik jari

Komentar anda

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.