Timbratrice con impronta digitale

laboratorio
laboratorio
Timbratrice con impronta digitale
Tipo di risorsa Tipo: laboratorio
Materia di appartenenza Materia: Sistemi automatici per le superiori 2
Avanzamento Avanzamento: laboratorio completa al 25%

Descrizione del progetto modifica

Questo progetto ha lo scopo di riconoscere e far passare un dipendente in un luogo di lavoro.

Ogni dipendente ovviamente possiede una propria impronta digitale che sarà esclusivamente legata al dipendente stesso.

Questo permetterà allo stesso di poter effettuare le operazioni di accesso al luogo di lavoro, alla fase di timbratura del cartellino ed inoltre eviterà eventuali tentativi di broglio oppure eviterà l'ingresso in azienda a personale non autorizzato.

Il funzionamento sarà quindi collegato al riconoscimento dell'impronta di un dito (pollice); se l'impronta risulterà tra quelle inserite nel database e risulterà corretta si accenderà una luce verde e verrà emesso un suono primario, mentre se l'impronta risulterà errata oppure con accesso negato si accenderà la luce rossa e verrà emesso un suono secondario ovvero un suono che identificherà un errore.

Tale progetto può essere ampliato dotando l'azienda di porte di accesso automatiche, anche esse permetteranno l'accesso solo a personale che ha effettuato il riconoscimento digitale mediante impronta.

Cenni teorici modifica

Per la realizzazione di questo progetto abbiamo utilizzato un sensore ad impronta digitale, Il suo funzionamento è semplice, genera un'immagine delle creste e delle linee che costituiscono un'impronta digitale, ma invece di farlo attraverso una luce, avviene attraverso una corrente elettrica.

Componenti modifica

In questo progetto abbiamo utilizzato diversi componenti che possiamo trovare nella tabella sottostante:

Elenco componenti
Componente Descrizione Q.tà
SG035 Display lcd 1
AS608 Impronta digitale 1
\\\\\\\\\\\\\\\\\\\\\ Led rosso 1
\\\\\\\\\\\\\\\\\\\\\\ Led verde 1
\\\\\\\\\\\\\\\\\\\\\\ Cicalino 1
\\\\\\\\\\\\\\\\\\\\\\ Resistenze 2
\\\\\\\\\\\\\\\\\\\\\\ Jumper \\
PC16 Potenziometro 1

Schema di montaggio modifica

Codice modifica

//Display lcd
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);

//Fingerprint
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial serial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&serial);

//Variabili
int fingerId;
String nameId = "";

//Leds
const int l_green = 10, l_red = 9;

void setup() {
  //Debug
  Serial.begin(9600);
  
  //Display
  lcd.begin(16, 2);
  lcd.print("Benvenuto");

  //Fingerprint
  finger.begin(57600);
  if(finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor");
  } else {
    Serial.println("Fingerprint sensor not found :/");
    lcd.clear();
    lcd.print("Error");
    while(1) { delay(1); }
  }

  //Leds
  pinMode(l_green, OUTPUT);
  pinMode(l_red, OUTPUT);
}

//Read fingerprint
int ReadFinger() {
  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 -2; }
  return finger.fingerID;
}

void onSuccess() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Benvenuto");
  lcd.setCursor(0, 1);
  lcd.print(nameId);
  if(nameId == "Sconosciuto") {
    digitalWrite(l_red, HIGH);
  } else {
    digitalWrite(l_green, HIGH);
  }
  delay(1000);
  digitalWrite(l_red, LOW);
  digitalWrite(l_green, LOW);
}

void loop() {
  fingerId = ReadFinger();
  switch(fingerId) {
    case 1:
      nameId = "Andrea Piergiovanni";
      break;
    case 2:
      nameId = "Matteo Coccia";
      break;
    default:
      nameId = "Sconosciuto";
      break;
  }
  if(fingerId != -1) {
    onSuccess();
  }
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Benvenuto");
  delay(100);
}

Espansioni suggerite modifica

In futuro potremmo ampliare in nostro progetto aggiungendo un motore per l'apertura di una eventuale porta.