Tutorial Membuat Security System Kontak Sepeda Motor Menggunakan RFID dan Fingerprint Berbasis Arduino Nano dengan Notifikasi SMS

Sebelum Membuat Security System Kontak Sepeda Motor Menggunakan RFID dan Fingerprint Berbasis Arduino Nano dengan Notifikasi SMS, lebih baik anda membaca terlebih dahulu mengenai Arduino Nano, RFID, dan Fingerprint. Alat ini sangat bermanfaat untuk di daerah yang rawan pencurian kendaraan bermotor. Karena motor hanya bisa di nyalakan menggunakan Kartu RFID milik kita dan Sidik jari milik kita. Pengamanan berlapis. 


Baca Juga : Tutorial Membaca E-KTP (KTP Elektronik) dengan RFID Reader RC522 Berbasis Arduino Uno .


Berikut ini adalah Schematics Diagram dari Security System Kontak Sepeda Motor Menggunakan RFID dan Fingerprint Berbasis Arduino Nano dengan Notifikasi SMS :

 


 

Berikut ini adalah Hardware yang dibutuhkan :

> 2 Pcs - Arduino Nano >>> BELI DISINI
> 1 Pcs - RFID Reader RC522 >>> BELI DISINI
> 1 Pcs - Sensor Fingerprint >>> BELI DISINI
> 1 Pcs - Module SIM800L >>> BELI DISINI
> 3 Pcs - LM2596 >>> BELI DISINI
> 2 Pcs - Relay SPDT 5 Volt >>> BELI DISINI
> 2 Pcs - Transistor BC547 >>> BELI DISINI
> 2 Pcs - Resistor 560 Ohm >>> BELI DISINI
> 2 Pcs - Dioda 1N4148 >>> BELI DISINI
> 1 Pcs - Elco 470uF/16V >>> BELI DISINI
> 2 Pcs - Terminal Screw 3 Pin >>> BELI DISINI
> 2 Pcs - Terminal Screw 2 Pin >>> BELI DISINI
> 2 Pcs - Header Female 40 Pin >>> BELI DISINI
> 2 Pcs - Header Male 40 Pin >>> BELI DISINI
> 1 Pcs - PCB Polos 10x10 cm >>> BELI DISINI
> 1 Pcs - Feric Chlorida >>> BELI DISINI
> Kabel Jumper Secukupnya >>> BELI DISINI
> Timah Solder Secukupnya >>> BELI DISINI
> Kertas Art Paper Secukupnya >>> BELI DISINI
 
 
Berikut ini adalah Code Program untuk Arduino Nano 1 :


/***************************

Tutorial Membuat Security System Kontak Sepeda Motor Menggunakan RFID dan Fingerprint Berbasis Arduino Nano dengan Notifikasi SMS

Oleh : Arduino Indonesia
Website : www.arduinoindonesia.id
Toko Online : www.workshopelectronics3in1.com
Blog : www.edukasielektronika.com

Copyright @2021

****************************/

//Library and Declaration Finger Print
#include <Wire.h>
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(5, 4);
int fingerprintID = 00;
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

//Library and Declaration RFID
#include <SPI.h>
#include <RFID.h>
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN,RST_PIN);

int serNum[5];          //Variable buffer Scan Card
int cards[10][5] = {{117, 201, 155, 115, 84},    //YOSHUA - 0
                    {36, 58, 122, 137, 237},    //ANITA - 1
                   };

bool access = false;
String Nama;
int count;

//Declaration Relay Output
const int Relay_Kontak = 6;
const int Relay_Starter = 7;

//Declaration Communication to SIM800L
const int SMS = 2;

void setup()
{
  Serial.begin(9600);
  finger.begin(57600);
  Wire.begin();
  SPI.begin();
  rfid.init();
  pinMode(Relay_Kontak, OUTPUT);
  pinMode(Relay_Starter, OUTPUT);
  pinMode(SMS, OUTPUT);
  digitalWrite(Relay_Kontak, LOW);
  digitalWrite(Relay_Starter, LOW);
  digitalWrite(SMS, LOW);
 
  if (finger.verifyPassword())
  {
    Serial.println("Sensor ditemukan");
    delay(500);
  }
  else
  {
    Serial.println("no sensor :(");
    delay(500);
    while (1)
    {
      delay(1);
    }
  }

  while (!Serial)
  {
    ; // wait for serial port to connect. Needed for native USB port only
  }
}

