Min menu

Pages

project 36: Unique mark based Car Ignition System utilizing Arduino and RFID

 Unique mark based Car Ignition System utilizing Arduino and RFID:




These days the greater part of the vehicle accompanies keyless section and press button start framework, in which you just need to convey the key in your pocket and simply need to place the capacitive sensor on the entryway handle to open the vehicle entryway. Here in this undertaking, we are adding a couple of greater security highlights to this framework by utilizing RFID and Fingerprint sensor. RFID sensor will approve the permit of the client and the unique mark sensor will just permit an approved individual in the vehicle. 


For this Fingerprint Based Car Ignition System, we are utilizing Arduino with a R305 Fingerprint sensor and an EM18 RFID peruser.


Materials Used

  • Arduino Nano
  • R305 Fingerprint sensor
  • EM18 RFID reader
  • 16*2 Alphanumeric LCD
  • DC motors
  • L293D Motor driver IC
  • Veroboard or Breadboard (Whichever is available)
  • Connecting wires
  • 12V DC Battery
RFID speaks to Radio repeat recognizing verification. It suggests an advancement, where mechanized data is encoded in RFID marks and they can be decoded by a RFID peruser using radio waves. RFID resembles barcoding in which data from a tag is decoded by a device. RFID advancement is used in various applications like Security structure, Employee investment structure, RFID Door Lock, RFID Based Voting Machine, Toll Collection System, etc 





EM18 Reader is a module that can examine the ID information set aside in the RFID names. The RFID names stores a 12 digit stand-out number which can be decoded by an EM18 peruser module, when the name comes in reach with the Reader. This module works at a repeat of 125 kHz, which is having an inbuilt gathering mechanical assembly, and it is worked using a 5 volt DC power supply. 

It gives a consecutive data yield, and it has an extent of 8-12 cm. The successive correspondence limits are 8 data bits, 1 stop bit, and 9600 baud rate.

EM18 Features: 

  • Operating  voltage: +4.5V to +5.5V DC
  • Current consumption: 50mA
  • Operating frequency: 125KHZ
  • Operating temperature: 0-80 degree C
  • Communication Baud Rate: 9600
  • Reading distance: 8-12 cm
  • Antenna: Inbuilt
shematic:


Code
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("  CIRCUIT DIGEST       ");
  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       ");
        }
        }
}

reaction: