Биометрический замок – настройка сканера и программирование микроконтроллера

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

Этап 6: настройка сканера отпечатков пальцев

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

Для создания связи с датчиком отпечатков, была использована инструкция Arduino library от Джоша Хоули (прямая загрузка инструкции здесь).

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

Датчик отпечатков пальцев имеет собственную память для хранения отсканированных снимков. Так что после того, как датчик начнет работать, загрузите этот файл регистрации эскизов, добавив его в базу данных отпечатков пальцев под адресом 0. Откройте на компьютере консоль управления и следуйте всплывающим подсказкам.

Коды – Blink Example:

/* Library example for controlling the GT-511C3 Finger Print Scanner (FPS)
 */
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
//Hardware setup - FPS connected to:
//digital pin 10(arduino rx, fps tx)
//digital pin 11(arduino tx - 560ohm resistor fps tx - 1000ohm resistor - ground)
//this brings the 5v tx line down to about 3.2v so we dont fry our fps
FPS_GT511C3 fps(10, 11);
void setup(){
  Serial.begin(9600);
  fps.UseSerialDebug = true; // so you can see the messages in the serial debug screen
  fps.Open();
}
void loop(){
  // FPS Blink LED Test
  fps.SetLED(true); // turn on the LED inside the fps
  delay(1000);
  fps.SetLED(false);// turn off the LED inside the fps
  delay(1000);
}

Коды – Enroll Example: 

/* 
 FPS_Enroll.ino - Library example for controlling the GT-511C3 Finger Print Scanner (FPS)
 */
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
//Hardware setup - FPS connected to:
//digital pin 10(arduino rx, fps tx)
//digital pin 11(arduino tx - 560ohm resistor fps tx - 1000ohm resistor - ground)
//this brings the 5v tx line down to about 3.2v so we dont fry our fps
FPS_GT511C3 fps(10, 11);
void setup(){
  Serial.begin(9600);
  delay(100);
  fps.Open();
  fps.SetLED(true);
  Enroll();
}
void Enroll(){
  // Enroll test
  // find open enroll id
  int enrollid = 0;
  fps.EnrollStart(enrollid);
  // enroll
  Serial.print("Press finger to Enroll #");
  Serial.println(enrollid);
  while(fps.IsPressFinger() == false) delay(100);
  bool bret = fps.CaptureFinger(true);
  int iret = 0;
  if (bret != false)
  {
    Serial.println("Remove finger");
    fps.Enroll1(); 
    while(fps.IsPressFinger() == true) delay(100);
    Serial.println("Press same finger again");
    while(fps.IsPressFinger() == false) delay(100);
    bret = fps.CaptureFinger(true);
    if (bret != false)
    {
      Serial.println("Remove finger");
      fps.Enroll2();
      while(fps.IsPressFinger() == true) delay(100);
      Serial.println("Press same finger yet again");
      while(fps.IsPressFinger() == false) delay(100);
      bret = fps.CaptureFinger(true);
      if (bret != false)
      {
        Serial.println("Remove finger");
        iret = fps.Enroll3();
        if (iret == 0)
        {
          Serial.println("Enrolling Successfull");
        }
        else
        {
          Serial.print("Enrolling Failed with error code:");
          Serial.println(iret);
        }
      }
      else Serial.println("Failed to capture third finger");
    }
    else Serial.println("Failed to capture second finger");
  }
  else Serial.println("Failed to capture first finger");
}
void loop(){
  delay(100000);
}

Файл синхронизации:

FPSBlinkExample.ino

Файл регистрации эскизов:

FPSEnrollExample.ino

Этап 7: программирование процессора ATtiny85

программирование процессора ATtiny85

Микрочип ATtiny85 стоит дешево, и полностью совместим с платой Arduino, наверное, он самая лучшая электродеталь из когда-либо созданных!

Программатор Arduino также нужен, чтобы перепрошить микросхему ATmega328, которая управляет работой ЖК-дисплея.

В собираемом устройстве процессор ATtiny будет выполнять очень простые команды: проверять наличие сигнала от ATmega и открывать дверь гаража, когда сигнал будет подтвержден.

Чтобы запрограммировать работу процессора, его надо подключить при помощи макетной платы к программатору вместе с конденсатором 10 мкФ, как показано на картинке ниже.

А затем загрузить окончательный код и следовать рекомендациям инструкции от High-Low Tech.

программирование процессора ATtiny85

После загрузки окончательного кода, выход 13 на плате Arduino, соединённый со светодиодом, нужно перевести в состояние HIGH для отслеживания работы по световой индикации.

Окончательный код для ATtiny:

 //fpsAttiny by Nodcah
//Recieves a brief signal from the main module to close a relay
void setup(){
  pinMode(2,OUTPUT); //indicator led through 10K resistor
  pinMode(4,OUTPUT); //trasistor pin that opens the garage
  pinMode(0,INPUT); //input 
  delay(500); //give things time to start up
  digitalWrite(2, HIGH); //indicator LED
}
void loop(){
  if(digitalRead(0)){ //simple pattern to trigger the transistor 
    delay(125);
    if(digitalRead(0)==false){ 
      delay(55); //the timings are off because the ATtiny's timer isn't perfect
      if(digitalRead(0)){
        delay(55);
        if(digitalRead(0)==false){ 
          delay(55);
          if(digitalRead(0)){
            delay(55);
            if(digitalRead(0)==false){
              digitalWrite(4, HIGH); //transistor "presses" the button
              delay(1000);
              digitalWrite(4,LOW);
              digitalWrite(2,LOW);
              delay(1000);
              digitalWrite(2, HIGH);
            }
          }
        }
      } 
    }
  }
}

FPSGarageAttiny.ino

ПРЕДЫДУЩИЙ ЭТАПСборка платы управления и программирование микроконтроллера

ДАЛЕЕ: Этап 8 / 9 / 10: Окончательный код для ATmega328 / вырезание крышки на 3D принтере / Подготовка гаража

 


 


Понравилась статья? Поделиться с друзьями:
Комментариев: 2
  1. Виталий

    Здравствуйте.
    У меня в наличие есть сканер сКАНЕР. Можно ли им воспользоваться? Какие библиотеки я должен использовать?

    1. Admin (автор)

      Здравствуйте. Это потребует довольно многих изменений в коде, описанном на этапе 8, но это возможно! Пожалуйста, поделитесь, если вы в конечном итоге разберетесь !!! = D вот код.

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

три × один =