Дешевый сканер отпечатка пальца для самоделок AS608

Дешевый сканер отпечатка пальца для самоделок AS608 Ремонт

  • Стоимость: $7.85 + $0.95 за доставку

Всем хорошего денька. Брал я для себя на поиграться вот такую штукенцию. Что из этого вышло — под катом.

Устройство приехало в Украину за две недельки, в обыкновенном желтоватом пакете.

Дешевый сканер отпечатка пальца для самоделок AS608 Ремонт

Дешевый сканер отпечатка пальца для самоделок AS608 Ремонт

К огорчению, комфортных ушек для крепления — не предвидено.

Комплектация — фактически устройство и косичка проводов.

Дешевый сканер отпечатка пальца для самоделок AS608 Ремонт

Чтоб получить от устройства пользу, необходимо уметь программировать Arduino.

Компания Adafruit предлагает такие же устройства, но тут, похоже, китайский клон, потому что цветовая маркировка проводов не совпадает с ее описанием.

С данной страницы качаем библиотеку Adafruit-Fingerprint-Sensor-Library-master. Софтинку под Windows, SFGdemo, скачать не удалось, я отыскал ее здесь.

Я отыскал весьма неплохую статью на русском языке, все делал по ней, с некими ньюансами.

Сначала качаем программку SFGdemo, устанавливаем библиотеку под ардуино.

Как сказано в статье выше, загружаем в ардуино пример blank из библиотеки. При заливке скетча, сканер должен быть отключен.

У моего модуля цвета проводов не соответствуюм примерам из статьи, но есть надписи на плате.

Подключаем таковым образом: Питание +3,3В на красноватый провод. Темный — GND. Желтоватый (TX) — 1 пин ардуино, белоснежный (RX) — на 0 пин. Питание — конкретно 3,3В. От 5-ти — устройство не сгорает, но не разговаривает с наружным миром.

TX и RX не спутаны, мы просто используем плату ардуино, как USB — UART переходник. Атмега крутит для себя пустой скетч, и не мешает общению сканера и софта.

Запускаем SFGdemo.

У меня програма не желала объединятся с устройством. Опосля переназначения в диспетчере устройств номера СОМ порта с 15 на 7 — все заработало.

Все изображения отпечатков — хранятся конкретно в сканере. Устройство может уяснить 162 отпечатка. Для записи их — служит клавиша Enroll. Сначала необходимо присвоить отпечатку номер и по запросу софта — два раза приложить палец. Программка выдаст сообщение о успехе либо ошибке. Программировать отпечатки можно лишь на приборе, снаружи передать — недозволено.

Я записал указательный, большенный и безымянный пальцы, соответственно под номера 1, 2, 3.

Для проверки — необходимо надавить клавишу Search и приложыть палец. Программка выдаст соответственный ему номер.

Все работает, определение занимает наименее половины секунды.

Палец можно прикладывать в хоть какой ориентации. Основное — что бы по центру окошка. Определение — размеренное и без неверное.

Сейчас — давайте извлечем из аксессуара пользу.

Из примеров библиотеки, открываем fingerprint. Смотрим, и сходу закоментируем строчку 89. Программка работает через монитор порта, и неизменные сообщения о том, что палец не найден, нам ни к чему, мы и так это знаем :)

Перекидываем желтоватый (TX) — на 2 пин ардуино, белоснежный (RX) — на 3 пин. Загружаем скетч и запускаем монитор порта.

Сейчас, при прикладывании зарегистрированого пальца, выдается его номер. Либо же сообщение о ошибке либо не зарегистрированом пальце.

Сейчас — наиболее жив пример. Создадим так, что бы при прикладывании незарегистрированого пальца зажигался красноватый светодиод, а зарегистрированого — зеленоватый. Не считая того, пусть на 1-ый палец зажигается еще голубий, на 2-ой — желтоватый, на 3-ий — белоснежный, а на 4-ый — голубий, желтоватый и белоснежный — меркнут.

Необходимо зарегистрировать еще 4-й (мизинец) и 5-й (большенный) пальцы.

Для этого — загружаем из примеров Enroll и включаем монитор порта, через него и будет общение. Сейчас вводим по порядку номера и, по запросу, регистрируем пальчики. Здесь же в монитор выпадут сообщения о успехе, либо ошибке.

Сейчас собираем схемку и вливаем скетч.

Дешевый сканер отпечатка пальца для самоделок AS608 Ремонт