void loop()
{
  fingerprintID = getFingerprintIDez();
  delay(50);
 
  if(fingerprintID == 1)
  {
    String IDname_1 = "YOSHUA";
    digitalWrite(Relay_Starter, HIGH);
    delay(2500);
    digitalWrite(Relay_Starter, LOW);
    Serial.println(IDname_1);
    fingerprintID = 00;
  }  
  else if(fingerprintID == 2)
  {
    String IDname_2 = "ANITA";
    digitalWrite(Relay_Starter, HIGH);  
    delay(2500);
    digitalWrite(Relay_Starter, LOW);
    Serial.println(IDname_2);
    fingerprintID = 00;        
  }

  if(rfid.isCard())
  {
    if(rfid.readCardSerial())
    {
      for(int x = 0; x < sizeof(cards); x++)
      {
        for(int i = 0; i < sizeof(rfid.serNum); i++ )
        {
          if(rfid.serNum[i] == cards[0][i])
          {
            access = true;
            Nama = "YOSHUA";
          }
          else if(rfid.serNum[i] == cards[1][i])
          {
            access = true;
            Nama = "ANITA";
          }   
          else
          {
            access = false;
            break;
          }
        }
        if(access)break;
      }   
    }
    
    if(access)
    {
      count++;
      if(count==1)
      {
        Serial.println(Nama);
        digitalWrite(Relay_Kontak, HIGH);
      }
      if(count==2)
      {
        Serial.println("Motor Mati");
        digitalWrite(Relay_Kontak, LOW);
        count=0;
      }
    }
    else
    {
      Serial.println("SMS Dikirim");
      digitalWrite(SMS, HIGH);
    }
    delay(1000);        
  }    
  rfid.halt();
}

int getFingerprintIDez()
{
  uint8_t x = finger.getImage();
  if (x != FINGERPRINT_OK)  return -1;
 
  x = finger.image2Tz();
  if (x != FINGERPRINT_OK)  return -1;
 
  x = finger.fingerFastSearch();
  if (x != FINGERPRINT_OK)  return -1;
 
  //menulis di komunikasi serial
  Serial.print("Found ID #");
  Serial.print(finger.fingerID);
  Serial.print(" with confidence of ");
  Serial.println(finger.confidence);
  return finger.fingerID;
}


Berikut ini adalah Code Program untuk Arduino Nano 2 :

//Library and Declaration Variabel SIM800L
#include "SIM900.h"         
#include "sms.h"            
#include <SoftwareSerial.h>
SMSGSM sms;                 
char smsbuffer[160];        
char n[20];                 
boolean started=false;      

//Declaration Variabel From Sensor
const int Maling = 4;

void setup()
{
  Serial.begin(9600);             
  pinMode(Maling, INPUT);

  if (gsm.begin(9600))            
  {
    Serial.println("\nstatus=READY");
    started=true;                     
  }
  else                                
  {
    Serial.println("\nstatus=IDLE");
  }
}

void loop()
{
  const int Peringatan = digitalRead(Maling);

  if(started)                                                           
  {  
    if(Peringatan == HIGH)                                                     
    {                                
      sms.SendSMS("08xxxxxxxxx", "Awas MALING !!!");
    }
    else                     
    {
      Serial.println("Motor Diakses oleh Pemilik");
    }
  }
  delay(1000);
}


Berikut ini adalah Video Uji Coba tanpa Notifikasi SMS :



 
 

 

Komentar

Postingan populer dari blog ini

Cara Mengakses dan Pemrograman Sensor Infrared (IR) Proximity FC-51 Menggunakan Arduino Uno

Cara Mengakses dan Pemrograman Sensor Gyroscope dan Accelerometer MPU6050 Menggunakan Arduino Uno

Tutorial Membuat GPS Tracker menggunakan GPS NEO 6M dan SIM800L Berbasis Arduino Uno