Pada artikel ini, yaitu “Menyalakan Sepeda Motor Dengan Sidik Jari” Kita akan belajar bagaimana memprogram sebuah mikrokontroler yang terhubung dengan sensor sidik jari untuk dapat digunakan sebagai kunci elektronik di kendaraan kita seperti salah satu nya sepeda motor.

Saya katakan pada kendaraan kita karena sistem atau alat yang akan kita bahas disini tidak hanya bisa dipasang di sepeda motor saja, tapi juga bisa dipasang pada mobil, rumah, bahkan sepeda listrik pun juga bisa.

Alat ini akan berfungsi untuk menyalakan kelistrikan sepeda motor dan juga bisa kita gunakan untuk menyalakan mesin secara otomatis saat sidik jari yang dipasang sudah merupakan sidik jari yang terprogram pada sensor yang dipakai.

Alat dan Bahan

  • Arduino Uno / Atmega328
  • Modul Sidik Jari
  • Modul Relay
  • DFPlayer modul
  • Speaker
  • Kabel jumper

Untuk bahan bahan yang akan digunakan disini khususnya arduino kalian bisa gunakan arduino tipe apa saja karena pin yang digunakan dalam project ini tidak banyak.

 

Gambar Rangkaian

Dari gambar skematik diatas kalian bisa lihat pin mana saja yang digunakan dalam membuat alat ini. Saya sengaja membuat PCB custom untuk project ini agar ukuran nya menjadi lebih kecil dan ringkas. Coba kalian buat alat ini dengan menggunakan arduino dan modul relay yang terpisah, tentunya akan menjadi rangkaian yang sangat besar dan kelihatan ribet.

Maka dari itu di project selanjutnya yang PCB nya saya sudah cetak di pabrik, nanti relay nya akan dibuat terpisah menggunakan relay khusus otomotif yang mampu mengalirkan arus 30A. berikut adalah gambar layout terbaru nya.

Coding Arduino

Untuk Bagian merekam sidik jari nya, file example yang ada pada library dinamakan dengan enroll

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

uint8_t id;

void setup()  
{
  Serial.begin(9600);
  while (!Serial);  // For Yun/Leo/Micro/Zero/...
  delay(100);
  Serial.println("\n\nAdafruit Fingerprint sensor enrollment");

  // set the data rate for the sensor serial port
  finger.begin(57600);
  
  if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
  } else {
    Serial.println("Did not find fingerprint sensor :(");
    while (1) { delay(1); }
  }
}

uint8_t readnumber(void) {
  uint8_t num = 0;
  
  while (num == 0) {
    while (! Serial.available());
    num = Serial.parseInt();
  }
  return num;
}

void loop()                     // run over and over again
{
  Serial.println("Ready to enroll a fingerprint!");
  Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger as...");
  id = readnumber();
  if (id == 0) {// ID #0 not allowed, try again!
     return;
  }
  Serial.print("Enrolling ID #");
  Serial.println(id);
  
  while (!  getFingerprintEnroll() );
}

uint8_t getFingerprintEnroll() {

  int p = -1;
  Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id);
  while (p != FINGERPRINT_OK) {
    p = finger.getImage();
    switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image taken");
      break;
    case FINGERPRINT_NOFINGER:
      Serial.println(".");
      break;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      break;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("Imaging error");
      break;
    default:
      Serial.println("Unknown error");
      break;
    }
  }

  // OK success!

  p = finger.image2Tz(1);
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image converted");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("Image too messy");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("Could not find fingerprint features");
      return p;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("Could not find fingerprint features");
      return p;
    default:
      Serial.println("Unknown error");
      return p;
  }
  
  Serial.println("Remove finger");
  delay(2000);
  p = 0;
  while (p != FINGERPRINT_NOFINGER) {
    p = finger.getImage();
  }
  Serial.print("ID "); Serial.println(id);
  p = -1;
  Serial.println("Place same finger again");
  while (p != FINGERPRINT_OK) {
    p = finger.getImage();
    switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image taken");
      break;
    case FINGERPRINT_NOFINGER:
      Serial.print(".");
      break;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      break;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("Imaging error");
      break;
    default:
      Serial.println("Unknown error");
      break;
    }
  }

  // OK success!

  p = finger.image2Tz(2);
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image converted");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("Image too messy");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("Could not find fingerprint features");
      return p;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("Could not find fingerprint features");
      return p;
    default:
      Serial.println("Unknown error");
      return p;
  }
  
  // OK converted!
  Serial.print("Creating model for #");  Serial.println(id);
  
  p = finger.createModel();
  if (p == FINGERPRINT_OK) {
    Serial.println("Prints matched!");
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
    Serial.println("Communication error");
    return p;
  } else if (p == FINGERPRINT_ENROLLMISMATCH) {
    Serial.println("Fingerprints did not match");
    return p;
  } else {
    Serial.println("Unknown error");
    return p;
  }   
  
  Serial.print("ID "); Serial.println(id);
  p = finger.storeModel(id);
  if (p == FINGERPRINT_OK) {
    Serial.println("Stored!");
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
    Serial.println("Communication error");
    return p;
  } else if (p == FINGERPRINT_BADLOCATION) {
    Serial.println("Could not store in that location");
    return p;
  } else if (p == FINGERPRINT_FLASHERR) {
    Serial.println("Error writing to flash");
    return p;
  } else {
    Serial.println("Unknown error");
    return p;
  }   
}

 

