Arduino Lesson: Adafruit Fingerprint

June 22nd, 2014  Posted at   Lesson Arduino
arrow   |   9 Commentsarrow

Adafruit Fingerprint

Adafruit Fingerprint adalah model fingerprint reader yang lain. Interface Adafruit Fingerprint dengan PIC boleh rujuk PIC Lesson: Adafruit Fingerprint.

Sambungan wayar adalah seperti berikut

  • Merah = 5V
  • Hitam = GND
  • Putih = TX
  • Hijau = RX

Berikut adalah demo Adafruit Fingerprint

Arduino Source Code

VB Source Code

9 Responses to “Arduino Lesson: Adafruit Fingerprint”

  1. rasyid says:

    Asalamualaikum. saya nk tnye sye guna adafruit fingrprint ni sekali dgn arduino. tapi masa try nk enrol kat serial monitor dia tulis “unknown error”. sye try troubleshoot dpt tahu yg error kat “p=finger.create.Model() ;”mcm mne nk fix prob ni ye. please tlong

    ni code nye:

    #include
    #include

    uint8_t id;

    uint8_t getFingerprintEnroll();

    // Software serial for when you dont have a hardware serial port
    // pin #2 is IN from sensor (GREEN wire)
    // pin #3 is OUT from arduino (WHITE wire)
    // On Leonardo/Micro/Yun, use pins 8 & 9. On Mega, just grab a hardware serialport
    SoftwareSerial mySerial(2, 3);
    Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

    // On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white
    //Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial1);

    void setup()
    {
    while (!Serial); // For Yun/Leo/Micro/Zero/…
    delay(500);

    Serial.begin(9600);
    Serial.println(“Adafruit Fingerprint sensor enrollment”);

    // 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;
    boolean validnum = false;
    while (1) {
    while (! Serial.available());
    char c = Serial.read();
    if (isdigit(c)) {
    num *= 10;
    num += c – ‘0’;
    validnum = true;
    } else if (validnum) {
    return num;
    }
    }
    }

    void loop() // run over and over again
    {
    Serial.println(“Ready to enroll a fingerprint! Please Type in the ID # you want to save this finger as…”);
    id = readnumber();
    Serial.print(“Enrolling ID #”);
    Serial.println(id);

    while (! getFingerprintEnroll() );
    }

    uint8_t getFingerprintEnroll() {

    int p = -1;
    Serial.print(“Waiting for valid finger to enroll as #”); Serial.println(id);
    while (p != FINGERPRINT_OK) {
    p = finger.getImage();
    switch (p) {
    case FINGERPRINT_OK:
    Serial.println(“Image taken”);
    break;
    case FINGERPRINT_NOFINGER:
    Serial.println(“.”);
    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(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;
    }
    }

  2. amin says:

    Salam bro. Macam mana nak save Fingerprint mengikut ID yang kita hendak.
    saya ada masalah dengan serial.read sebab apa yang saya nampak ID tu generate hasil dr

    id=Serial.read()-‘0’;
    id=10*id + Serial.read()-‘0’;
    id=10*id + Serial.read()-‘0’;

    Saya dah cuba bermacam cara untuk bg input id dr string menjadi integer.
    tetap tak menjadi. Harap bro dapat terangkan serba sedikit.

    atau mungkin ada cara untuk kita refresh serial.read baru untuk gantikan serial.read yang lama??

  3. abdu hadi says:

    salam bro..bole x bro bg procedure untuk vb code ni?

  4. Bob says:

    Ada jual tak fingerprint module yang ini?

Leave a Reply

What is 2 + 12 ?
Please leave these two fields as-is:
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)