Arduino İle Parmak İzi Okuma ve Oled Ekrana Yazdırma
Merhaba arkadaşlar bir önceki yazımızda parmak izi sensörünün nasıl kullanıldığını öğrenmiştik. Bu yazımızda ise arduino ile parmak izi okuma ve oled ekrana yazdırma işlemini öğreneceğiz. Biz isim yazdıracağız ama isterseniz projeyi daha da geliştirerek resim de göstertebilirsiniz. Parmak izi sensörünün nasıl kullanıldığını bilmiyorsanız aşağıdaki linkten yazımızı okuyabilirsiniz.
Projede kullanılan malzemeler:
Arduino İle Parmak İzi Sensörü ve Oled Ekran Bağlantı Şeması
Aşağıdaki gibi bağlantılarımızı bağlayalım
0,96 inç Oled Ekran Kütüphanesini Yükleme
OLED ekranı kontrol etmek için adafruit_SSD1306.h ve adafruit_GFX.h kütüphanelerine ihtiyacınız var. Bu kütüphaneleri yüklemek için aşağıdaki talimatları izleyin.
- Arduinı IDE’yi açın ve şu yolu takip edin. Taslak > library Ekle > Kütüphaneleri Yönet. Kütüphane Yöneticisi açılmalıdır.
- Arama kutusuna “SSD1306” yazın ve Adafruit’ten SSD1306 kütüphanesini kurun.
- Adafruit’ten SSD1306 kütüphanesini kurduktan sonra, arama kutusuna “GFX” yazıp kütüphaneyi kurun.
- Kütüphaneleri kurduktan sonra Arduino IDE’nizi yeniden başlatın.
Arduino İle Parmak İzi Okuma ve Oled Ekrana Yazdırma Kodu
Kodu yüklemeden önce, farklı kişilerden farklı parmak izleri kaydetmeniz gerekir. Yukarıdaki “Arduino IDE’de Dosya > Örnekler > Adafruit Fingerprint Sensor Library> Enroll” ‘u seçin, Birinci yazımızdaki talimatları izleyerek parmak izlerimizi kaydedin.
Ardından, parmak izi kimlikleri kayıtlı kişilerin adıyla eşleşecek şekilde kodu değiştirin – kodun açıklaması için sayfayı aşağı kaydırın.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int fingerprintID = 0;
String IDname;
void setup(){
//Fingerprint sensor module setup
Serial.begin(9600);
// 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); }
}
//OLED display setup
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
//displays main screen
displayMainScreen();
}
void loop(){
displayMainScreen();
fingerprintID = getFingerprintIDez();
delay(50);
if(fingerprintID == 1 || fingerprintID == 3 || fingerprintID == 4 || fingerprintID == 5){
IDname = "Sara";
displayUserGreeting(IDname);
}
else if(fingerprintID == 2){
IDname = "Rui";
displayUserGreeting(IDname);
}
}
// 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;
}
void displayMainScreen(){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(7,5);
display.println("Waiting fingerprint");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(52,20);
display.println("...");
display.display();
delay(2000);
}
void displayUserGreeting(String Name){
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);
display.print("Hello");
display.setCursor(0,15);
display.print(Name);
display.display();
delay(5000);
fingerprintID = 0;
}
Kodun Açıklaması
Kod, OLED ekranına yazmak için gerekli kitaplıkları içe aktararak başlar ve display adlı bir Adafruit_SSD1306 nesnesi oluşturur.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
Ayrıca parmak izi sensörü için gereken kitaplıkları da içe aktarmamız gerekiyor: Adafruit_Fingerprint.h ve SoftwareSerial.h.
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
Aşağıdaki satır, yazılım serisini pin 2 ve 3’te ayarlar. Pin 2 RX olarak ve Pin 3 TX olarak.
SoftwareSerial mySerial(2, 3);
Ardından daha önce belirlediğimiz seri pinler üzerinde parmak adında bir Adafruit_Fingerprint nesnesi oluşturuyoruz.
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
Sonraki iki satır, parmak izi kimliğini ve kimlik adını tutacak değişkenler oluşturur.
int fingerprintID = 0;
String IDname;
Setup()
setup(), hem parmak izi sensörü hem de OLED ekranı başlatılır. Ayrıca parmak izi sensörünün başarılı bir şekilde bulunup bulunmadığını bilmemiz için seri monitöre bir mesaj yazdırıyoruz.
void setup(){
//Fingerprint sensor module setup
Serial.begin(9600);
// 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); }
}
//OLED display setup
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
//displays main screen
displayMainScreen();
}
Loop()
loop(), kod OLED ekranında ana ekranı görüntüler – bu, displayMainScreen() işlevinde yapılır. Ardından, kod sürekli olarak gelen parmak izlerini kontrol eder. Sensör kaydedilmiş bir parmak izi bulursa, Arduino ilgili kimliği parmak izi kimliği değişkenine kaydeder.
Ardından, parmak izinin karşılık geldiği kimliği kontrol etmek için kodun bir if/else ifadesi vardır. Aşağıdaki kod satırlarını ilgili kimlikler ve adlarla düzenlemelisiniz.
if(fingerprintID == 1 || fingerprintID == 3 || fingerprintID == 4 || fingerprintID == 5){
IDname = "Sara";
displayUserGreeting(IDname);
}
else if(fingerprintID == 2){
IDname = "Rui";
}
Bazen sensör, farklı kimliklerde birkaç kez kaydedilirse bir parmak izini daha iyi tanır. Kimlik adını belirledikten sonra, OLED bir selamlama görüntüler. Bu, displayUserGreeting() işlevinde yapılır,
Evet arkadaşlar kodumuzu da tamamladığımıza göre test ettiğimizde aşağıdaki gibi gözükmesi gerekmektedir.