Halo sobat Duwi, pada kesempatan kali ini kita akan membuat kunci motor dengan sidik jari menggunakan Arduino. Proyek ini sangat cocok buat kalian yang ingin menambah keamanan motor dengan teknologi terkini. Yuk, langsung aja kita bahas caranya!

Alat dan Bahan

  1. Arduino (Uno, Nano, atau jenis lainnya)
  2. Sensor sidik jari (R307 atau ZFM-20)
  3. Relay modul
  4. Breadboard dan kabel jumper

Langkah-langkah

  1. Rangkai Hardware:Pertama-tama, kita hubungkan sensor sidik jari ke Arduino:
    • VCC ke 5V
    • GND ke GND
    • TX ke pin digital 2
    • RX ke pin digital 3
    Lalu, hubungkan relay modul ke Arduino:
    • VCC ke 5V
    • GND ke GND
    • IN1 (kontak) ke pin digital 4
    • IN2 (starter) ke pin digital 5
  2. Instal Library:Buka Arduino IDE, kemudian pergi ke Sketch -> Include Library -> Manage Libraries, cari “Adafruit Fingerprint Sensor Library” dan klik “Install”.
  3. Kode Program:Berikut ini adalah kode lengkapnya. Copy dan paste kode ini ke dalam Arduino IDE.
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>

// Pin untuk sensor sidik jari
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

// Pin untuk relay
const int relayKontak = 4;
const int relayStarter = 5;

void setup()
{
  // Inisialisasi komunikasi serial
  Serial.begin(9600);
  Serial.println("Motor Fingerprint Lock");

  // Inisialisasi sensor sidik jari
  finger.begin(57600);
  if (finger.verifyPassword()) {
    Serial.println("Sensor ready.");
  } else {
    Serial.println("Cannot find sensor.");
    while (1) { delay(1); }
  }

  // Set relay sebagai output
  pinMode(relayKontak, OUTPUT);
  pinMode(relayStarter, OUTPUT);
  
  // Matikan relay pada awalnya
  digitalWrite(relayKontak, LOW);
  digitalWrite(relayStarter, LOW);
}

void loop()
{
  // Cari sidik jari
  Serial.println("Waiting for valid finger...");
  int fingerID = getFingerprintID();
  
  if (fingerID >= 0) {
    // Sidik jari dikenali, hidupkan relay untuk kontak
    Serial.print("Motor unlocked! ID: "); Serial.println(fingerID);
    digitalWrite(relayKontak, HIGH);
    
    // Tunda sebentar sebelum starter menyala
    delay(1000);
    
    // Hidupkan relay untuk starter
    Serial.println("Starting motor...");
    digitalWrite(relayStarter, HIGH);
    
    // Tunda sebentar untuk mensimulasikan starter
    delay(2000);
    
    // Matikan relay starter
    digitalWrite(relayStarter, LOW);
  }
  
  // Matikan relay kontak setelah beberapa detik
  delay(5000);
  digitalWrite(relayKontak, LOW);
}

int getFingerprintID()
{
  uint8_t p = finger.getImage();
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image taken");
      break;
    case FINGERPRINT_NOFINGER:
      Serial.println("No finger detected");
      return -1;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return -1;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("Imaging error");
      return -1;
    default:
      Serial.println("Unknown error");
      return -1;
  }
  
  p = finger.image2Tz();
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image converted");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("Image too messy");
      return -1;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return -1;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("Could not find fingerprint features");
      return -1;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("Could not find fingerprint features");
      return -1;
    default:
      Serial.println("Unknown error");
      return -1;
  }
  
  p = finger.fingerFastSearch();
  if (p == FINGERPRINT_OK) {
    Serial.println("Found a print match!");
    return finger.fingerID;
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
    Serial.println("Communication error");
    return -1;
  } else if (p == FINGERPRINT_NOTFOUND) {
    Serial.println("No match found");
    return -1;
  } else {
    Serial.println("Unknown error");
    return -1;
  }
}

4. Upload dan Uji Kode:Setelah kode selesai ditulis, upload ke Arduino dan uji dengan sidik jari yang sudah terdaftar pada sensor. Pastikan relay terhubung dengan benar ke sirkuit motor.

    Penjelasan Kode:

    1. Inisialisasi:
      • Kita mulai dengan inisialisasi komunikasi serial dengan sensor sidik jari.
      • Setiap pin relay diatur sebagai output.
    2. Loop Utama:
      • Program akan menunggu sidik jari yang valid.
      • Jika sidik jari dikenali, relay untuk kontak akan menyala, diikuti relay untuk starter.
    3. Fungsi getFingerprintID:
      • Fungsi ini akan mengambil gambar sidik jari, mengonversinya, dan mencari kecocokan dalam database sidik jari.

    Nah, itulah cara membuat kunci motor dengan sidik jari menggunakan Arduino. Semoga bermanfaat dan selamat mencoba! Jika ada pertanyaan, jangan ragu untuk bertanya di kolom komentar.

    Membuat Kunci Motor Sidik Jari dengan Arduino

    Eksplorasi konten lain dari Duwi Arsana

    Berlangganan untuk dapatkan pos terbaru lewat email.

    2 gagasan untuk “Membuat Kunci Motor Sidik Jari dengan Arduino

    • 15 Mei 2024 pukul 14.20
      Permalink

      Om mau tanya dong
      1. Itu untuk berapa sidik jari?
      2. Untuk aplikasi nya ke motor simple kah?
      3. Jika berminat ,beli nya dimana?

      Semoga sukses dan banyak lagi idea idea brilian nya

      Balas
      • 26 Juni 2024 pukul 11.39
        Permalink

        max 50 sidik jari., penerapan di motor ada video tutor nya di youtube saya. bisa wa ke 085738244251

        Balas

    Komentar anda

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