Anda di halaman 1dari 11

Menyalakan Sepeda Motor Dengan Sidik

Jari
Anak Agung Duwi Arsana 14 Januari 2018 Belajar Arduino, Mikrokontroller 6 Komentar
7,827 Views

 Facebook
 Twitter
 Google +

Artikel Terkait

Mau Bikin Sepeda Listrik Ngebut

8 Februari 2018

Membuat Jam Digital Berbicara

2 Februari 2018
Memperbaiki Drone Tidak Bisa Terbang

20 Desember 2017

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

1 #include <SoftwareSerial.h>
2 SoftwareSerial mySerial(2, 3);
3
4 Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
5
6 uint8_t id;
7
8 void setup()
9 {
10 Serial.begin(9600);
11 while (!Serial); // For Yun/Leo/Micro/Zero/...
12 delay(100);
13 Serial.println("\n\nAdafruit Fingerprint sensor enrollment");
14
15 // set the data rate for the sensor serial port
16 finger.begin(57600);
17
18 if (finger.verifyPassword()) {
19 Serial.println("Found fingerprint sensor!");
20 } else {
21 Serial.println("Did not find fingerprint sensor :(");
22 while (1) { delay(1); }
23 }
24 }
25
26 uint8_t readnumber(void) {
27 uint8_t num = ;
28
29 while (num == ) {
30 while (! Serial.available());
31 num = Serial.parseInt();
32 }
33 return num;
34 }
35
36 void loop() // run over and over again
37 {
38 Serial.println("Ready to enroll a fingerprint!");
39 Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger
40 as...");
41 id = readnumber();
42 if (id == ) {// ID #0 not allowed, try again!
43 return;
44 }
45 Serial.print("Enrolling ID #");
46 Serial.println(id);
47
48 while (! getFingerprintEnroll() );
49 }
50
51 uint8_t getFingerprintEnroll() {
52
53 int p = -1;
54 Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id);
55 while (p != FINGERPRINT_OK) {
56 p = finger.getImage();
57 switch (p) {
58 case FINGERPRINT_OK:
59 Serial.println("Image taken");
60 break;
61 case FINGERPRINT_NOFINGER:
62 Serial.println(".");
63 break;
64 case FINGERPRINT_PACKETRECIEVEERR:
65 Serial.println("Communication error");
66 break;
67 case FINGERPRINT_IMAGEFAIL:
68 Serial.println("Imaging error");
69 break;
70 default:
71 Serial.println("Unknown error");
72 break;
73 }
74 }
75
76 // OK success!
77
78 p = finger.image2Tz(1);
79 switch (p) {
80 case FINGERPRINT_OK:
81 Serial.println("Image converted");
82 break;
83 case FINGERPRINT_IMAGEMESS:
84 Serial.println("Image too messy");
85 return p;
86 case FINGERPRINT_PACKETRECIEVEERR:
87 Serial.println("Communication error");
88 return p;
89 case FINGERPRINT_FEATUREFAIL:
90 Serial.println("Could not find fingerprint features");
91 return p;
92 case FINGERPRINT_INVALIDIMAGE:
93 Serial.println("Could not find fingerprint features");
94 return p;
95 default:
96 Serial.println("Unknown error");
97 return p;
98 }
99
100 Serial.println("Remove finger");
101 delay(2000);
102 p=;
103 while (p != FINGERPRINT_NOFINGER) {
104 p = finger.getImage();
105 }
106 Serial.print("ID "); Serial.println(id);
107 p = -1;
108 Serial.println("Place same finger again");
109 while (p != FINGERPRINT_OK) {
110 p = finger.getImage();
111 switch (p) {
112 case FINGERPRINT_OK:
113 Serial.println("Image taken");
114 break;
115 case FINGERPRINT_NOFINGER:
116 Serial.print(".");
117 break;
118 case FINGERPRINT_PACKETRECIEVEERR:
119 Serial.println("Communication error");
120 break;
121 case FINGERPRINT_IMAGEFAIL:
122 Serial.println("Imaging error");
123 break;
124 default:
125 Serial.println("Unknown error");
126 break;
127 }
128 }
129
130 // OK success!
131
132 p = finger.image2Tz(2);
133 switch (p) {
134 case FINGERPRINT_OK:
135 Serial.println("Image converted");
136 break;
137 case FINGERPRINT_IMAGEMESS:
138 Serial.println("Image too messy");
139 return p;
140 case FINGERPRINT_PACKETRECIEVEERR:
141 Serial.println("Communication error");
142 return p;
143 case FINGERPRINT_FEATUREFAIL:
144 Serial.println("Could not find fingerprint features");
145 return p;
146 case FINGERPRINT_INVALIDIMAGE:
147 Serial.println("Could not find fingerprint features");
148 return p;
149 default:
150 Serial.println("Unknown error");
151 return p;
152 }
153
154 // OK converted!
155 Serial.print("Creating model for #"); Serial.println(id);
156
157 p = finger.createModel();
158 if (p == FINGERPRINT_OK) {
159 Serial.println("Prints matched!");
160 } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
161 Serial.println("Communication error");
162 return p;
163 } else if (p == FINGERPRINT_ENROLLMISMATCH) {
164 Serial.println("Fingerprints did not match");
165 return p;
166 } else {
167 Serial.println("Unknown error");
168 return p;
169 }
170
171 Serial.print("ID "); Serial.println(id);
172 p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
173
Serial.println("Stored!");
174
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
175
Serial.println("Communication error");
176
return p;
177
} else if (p == FINGERPRINT_BADLOCATION) {
178
Serial.println("Could not store in that location");
179
return p;
180
} else if (p == FINGERPRINT_FLASHERR) {
181
Serial.println("Error writing to flash");
182
return p;
183
} else {
184
Serial.println("Unknown error");
185
return p;
186
}
187
}

