Parmak izi okuyucu ile Kapı/kasa kontrolü (as608)
Arkadaşlar merhaba bu yazımızda as608 parmak izi modülünü kullanarak role kontrolü ile kapı veya kasa açma kapama kontrol etmeyi göreceğiz

arkadaşlaer lcd ekran I’C modüllü olduğundan 4 adet kabşlosu mevcuttur ekranın arkasındaki I’C modulune baktığınızda scl , sda, vcc ve gnd pinlerini görürsünüz , kullandığımız arduinolar clone olduğundan clone arduinolarda scl ve sda pinler mevcuttur siz resimdeki a4 ve a5 pinleri yerine yukardaki scl ve sda pi nlerini kullanınız olmayanlar a4 ve a5 pinlerini kullanır..
AS608 bağlantısı nasıl yapılmalıdır , cihaz ile gelen soketi uygun bir şekilde önce cihazın arkasına takıyoruz zaten ters takmanız mümkün değil sonra kırmızı siyah sarı ve yeşil kabloların boşta kalan kısmından kesiyoruz ağızlarını açıyoruz ve onlara yine ucları açılmış erkek kablolar takıyoruz böylelikle cihazın 4 kablosunun ucunu erkek kablo haline getirmiş oluyoruz…haberleşme olarak UART seri haberleşmeyi kullandığından tx ve rx pinleri olarak 2 ve 3 numaralı dijital pinleri kullanıyoruz şema daki gibi bağlantımızı yapıyoruz… selenoid kilidimizin bir kablosu gnd ye takılırken diğer voltaj ucu rolede ayrı vaziyette duruyor çünki role aktif olunca o ucları birleştirecek ve kilit çalışmış olacak argb ledimizi de ilgili pinlere taktıktan sonra aşşağıdaki kodlarımızı yükleyerek işlemlere başlayalım …
Önemli bir husus ise parmak izi okuyucu 127 kayıt tutuyor hafızasında başka arduinoya da bağlasanız sorun değil çalışıtr kayıtlar hafızada kalır ama en önemli husus şudur ki kayıt için ayrı kod yükleyip bakıyoruz , silmek için ayrı , normal çalışırken ayrı , yani şöyleki birisini kaydedeceğiniz zaman sizden 1 ile 127 arası bir numara girin diyecek ben tedbir olarak her kişiden her iki elinden 2 şer parmak kaydettim mesele 1 dedim bi parmak kaydettim 2 dedim bi parmak kaydettim ve en son girdiğiniz numarayı unutmamanız lazım ki bir sonraki kayda bir önceki numarayı girerseniz önceki kaydın üzerine yazar buna dikkat etmelisiniz
kişi ekleme kodu;
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
uint8_t id;
void setup()
{
Serial.begin(9600);
while (!Serial); // seri haberleşme bekleniyor
delay(100);
Serial.println("\n\nParmak izi sensör kaydı");
// seri haberleşme iletişim hızı
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Parmak izi sensor bulundu!");
} else {
Serial.println("Parmak izi sensor bulunamadi :(");
while (1) { delay(1); }
}
}
uint8_t readnumber(void) {
uint8_t num = 0;
while (num == 0) {
while (! Serial.available());
num = Serial.parseInt();
}
return num;
}
void loop()
{
Serial.println("Parmak izi kayit icin hazir..!");
Serial.println("lutfen kaydetmek istediginiz parmaga gore 1 ile 127 arasi kayıt numarasi giriniz..");
id = readnumber();
if (id == 0) {// ID #0 olmadi tekrar deneyiniz!
return;
}
Serial.print("Kaydedilen ID #");
Serial.println(id);
while (! getFingerprintEnroll() );
}
uint8_t getFingerprintEnroll() {
int p = -1;
Serial.print("dogru kayit icin bekleniyor #"); Serial.println(id);
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Alinan Resim");
break;
case FINGERPRINT_NOFINGER:
Serial.println(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Baglanti hatasi");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Resim hatasi");
break;
default:
Serial.println("Bilinmeyen hata");
break;
}
}
// OK success!
p = finger.image2Tz(1);
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;
}
Serial.println("Remove finger");
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {
p = finger.getImage();
}
Serial.print("ID "); Serial.println(id);
p = -1;
Serial.println("Place same finger again");
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.print(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}
// OK success!
p = finger.image2Tz(2);
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!
Serial.print("Creating model for #"); Serial.println(id);
p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("Prints matched!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("Fingerprints did not match");
return p;
} else {
Serial.println("Unknown error");
return p;
}
Serial.print("ID "); Serial.println(id);
p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Stored!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not store in that location");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");
return p;
} else {
Serial.println("Unknown error");
return p;
}
}
kişi eklemeyi seri ekrandan takip ederek yapıyorsunuz seri ekranda okuyucu hazır yazınca parmağı yaslayıp bir numara yazıp enter ‘a basıp imajı okumasını bekliyorsunuz çekmeyin elinizi iki kere okuyup eklendi dediğinde elinizi çekin ve bir sonraki parmağı yaslayıp numaranızı yazıp enter a basıp okumasını bekleyin ve böylelikle kayıtlarınızı tamamlayınız…
kişi silme kodu ;
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup()
{
Serial.begin(9600);
while (!Serial);
delay(100);
Serial.println("\n\nDelete Finger");
// 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);
}
}
uint8_t readnumber(void) {
uint8_t num = 0;
while (num == 0) {
while (! Serial.available());
num = Serial.parseInt();
}
return num;
}
void loop()
{
Serial.println("Please type in the ID # (from 1 to 127) you want to delete...");
uint8_t id = readnumber();
if (id == 0) {// ID #0 not allowed, try again!
return;
}
Serial.print("Deleting ID #");
Serial.println(id);
deleteFingerprint(id);
}
uint8_t deleteFingerprint(uint8_t id) {
uint8_t p = -1;
p = finger.deleteModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Deleted!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not delete in that location");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");
return p;
} else {
Serial.print("Unknown error: 0x"); Serial.println(p, HEX);
return p;
}
}
kişi silmek için bu kodu yüklemeniz ve seri ekranı açarak silinecek numarayı girip enter a basmanız yeterli olacaktır…
Ana giriş ekranı;
#include <Wire.h>
#include <SoftwareSerial.h>
#include <Adafruit_Fingerprint.h>
#include <LiquidCrystal_I2C.h>
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int role=4;
int kirmizi_led=5;
int yesil_led=6;
int kasa_kilit_durum=0;
//----------------Parmak izi okuyucu tanımlamaları--------------------------
int p=127 ; // kaç kişinin parmak izi tanımlandı ise p değişkeni içeriği o olmalı
int parmak_izi_kisi_sayisi[127]; // dizi uzunluğu p ile aynı olmalı
int alinan_parmakizi;
void setup(){
Serial.begin(9600);
finger.begin(57600);
pinMode(kirmizi_led,OUTPUT);
pinMode(yesil_led,OUTPUT);
pinMode(role, OUTPUT);
digitalWrite(kirmizi_led, HIGH);
digitalWrite(role, LOW);
lcd.begin();
lcd.setCursor(0, 0);
lcd.print("PARMAGINIZI");
lcd.setCursor(0, 1);
lcd.print("SENSORE TUTUNUZ");
for(int i=0;i<p;i++) //Kişi yani tanımlı parmak izi için döngü
{
parmak_izi_kisi_sayisi[i]=(i+1);
}
//--------------Parmak izi okuyucu bulunmaya çalışıyor-----------
while (!Serial);
delay(100);
Serial.println("\n\nSensor Araniyor");
if (finger.verifyPassword()) {
Serial.println("Sensor bulundu!");
} else {
Serial.println("Sensor bulunamadi :(");
while (1) { delay(1); }
}
finger.getTemplateCount();
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
Serial.println("Kayitli Parmaginizi Okutunuz...");
}
void loop(){
//---------------------------------Parmak izi kontrol bölümü----------------------
alinan_parmakizi=getFingerprintIDez();
for(int m=0;m<p;m++)
{
if( alinan_parmakizi == parmak_izi_kisi_sayisi[m]){ //Parmak izi tanımlı ise
kasa_kilit_durum++; //Kasanın açık ve kapalı durumunu takip için
if(kasa_kilit_durum==1){ //kasa kilit durum değişkeni 1 ise
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PARM.IZI TANIMLI");
lcd.setCursor(0, 1);
lcd.print("HOSGELDINIZ");
digitalWrite(role, HIGH);
digitalWrite(yesil_led,HIGH);
digitalWrite(kirmizi_led,LOW);
delay(2000);
digitalWrite(role, LOW);
digitalWrite(yesil_led,LOW);
digitalWrite(kirmizi_led,HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PARMAGINIZI");
lcd.setCursor(0, 1);
lcd.print("SENSORE TUTUNUZ");
kasa_kilit_durum=0;
}
}
}
}
//---------------------------Parmak izi okuma alt programı-----------------------------
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) {
Serial.println("Found a print match!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
return p;
} else {
Serial.println("Unknown error");
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;
}
// returns -1 if failed, otherwise returns ID #
int getFingerprintIDez() {
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;
// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return finger.fingerID;
}
bu ana giriş ekranı bu ekranı kendi isteğinize göre düzenleyebilirsiniz … aşşağıda kütüphane verilmiştir bunu indirmeyi unutmayınız kolay gelsin
https://disk.yandex.com.tr/d/fWJUff9JtvjESw