Arduino Uno ile parmak izi ile açılan kasa nasıl yapılır?

Gorkem461

Hectopat
Katılım
17 Ağustos 2018
Mesajlar
542
Çözümler
1
Arkadaşlar bir proje yapmam gerek ama yazdığım kodlar bir türlü çalışmıyor aslında çalışıyor ama parmak izi sensörü işini yapmıyor. Öncelikle ChatGPT'ye ne yazdığımı bağlantı şemalarını paylaşayım;

Merhaba benim bir proje yapmam gerek. Projenin konusu parmak izi ile açılan bir kasa. Elimde bulunan malzemeler ise 1 adet Arduino Uno, 1 adet servo motor, 1 adet ortak katot RGB LED, 1 adet AS608 parmak izi sensörü, 1 adet de 2 pinli push buton. Proje şu şekilde olmalı; Arduino'ya güç verildiğinde parmak izi sensörü parmak kaydetme modunda olmalı, parmak izi sensörüne parmağımı okuttuğumda okutulan parmağın verisini Arduino'ya kaydetmeli ve parmak izi kaydetme modu aktifken LED mavi yanmalı parmak izi başarıyla kaydedildiği zaman mavi LED 2 saniye boyunca yarım saniye aralıklarla yanıp sönmeli ve sonra eski haline dönmeli. Daha sonra butona 1 kez basıldığında LED'in rengi kırmızıya dönmeli bunun anlamı parmak izi sensörünün parmak silme moduna geçtiğidir. Bu mod aktifken sensöre okutulan parmağın verisi Arduino'dan silinmelidir. Silme işlemi başarıyla tamamlanınca kırmızı LED 2 saniye boyunca yarım saniye aralıklarla yanıp sönmeli ve sonra eski haline geri dönmeli. Butona 1 kez daha basıldığında LED yeşile dönmeli bunun anlamı parmak izi sensörünün parmak tanımlama moduna geçtiğidir. Bu modda parmak izi sensörüne okutulan parmak eğer belleğe kayıtlı ise parmağı tanıyıp, servo motoru tam tersi yönüne çevirerek kilidi açmalıdır. Eğer okutulan parmak izi sisteme kayıtlı değil ise yeşil LED 2 saniye boyunca yarım saniye aralıklarla yanıp sönmeli ve tekrar eski haline döndüğünde parmak tanımlama modundan devam etmeli. Butona 1 kez daha basıldığında ise tekrardan başa yani parmak kaydetme moduna geçiş yapmalı. Yani butona her basıldığında modlar arası geçiş olmalı. Projenin bağlantılarını nasıl yapmalıyım bana onu söyle ve projede kullanmam gereken kodun tamamını bana ver.

ChatGPT'ye bunu yazdım ve bana bu bağlantıları ve kodları verdi;

Bağlantılar:

parmak izi sensörü:
Vcc -> 5V.
Gnd -> gnd.
Tx -> pin 3
RX -> pin 2

Servo motor:
Sarı tel -> 9. pin.
Kırmızı tel -> 5V.
Kahverengi tel -> gnd.

Ortak katot RGB LED:
Kırmızı pin -> pin 6
Yeşil pin -> pin 7
Mavi pin -> pin 8
Katot (uzun bacak) -> gnd

Kodlar:

Kod:
#include <Servo.h>
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>

#define SERVO_PIN 9
#define BUTTON_PIN 10.
#define LED_RED 6
#define LED_GREEN 7
#define LED_BLUE 8
#define LED_DELAY 500.

SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

Servo myservo;

enum Mode {
 ENROLL_MODE,
 DELETE_MODE,
 IDENTIFY_MODE.
};

Mode currentMode = ENROLL_MODE;

void setup() {
 Serial.begin(9600);
 while (!Serial);

 finger.begin(57600);
 pinMode(BUTTON_PIN, INPUT_PULLUP);
 pinMode(LED_RED, OUTPUT);
 pinMode(LED_GREEN, OUTPUT);
 pinMode(LED_BLUE, OUTPUT);

 myservo.attach(SERVO_PIN);
 setColor(0, 0, 255); // Blue LED on startup.
}

