Bu projede, Arduino Uno mikrodenetleyicisi kullanılarak optik bir parmak izi sensörü ve I2C arabirimli bir OLED ekran aynı anda entegre edilmiştir. Parmak izi okuma, kaydetme ve doğrulama işlemleri yapılırken sonuçlar anlık olarak OLED ekran üzerinde grafiksel ve metinsel olarak gösterilir.

Görseldeki devre şemasına göre Arduino Uno, OLED ekran ve parmak izi sensörü arasındaki bağlantı haritası şu şekildedir:
| Bileşen | Bileşen Pini | Arduino Uno Pin | İşlev / Açıklama |
|---|---|---|---|
| OLED Ekran (I2C) | GND | GND | Toprak Hattı (Siyah Kablo) |
| VDD / VCC | 5V | Güç Beslemesi (Kırmızı Kablo) | |
| SCK (SCL) | A5 | I2C Saat Sinyali (Sarı Kablo) | |
| SDA | A4 | I2C Veri Sinyali (Beyaz Kablo) | |
| Parmak İzi Sensörü | GND | GND | Toprak Hattı (Siyah Kablo) |
| VCC | 5V | Güç Beslemesi (Kırmızı Kablo) | |
| TX | Pin 2 | SoftwareSerial RX (Mavi Kablo) | |
| RX | Pin 3 | SoftwareSerial TX (Yeşil Kablo) |
SoftwareSerial kütüphanesi ile Pin 2 ve Pin 3 yazılımsal seri port olarak atanmıştır.
Aşağıdaki C++ kodu, parmak izi sensöründen okuma yapar ve sonucu I2C OLED ekrana yansıtır:
#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SoftwareSerial.h>
#include <Adafruit_Fingerprint.h>
// OLED Ekran Ayarları
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Parmak İzi Seri Haberleşme (Pin 2: RX, Pin 3: TX)
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup() {
Serial.begin(115200);
delay(100);
// OLED Ekranı Başlat
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 OLED Başlatılamadı!"));
while(1);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 10);
display.println("Parmak Izi Sistemi");
display.display();
delay(2000);
// Parmak İzi Sensörünü Başlat
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Parmak izi sensörü başarıyla bulundu!");
} else {
Serial.println("Parmak izi sensörü bulunamadı! Bağlantıları kontrol edin.");
while (1) { delay(1); }
}
}
void loop() {
display.clearDisplay();
display.setCursor(0, 0);
display.println("Parmak bekleniyor...");
display.display();
// Parmak tarama fonksiyonu
int p = finger.getImage();
if (p == FINGERPRINT_OK) {
p = finger.image2Tz();
if (p == FINGERPRINT_OK) {
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
// Eşleşme Başarılı
display.clearDisplay();
display.setCursor(0, 10);
display.println("Giris Basarili!");
display.print("ID: ");
display.println(finger.fingerID);
display.display();
delay(2000);
} else {
// Eşleşme Bulunamadı
display.clearDisplay();
display.setCursor(0, 10);
display.println("Eslenmedi / Kayitsiz");
display.display();
delay(2000);
}
}
}
delay(50);
}
Henüz yorum yapılmamış. İlk yorumu siz yapın!