Baca juga  BBM untuk Android dan iOS siap di Download

Sedangkan untuk menguji coba sidik jari yang sudah tersimpan kalian bisa menggunakan coding example fingerprint dan melihat hasilnya pada serial monitor.

#include <Adafruit_Fingerprint.h>

// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white
// uncomment this line:
// #define mySerial Serial1

// For UNO and others without hardware serial, we must use software serial...
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino  (WHITE wire)
// comment these two lines if using hardware serial
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

void setup()  
{
  Serial.begin(9600);
  while (!Serial);  // For Yun/Leo/Micro/Zero/...
  delay(100);
  Serial.println("\n\nAdafruit finger detect test");

  // set the data rate for the sensor serial port
  finger.begin(57600);
  
  if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
  } else {
    Serial.println("Did not find fingerprint sensor :(");
    while (1) { delay(1); }
  }

  finger.getTemplateCount();
  Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
  Serial.println("Waiting for valid finger...");
}

void loop()                     // run over and over again
{
  getFingerprintIDez();
  delay(50);            //don't ned to run this at full speed.
}

uint8_t 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 p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("Imaging error");
      return p;
    default:
      Serial.println("Unknown error");
      return p;
  }

  // OK success!

  p = finger.image2Tz();
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image converted");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("Image too messy");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("Could not find fingerprint features");
      return p;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("Could not find fingerprint features");
      return p;
    default:
      Serial.println("Unknown error");
      return p;
  }
  
  // OK converted!
  p = finger.fingerFastSearch();
  if (p == FINGERPRINT_OK) {
    Serial.println("Found a print match!");
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
    Serial.println("Communication error");
    return p;
  } else if (p == FINGERPRINT_NOTFOUND) {
    Serial.println("Did not find a match");
    return p;
  } else {
    Serial.println("Unknown error");
    return p;
  }   
  
  // found a match!
  Serial.print("Found ID #"); Serial.print(finger.fingerID); 
  Serial.print(" with confidence of "); Serial.println(finger.confidence); 

  return finger.fingerID;
}

// returns -1 if failed, otherwise returns ID #
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)  return -1;
  
  // found a match!
  Serial.print("Found ID #"); Serial.print(finger.fingerID); 
  Serial.print(" with confidence of "); Serial.println(finger.confidence);
  return finger.fingerID; 
}

jangan lupa juga pada bagian coding fingerprint untuk menambahkan fungsi untuk menyalakan dan mematikan relay yang kita pasang saat sidik jari yang kita tempelkan benar. Bagian tersebut ada pada bagian

// found a match!

Silahkan dicoba dan di kreasikan sesuai dengan imajinasi kalian agar dapat berfungsi sesuai dengan keinginan kalian.

Baca juga  Alat Membuka Pintu Dengan SMS

 

Download

[sociallocker id=2480]

[button color=”red” size=”medium” link=”http://nimbleinity.com/CKpj” icon=”” target=”false”]DOWNLOAD LIBRARY[/button]

[button color=”blue” size=”medium” link=”http://nimbleinity.com/CKy7″ icon=”” target=”false”]DOWNLOAD SKEMATIK[/button]

[/sociallocker]

Loading

Menyalakan Sepeda Motor Dengan Sidik Jari

12 gagasan untuk “Menyalakan Sepeda Motor Dengan Sidik Jari

  • 14 Januari 2018 pukul 22.19
    Permalink

    Bang bisa pesan pcb nya bang. Sukur2 sih pcb yang sudah jadi. Maksudnya pcb yg sudah sama komponennya bang.

    Balas
  • 8 Februari 2018 pukul 09.42
    Permalink

    bang, PCB yang sudah jadi yang ukuran kecil klo sudah jadi saya bisa pesann lewat apa bang.?
    apakah abang punya online shop?

    Balas
    • 30 Januari 2020 pukul 12.25
      Permalink

      Untuk 1 set starter fingerprint sidik jari motor / mobil berapa harganya dangimana cara pasangnya? Apakah ada pemrograman yg ribet?..saya sangat tertarik ..terima kadih

      Balas
  • 8 Februari 2018 pukul 16.51
    Permalink

    Mencoba menghubungi Via WhasApp ke nomor: 0857-3978-6669 dan 0897-0869-443, tidak dibaca.

    Mohon responsnya di WhatsApp 08161816231, terima kasih.

    Balas
    • 8 Februari 2018 pukul 21.35
      Permalink

      kalau ga dibales coba di akun toko pedia nya langsung mas nama toko nya Bali Mikro, mungkin ada kegiatan dirumahnya makanya ga dibales

      Balas
  • 2 Februari 2020 pukul 15.33
    Permalink

    hello beli
    maaf beli saya mau tanya, untuk menembahkan data sidik jari apa hanya dijumper gitu aja…
    apa ada tambahan coding lagi..
    trims

    Balas
  • 25 April 2021 pukul 16.29
    Permalink

    bli untuk otomatis on off itu dari sensornya atau dari codingnya

    Balas

Komentar anda

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