Baca juga Membuat Animasi Orang Kembar Sederhana

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

1 #include <Adafruit_Fingerprint.h>
2
3 // On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is
4 white
5 // uncomment this line:
6 // #define mySerial Serial1
7
8 // For UNO and others without hardware serial, we must use software serial...
9 // pin #2 is IN from sensor (GREEN wire)
10 // pin #3 is OUT from arduino (WHITE wire)
11 // comment these two lines if using hardware serial
12 #include <SoftwareSerial.h>
13 SoftwareSerial mySerial(2, 3);
14
15 Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
16
17 void setup()
18 {
19 Serial.begin(9600);
20 while (!Serial); // For Yun/Leo/Micro/Zero/...
21 delay(100);
22 Serial.println("\n\nAdafruit finger detect test");
23
24 // set the data rate for the sensor serial port
25 finger.begin(57600);
26
27 if (finger.verifyPassword()) {
28 Serial.println("Found fingerprint sensor!");
29 } else {
30 Serial.println("Did not find fingerprint sensor :(");
31 while (1) { delay(1); }
32 }
33
34 finger.getTemplateCount();
35 Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println("
36 templates");
37 Serial.println("Waiting for valid finger...");
38 }
39
40 void loop() // run over and over again
41 {
42 getFingerprintIDez();
43 delay(50); //don't ned to run this at full speed.
44 }
45
46 uint8_t getFingerprintID() {
47 uint8_t p = finger.getImage();
48 switch (p) {
49 case FINGERPRINT_OK:
50 Serial.println("Image taken");
51 break;
52 case FINGERPRINT_NOFINGER:
53 Serial.println("No finger detected");
54 return p;
55 case FINGERPRINT_PACKETRECIEVEERR:
56 Serial.println("Communication error");
57 return p;
58 case FINGERPRINT_IMAGEFAIL:
59 Serial.println("Imaging error");
60 return p;
61 default:
62 Serial.println("Unknown error");
63 return p;
64 }
65
66 // OK success!
67
68 p = finger.image2Tz();
69 switch (p) {
70 case FINGERPRINT_OK:
71 Serial.println("Image converted");
72 break;
73 case FINGERPRINT_IMAGEMESS:
74 Serial.println("Image too messy");
75 return p;
76 case FINGERPRINT_PACKETRECIEVEERR:
77 Serial.println("Communication error");
78 return p;
79 case FINGERPRINT_FEATUREFAIL:
80 Serial.println("Could not find fingerprint features");
81 return p;
82 case FINGERPRINT_INVALIDIMAGE:
83 Serial.println("Could not find fingerprint features");
84 return p;
85 default:
86 Serial.println("Unknown error");
87 return p;
88 }
89
90 // OK converted!
91 p = finger.fingerFastSearch();
92 if (p == FINGERPRINT_OK) {
93 Serial.println("Found a print match!");
94 } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
95 Serial.println("Communication error");
96 return p;
97 } else if (p == FINGERPRINT_NOTFOUND) {
98 Serial.println("Did not find a match");
99 return p;
100 } else {
101 Serial.println("Unknown error");
102 return p;
103 }
104
105 // found a match!
106 Serial.print("Found ID #"); Serial.print(finger.fingerID);
107 Serial.print(" with confidence of "); Serial.println(finger.confidence);
108
109 return finger.fingerID;
110 }
111
112 // returns -1 if failed, otherwise returns ID #
113 int getFingerprintIDez() {
114 uint8_t p = finger.getImage();
115 if (p != FINGERPRINT_OK) return -1;
116
117 p = finger.image2Tz();
118 if (p != FINGERPRINT_OK) return -1;
119
p = finger.fingerFastSearch();
120 if (p != FINGERPRINT_OK) return -1;
121
122 // found a match!
123 Serial.print("Found ID #"); Serial.print(finger.fingerID);
124 Serial.print(" with confidence of "); Serial.println(finger.confidence);
125 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

Baca juga Rangkaian Pembaca RFID Atmega32

1 // found a match!

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

Download

DOWNLOAD LIBRARY

DOWNLOAD SKEMATIK

File Project Ini Dikunci

Dukung pengembangan kami dengan klik share salah satu tombol dibawah ini untuk
mendapatkan file lengkap.

Anda mungkin juga menyukai