Prototype Starting Mobil dengan RFID dan Sensor Fingerprint berbasis Arduino

Saat ini sebagian besar mobil hadir dengan sistem keyless entry dan push-button ignition, dimana Anda hanya perlu membawa kunci di saku dan hanya perlu meletakkan jari Anda pada sensor kapasitif pada handle pintu untuk membuka pintu mobil. Di proyek ini, kami menambahkan beberapa fitur keamanan ke sistem ini dengan menggunakan sensor RFID dan Sidik Jari. Sensor RFID akan memvalidasi lisensi pengguna dan sensor sidik jari hanya akan mengizinkan orang yang berwenang di dalam kendaraan.

Untuk Prototype Starting Mobil dengan RFID dan Sensor Fingerprint berbasis Arduino ini , kami menggunakan Arduino dengan sensor Sidik Jari R305 dan pembaca RFID EM18 .

Bahan-bahan yang digunakan

  • Arduino Nano
  • Sensor sidik jari R305
  • Pembaca RFID EM18
  • 16*2 LCD alfanumerik
  • motor DC
  • IC driver motor L293D
  • Veroboard atau Breadboard (Tersedia)
  • Menghubungkan kabel
  • Baterai DC 12V
  • Modul Pembaca RFID EM18


RFID adalah singkatan dari identifikasi frekuensi radio. Ini mengacu pada teknologi, di mana data digital dikodekan dalam tag RFID dan mereka dapat didekodekan oleh pembaca RFID menggunakan gelombang radio. RFID mirip dengan barcode di mana data dari tag didekodekan oleh perangkat. Teknologi RFID digunakan dalam berbagai aplikasi seperti sistem keamanan , sistem absensi karyawan ,  RFID Door Lock , RFID Berbasis Voting Machine , Koleksi Sistem Tol , dll

EM18 Reader adalah modul yang dapat membaca informasi ID yang disimpan dalam tag RFID. Tag RFID menyimpan 12 digit nomor unik yang dapat didekodekan oleh modul pembaca EM18, saat tag berada dalam jangkauan Pembaca. Modul ini beroperasi pada frekuensi 125 kHz, yang memiliki antena built-in, dan dioperasikan menggunakan catu daya DC 5 volt.

Ini memberikan output data serial, dan memiliki jangkauan 8-12 cm. Parameter komunikasi serial adalah 8 bit data, 1 stop bit, dan 9600 baud rate.

Fitur EM18: 

  • Tegangan operasi: +4.5V hingga +5.5V DC
  • Konsumsi saat ini: 50mA
  • Frekuensi operasi: 125KHZ
  • Suhu operasi: 0-80 derajat C
  • Tingkat Baud Komunikasi: 9600
  • Jarak baca: 8-12 cm
  • Antena: built-in
Pinout EM18:


Deskripsi pin: 

VCC: input tegangan 4,5- 5V DC

GND: Pin ground

Buzzer: Buzzer atau pin LED

TX: Pin Pemancar data serial EM18 untuk RS232 (Output)

SEL: Ini harus HIGH untuk menggunakan RS232 (LOW jika menggunakan WEIGAND)

Data 0: data WEIGAND 0

Data 1: data WEIGAND 1


Cari tahu Tag RFID Kode 12 digit Unik menggunakan Arduino

Sebelum memprogram sistem pengapian mobil Arduino for Arduino , pertama-tama kita perlu mengetahui kode unik tag RFID 12 digit. Seperti yang telah kita bahas sebelumnya, tag RFID berisi kode unik 12 digit dan dapat didekodekan dengan menggunakan pembaca RFID. Saat kita menggesek tag RFID di dekat Reader, Reader akan memberikan kode unik melalui port serial output. Pertama, hubungkan Arduino ke pembaca RFID sesuai diagram sirkuit dan kemudian unggah kode yang diberikan di bawah ini ke Arduino.


int count = 0;
char card_no[12];
void setup()
{
   Serial.begin(9600);
}
void loop()
{
   if(Serial.available())
   {
      count = 0;
      while(Serial.available() && count < 12)
      {
         card_no[count] = Serial.read();
         count++;
         delay(5);
      }
      Serial.print(card_no);
   }
}
Setelah berhasil mengupload kode, buka serial monitor, dan atur baud rate menjadi 9600. Kemudian geser kartu di dekat Reader. Kemudian kode 12 digit akan mulai ditampilkan pada monitor serial. Lakukan proses ini untuk semua tag RFID yang digunakan dan catat untuk referensi di masa mendatang.

Rangkaian Diagram

Rangkaian diagram untuk Prototype Starting Mobil dengan RFID dan Sensor FIngerprint berbasis Arduino ini diberikan di bawah ini:


Dalam kasus saya, saya telah menyolder rangkaian lengkap pada papan perf seperti yang ditunjukkan di bawah ini:


