Langsung
saja kita siapkan bahan-bahan untuk membuat project ini.
1. C3 Modul Fingerprint atau JM-101B Modul Fingerprint
2. Arduino UNO
3.
Modul Relay
4. WT5001M02 Mp3 Modul Sound
5. MINI SPEAKER 0.5W 8OHM
6. Doorlock 12V
7. Adaptor 12V 1A
8. LCD 16x4
9. I2C LCD
10. Kabel Jumper
11.
Breadboard
Pertama
saya mau merangkai rangkaian LCD nya terlebih dahulu.
.
Kedua
rangkaian fingerprint (JIKA MENGGUNAKAN FINGERPRINT C3)
(JIKA
MENGGUNAKAN FINGERPRINT JM-101)
.
Ketiga
rangkaian modul WT5001M02
.
Terakhir
rangkaian relay solenoid doorlock
Setelah
semua terangkai dengan benar, kita masuk ke pemrograman arduinonya.
Untuk mengakses modul fingerprint ini, kita harus menginisialisasikan terlebih dahulu sidik jari kita. Program untuk inisialisasi tersebut sudah ada bawaan dari arduino. Yaitu program enroll di example. Kita buka saja, file – example – adafruit fingerprint sensor library – enroll. Langsung saja upload program tersebut ke arduino. Setelah selesai upload, buka serial monitor. Nah jika muncul tulisan seperti ini, kita ketik angka 1 kemudian enter. Lalu tempelkan sidikjari kita ke fingerprint. Sekali lagi kita tempelkan. Dengan demikian inisialisasi sidikjari kita sudah selesai. Dan sudah terekam di modul fingerprint.
Untuk mengakses modul fingerprint ini, kita harus menginisialisasikan terlebih dahulu sidik jari kita. Program untuk inisialisasi tersebut sudah ada bawaan dari arduino. Yaitu program enroll di example. Kita buka saja, file – example – adafruit fingerprint sensor library – enroll. Langsung saja upload program tersebut ke arduino. Setelah selesai upload, buka serial monitor. Nah jika muncul tulisan seperti ini, kita ketik angka 1 kemudian enter. Lalu tempelkan sidikjari kita ke fingerprint. Sekali lagi kita tempelkan. Dengan demikian inisialisasi sidikjari kita sudah selesai. Dan sudah terekam di modul fingerprint.
.
Selanjutnya
kita upload program fingerprint untuk doorlock.
.
.
.
#include
<Adafruit_Fingerprint.h>
#include <SPI.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
#include <SPI.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
SoftwareSerial
mySerial(2, 3); //Inisialisasi serial RX TX modul fingerprint
LiquidCrystal_I2C lcd(0x3f, 16, 4); //Inisialisasi I2C LCD
int doorLock = 8; //pin untuk sinyal doorlock
LiquidCrystal_I2C lcd(0x3f, 16, 4); //Inisialisasi I2C LCD
int doorLock = 8; //pin untuk sinyal doorlock
Adafruit_Fingerprint
finger = Adafruit_Fingerprint(&mySerial);
void
setup()
{
Serial.begin(9600);
while (!Serial);
delay(100);
Serial.println("nnAdafruit finger detect test");
{
Serial.begin(9600);
while (!Serial);
delay(100);
Serial.println("nnAdafruit 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.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...");
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
Serial.println("Waiting for valid finger...");
lcd.begin();
lcd.clear();
lcd.clear();
pinMode(doorLock,
OUTPUT);
digitalWrite(doorLock, HIGH);
lcd.setCursor(0,0); //set koordinat LCD
lcd.print("HALLO GAES");
delay(100);
lcd.setCursor(0,1);
lcd.print("WELCOME");
delay(100);
digitalWrite(doorLock, HIGH);
lcd.setCursor(0,0); //set koordinat LCD
lcd.print("HALLO GAES");
delay(100);
lcd.setCursor(0,1);
lcd.print("WELCOME");
delay(100);
SPI.begin();
// Initiate SPI bus
Serial.write(0x7E);
Serial.write(0x03);
Serial.write(0xA7);
Serial.write(0x1F); // volume max
Serial.write(0x7E);
}
Serial.write(0x7E);
Serial.write(0x03);
Serial.write(0xA7);
Serial.write(0x1F); // volume max
Serial.write(0x7E);
}
void
loop()
{
getFingerprintID();
delay(50);
}
{
getFingerprintID();
delay(50);
}
//------------------------------------------------------------
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) { //jika fingerprint terdeteksi
Serial.println("Found a print match!");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("MASUK PAK EKO");
delay (100);
suara1();
digitalWrite(doorLock, LOW);
lcd.setCursor(0,1);
lcd.print("AutoLock ");
for(int i=5; i>0; i--)
{
lcd.setCursor (10,1); lcd.print(i);
delay (1000);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HALLO GAES");
delay(100);
lcd.setCursor(0,1);
lcd.print("WELCOME");
delay(100);
digitalWrite(doorLock, HIGH);
}
else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
}
else if (p == FINGERPRINT_NOTFOUND) { //jika fingerprint salah
Serial.println("Did not find a match");
suara2();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("BELUM BERUNTUNG");
delay (100);
lcd.setCursor(0,1);
lcd.print("COBA LAGI");
delay (2000);
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) { //jika fingerprint terdeteksi
Serial.println("Found a print match!");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("MASUK PAK EKO");
delay (100);
suara1();
digitalWrite(doorLock, LOW);
lcd.setCursor(0,1);
lcd.print("AutoLock ");
for(int i=5; i>0; i--)
{
lcd.setCursor (10,1); lcd.print(i);
delay (1000);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HALLO GAES");
delay(100);
lcd.setCursor(0,1);
lcd.print("WELCOME");
delay(100);
digitalWrite(doorLock, HIGH);
}
else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
}
else if (p == FINGERPRINT_NOTFOUND) { //jika fingerprint salah
Serial.println("Did not find a match");
suara2();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("BELUM BERUNTUNG");
delay (100);
lcd.setCursor(0,1);
lcd.print("COBA LAGI");
delay (2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HALLO GAES");
delay(100);
lcd.setCursor(0,1);
lcd.print("WELCOME");
delay(100);
return p;
}
else {
Serial.println("Unknown error");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("??");
delay (100);
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;
}
//-----------------------------------------------------------------------------
lcd.setCursor(0,0);
lcd.print("HALLO GAES");
delay(100);
lcd.setCursor(0,1);
lcd.print("WELCOME");
delay(100);
return p;
}
else {
Serial.println("Unknown error");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("??");
delay (100);
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;
}
//-----------------------------------------------------------------------------
void
suara1()
{
Serial.write(0x7E);
Serial.write(0x04);
serial.write(0xA0); // A0 for SD card
Serial.write((byte)0x00);
Serial.write(0x01); // track number 001.mp3
Serial.write(0x7E);
delay(100);
}
{
Serial.write(0x7E);
Serial.write(0x04);
serial.write(0xA0); // A0 for SD card
Serial.write((byte)0x00);
Serial.write(0x01); // track number 001.mp3
Serial.write(0x7E);
delay(100);
}
void
suara2()
{
Serial.write(0x7E);
Serial.write(0x04);
Serial.write(0xA0); // A0 for SD card
Serial.write((byte)0x00);
Serial.write(0x02); // track number 002.mp3
Serial.write(0x7E);
delay(100);
}
{
Serial.write(0x7E);
Serial.write(0x04);
Serial.write(0xA0); // A0 for SD card
Serial.write((byte)0x00);
Serial.write(0x02); // track number 002.mp3
Serial.write(0x7E);
delay(100);
}
.
.
.
Oke
setelah selesai di upload langsung saja kita coba rangkaiannya.
ketika saya tempelkan sidikjari yang tadi sudah terinisialisasi, modul fingerprint akan mendeteksi dan akan menjalankan doorlock. LCD akan menampilkan indicator. Dan Speaker akan mengeluarkan suara peringatan. Suara ini saya ambil dari voice generator online. Silahkan bisa kalian cari di google.
ketika saya tempelkan sidikjari yang tadi sudah terinisialisasi, modul fingerprint akan mendeteksi dan akan menjalankan doorlock. LCD akan menampilkan indicator. Dan Speaker akan mengeluarkan suara peringatan. Suara ini saya ambil dari voice generator online. Silahkan bisa kalian cari di google.
.
Kemudian
jika saya tempelkan sidikjari yang belum terinisialisasi, modul fingerprint
akan mendeteksi kesalahan sidikjari / error. Maka doorlock tidak akan membuka.
LCD akan menampilkan indicator seperti ini. Dan Speaker akan mengeluarkan suara
peringatan.
Tidak ada komentar:
Posting Komentar