void loop() {
 if (digitalRead(BUTTON_PIN) == LOW) {
 switchMode();
 delay(500); // Debounce delay.
 }

 switch (currentMode) {
 case ENROLL_MODE:
 enrollMode();
 break;
 case DELETE_MODE:
 deleteMode();
 break;
 case IDENTIFY_MODE:
 identifyMode();
 break;
 }
}

void switchMode() {
 currentMode = static_cast<Mode>((currentMode + 1) % 3);
 switch (currentMode) {
 case ENROLL_MODE:
 setColor(0, 0, 255); // Blue LED.
 break;
 case DELETE_MODE:
 setColor(255, 0, 0); // Red LED.
 break;
 case IDENTIFY_MODE:
 setColor(0, 255, 0); // Green LED.
 break;
 }
}

void setColor(int red, int green, int blue) {
 analogWrite(LED_RED, red);
 analogWrite(LED_GREEN, green);
 analogWrite(LED_BLUE, blue);
}

void enrollMode() {
 uint8_t id;
 if (finger.getImage()) {
 if (finger.image2Tz(1) == FINGERPRINT_OK) {
 if (finger.createModel() == FINGERPRINT_OK) {
 if (finger.storeModel(id) == FINGERPRINT_OK) {
 Serial.println("Fingerprint enrolled successfully!");
 for (int i = 0; i < 4; i++) {
 setColor(0, 0, 255); // Blue LED blink.
 delay(LED_DELAY);
 setColor(0, 0, 0);
 delay(LED_DELAY);
 }
 } else {
 Serial.println("Error storing fingerprint!");
 }
 } else {
 Serial.println("Error creating model!");
 }
 } else {
 Serial.println("Error converting image!");
 }
 }
}

void deleteMode() {
 if (finger.deleteModel(1) == FINGERPRINT_OK) {
 Serial.println("Fingerprint deleted successfully!");
 for (int i = 0; i < 4; i++) {
 setColor(255, 0, 0); // Red LED blink.
 delay(LED_DELAY);
 setColor(0, 0, 0);
 delay(LED_DELAY);
 }
 } else {
 Serial.println("Error deleting fingerprint!");
 }
}

void identifyMode() {
 if (finger.getImage()) {
 if (finger.image2Tz(1) == FINGERPRINT_OK) {
 if (finger.fingerFastSearch() == FINGERPRINT_OK) {
 Serial.println("Found fingerprint match!");
 myservo.write(0); // Unlock.
 delay(2000); // Wait for 2 seconds.
 myservo.write(90); // Lock.
 } else {
 Serial.println("Fingerprint not found!");
 for (int i = 0; i < 4; i++) {
 setColor(0, 255, 0); // Green LED blink.
 delay(LED_DELAY);
 setColor(0, 0, 0);
 delay(LED_DELAY);
 }
 }
 }
 }
}

Kodları yapıştırıp denediğimde her butona bastığımda LED'lerin renkleri değişiyor fakat parmak izi sensörüne parmak okuttuğumda hiçbir şey olmuyor. Arduino IDE programının Serial monitor kısmında parmak kaydetme ve silme modlarında error deleting fingerprint! Error converting image! hatalarını alıyorum yani modlar arası geçiyor ama sensör parmak okumuyor. Kodlama bilgim olmadığından bir türlü sorunu çözemedim sizce bunu nasıl düzeltirim?
 

Dosya Ekleri

  • Ekran görüntüsü 2024-03-08 172518.jpg
    Ekran görüntüsü 2024-03-08 172518.jpg
    157,4 KB · Görüntüleme: 25
Kartınızın tx-RX pinlerine bakın. Sensörün tx PIN'i kartınızın RX pinine sensörün RX PIN'i kartınızın tx pinine bağlı olmalıdır.

Hocam sensörlerin kütüphanesini indirdiniz mi?

Sensörlerin kütüphanesi yüksek ihtimalle yüklüdür aksi taktirde yükleme yapmaz.
 
Kartınızın tx-RX pinlerine bakın. Sensörün tx PIN'i kartınızın RX pinine sensörün RX PIN'i kartınızın tx pinine bağlı olmalıdır.

Sensörlerin kütüphanesi yüksek ihtimalle yüklüdür aksi taktirde yükleme yapmaz.

Kütüphaneler yüklü bağlantılarda da bir problem yok gibi çünkü sadece sensörü bağlayıp çalıştırabiliyorum. Sanırım kodlar sorunlu.
 

Yeni konular

Geri
Yukarı