Биометрический сканер отпечатков пальцев

Тема в разделе "Arduino & Shields", создана пользователем kasumali, 23 ноя 2015.

  1. kasumali

    kasumali Нуб

    Помогите пожалуйста сделать так, чтобы сканер отпечатков пальцев сохранял отпечатки на микроконтроллере а не в своей памяти, и чтобы можно было записать несколько отпечатков а не один. С моим скетчем только 1 отпечаток можно сохранить. Вот скетч:
    Код (C++):
    #include <Adafruit_Fingerprint.h>
    #include <SoftwareSerial.h>
    uint8_t getFingerprintEnroll(int id);
    // pin #2 is IN from sensor (GREEN wire)
    // pin #3 is OUT from arduino  (WHITE wire)
    SoftwareSerial mySerial(2, 3);
    Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
    void setup()
    {
      Serial.begin(9600);
      Serial.println("fingertest");
      // 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);
      }
    }
    void loop()                     // run over and over again
    {
      Serial.println("Type in the ID # you want to save this finger as...");
      int id = 0;
      while (true) {
        while (! Serial.available());
        char c = Serial.read();
        if (! isdigit(c)) break;
        id *= 10;
        id += c - '0';
      }
      Serial.print("Enrolling ID #");
      Serial.println(id);
      while (!  getFingerprintEnroll(id) );
    }
    uint8_t getFingerprintEnroll(int id) {
      int p = -1;
      Serial.println("Waiting for valid finger to enroll");
      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();
      }
      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!
      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. vvr

    vvr Инженерище

    сенсор довольно дорогой и думаю мало кто с ним игрался
     
  3. kasumali

    kasumali Нуб

    это да, но все таки может быть есть возможность. С моим скетчем можно сохранить только один отпечаток, а мне хотя бы 3 отпечатка надо бы сохранить
     
  4. vvr

    vvr Инженерище

    а что на него в даташите написано читали?
    да и библу надо поштудировать
     
  5. kasumali

    kasumali Нуб

    я в Алиэкспресс заказывал, так что никакого даташита не было в комплекте. Есть специальная библиотека для биометрических сканеров, вот ссылка на сайт https://www.adafruit.com/products/751
     
  6. Разберетесь - расскажите, что получилось, пожалуйста. Подписался на тему