Modul Sensor Sidik Jari

Finger Print Sensor Module atau Finger Print Scanner  adalah modul yang menangkap gambar sidik jari dan kemudian mengubahnya menjadi template yang setara dan menyimpannya ke dalam memorinya pada ID (lokasi) yang dipilih oleh Arduino. Di sini semua proses diperintahkan oleh Arduino seperti mengambil gambar sidik jari, mengubahnya menjadi template, dan menyimpan lokasi, dll.



Mendaftarkan Sidik Jari ke Sensor:

Sebelum melanjutkan dengan program, kita perlu menginstal perpustakaan yang diperlukan untuk sensor sidik jari. Di sini kami telah menggunakan “ Adafruit_Fingerprint.h ” untuk menggunakan sensor sidik jari R305. Jadi pertama-tama unduh perpustakaan menggunakan tautan yang diberikan di bawah ini:


Setelah berhasil diunduh, Di Arduino IDE, buka File > Tools > Include library > Add .zip library lalu pilih lokasi file zip untuk menginstal library.

Setelah instalasi perpustakaan berhasil, ikuti langkah-langkah yang diberikan di bawah ini untuk mendaftarkan sidik jari baru di memori sensor.

1. Di Arduino IDE, buka File > Example > Adafruit Fingerprint Sensor Library > Enroll.

2. Unggah kode ke Arduino, dan buka Serial monitor pada baud rate 9600.

Penting: Ubah pin serial Software dalam program menjadi SoftwareSerial mySerial (12, 11).

3. Anda harus memasukkan ID untuk sidik jari di mana Anda ingin menyimpan sidik jari Anda. Karena ini adalah sidik jari pertama saya, saya mengetik 1 di sudut kiri atas, lalu klik tombol Kirim .


Kodingan Program keseluruhan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <Adafruit_Fingerprint.h>
#include <LiquidCrystal.h>
char input[12];
int count = 0;
int a = 0;
const int rs = 6, en = 7, d4 = 2, d5 = 3, d6 = 4, d7 = 5;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
SoftwareSerial mySerial(12,11);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup()
{
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  digitalWrite(9,LOW);
  digitalWrite(10,LOW);
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("   WELCOME TO       ");
  lcd.setCursor(0, 1);
  lcd.print("  KAMISUKAROBOT.com       ");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Please swipe           ");
  lcd.setCursor(0, 1);
  lcd.print("Your License          ");
}
void loop()
{
  if (Serial.available())
  {
    count = 0;
    while (Serial.available() && count < 12)
    {
      input[count] = Serial.read();
      count++;
      delay(5);
    }
    if (count == 12)
    {
      if ((strncmp(input, "3F009590566C", 12) == 0) && (a == 0))
      {
        lcd.setCursor(0, 0);
        lcd.print("License Valid         ");
        lcd.setCursor(0, 1);
        lcd.print("Welcome               ");
        delay(1000);
        a = 1;
        fingerprint();
      }
      else if ((strncmp(input, "0B0028883E95", 12) == 0) && (a == 0))
      {
        lcd.setCursor(0, 0);
        lcd.print("License Valid         ");
        lcd.setCursor(0, 1);
        lcd.print("Welcome                ");
        delay(1000);
        a = 1;
        fingerprint();
      }
      else
      {
        if (a != 1)
        {
          lcd.setCursor(0, 0);
          lcd.print("License Invalid         ");
          lcd.setCursor(0, 1);
          lcd.print("Try Again!!!            ");
          delay(2000);
          lcd.clear();
          lcd.setCursor(0, 0);
          lcd.print("Please swipe           ");
          lcd.setCursor(0, 1);
          lcd.print("Your License          ");
        }
      }
    }
  }
}
int getFingerprintID()
{
  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;
  return finger.fingerID;
}
void fingerprint()
{
  finger.begin(57600);
        while(a==1)
        {
        int fingerprintID = getFingerprintID();
        delay(50);
        if (fingerprintID == 1)
        {
          lcd.setCursor(0, 0);
          lcd.print("Access Granted        ");
          lcd.setCursor(0, 1);
          lcd.print("Vehicle Started       ");
          digitalWrite(9,HIGH);
          digitalWrite(10,LOW);
          while(1);
        }
        else if (fingerprintID == 2)
        {
          lcd.setCursor(0, 0);
          lcd.print("Access Granted        ");
          lcd.setCursor(0, 1);
          lcd.print("Vehicle Started       ");
          digitalWrite(9,HIGH);
          digitalWrite(10,LOW);
          while(1);
        }
        else
        {
          lcd.setCursor(0, 0);
          lcd.print("Pls Place a        ");
          lcd.setCursor(0, 1);
          lcd.print("Valid Finger       ");
        }
        }
}

Post a Comment

Lebih baru Lebih lama