Красноватый светодиод — на 5, зеленоватый — 4, голубий — 8, желтоватый — 7, белоснежный — 6.

Скетч

#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>

int getFingerprintIDez();

int GreenLed = 4;
int RedLed = 5;
int WhiteLed = 6;
int YellowLed = 7;
int BlueLed = 8;


// pin #2 is IN from sensor (YELLOW wire)
// pin #3 is OUT from arduino  (WHITE wire)

SoftwareSerial mySerial(2, 3);  //activates serial communication on pin 2 & 3

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

void setup()
{
  pinMode(GreenLed, OUTPUT); 
  pinMode(RedLed, OUTPUT);  
  pinMode(WhiteLed, OUTPUT); 
  pinMode(YellowLed, OUTPUT);  
  pinMode(BlueLed, OUTPUT);  

  digitalWrite(RedLed, HIGH);

  Serial.begin(9600);

  finger.begin(57600);
  delay(5);
  if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
  } else {
    Serial.println("Did not find fingerprint sensor :(");
    while (1) { delay(1); }
  }
}

void loop() 
{
  getFingerprintID();
  delay(100);
}

uint8_t getFingerprintID()
{
  uint8_t p = finger.getImage();

  switch (p)
  {
    case FINGERPRINT_OK:
      break;
    case FINGERPRINT_NOFINGER:
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      return p;
    case FINGERPRINT_IMAGEFAIL:
      return p;
    default:
      return p;
  }

  p = finger.image2Tz();
  switch (p)
  {
    case FINGERPRINT_OK:
      break;
    case FINGERPRINT_IMAGEMESS:
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      return p;
    case FINGERPRINT_FEATUREFAIL:
      return p;
    case FINGERPRINT_INVALIDIMAGE:
      return p;
    default:
      return p;
  }

  // match finger with stored ID#
  p = finger.fingerFastSearch();
  if (p == FINGERPRINT_OK)
  {
    digitalWrite(GreenLed, HIGH);  //turn on green LED if finger ID is match
    digitalWrite(RedLed, LOW);  //red LED is OFF
    Serial.print("Found ID # "); Serial.println(finger.fingerID);
    ShowID(finger.fingerID);
  }
  else if (p == FINGERPRINT_NOTFOUND)
  {
    digitalWrite(GreenLed, LOW); //turn off green LED if finger do not match
    digitalWrite(RedLed, HIGH);  //red LED is ON
    Serial.println("Finger not registered");
  }
  else
  {
    return p;
  }
}

// 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;

  //return finger.fingerID);
}

void ShowID(char data)
  {
    switch (data)
      {
        case 1: digitalWrite(BlueLed, HIGH); break;
        case 2: digitalWrite(YellowLed, HIGH); break;
        case 3: digitalWrite(WhiteLed, HIGH); break;
        case 4: digitalWrite(BlueLed, LOW); digitalWrite(YellowLed, LOW); digitalWrite(WhiteLed, LOW); break;
      }
  }

Скетч взят из примера, я еще не вникал в большая часть его функций.

Сейчас — играемся.

Если палец не записан в сканере — работают эти строчки:


    digitalWrite(GreenLed, LOW); //turn off green LED and Relay if finger do not match
    digitalWrite(RedLed, HIGH);  //red LED is ON
    Serial.println("Finger not registered");

Если записан — эти:


    digitalWrite(GreenLed, HIGH);  //turn on green LED and Relay if finger ID is match
    digitalWrite(RedLed, LOW);  //red LED is OFF
    Serial.print("Found ID # "); Serial.println(finger.fingerID);
    ShowID(finger.fingerID);

Заместо их — сможете прописать свои команды.

Здесь же получаем номер пальца и вызываем, в даном примере, процедурку:


void ShowID(char data)
  {
    switch (data)
      {
        case 1: digitalWrite(BlueLed, HIGH); break;
        case 2: digitalWrite(YellowLed, HIGH); break;
        case 3: digitalWrite(WhiteLed, HIGH); break;
        case 4: digitalWrite(BlueLed, LOW); digitalWrite(YellowLed, LOW); digitalWrite(WhiteLed, LOW); break;
      }
  }

Тут и оперируем светодиодами, как я и желал :)

Полезные материалы: руководство на английском, мануал по подключению, даташит на AS608.

А я пока наигрался и добыл из устройства основной функционал.

Сканер может отправится на полочку и ожидать собственного проекта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

семнадцать − 3 =