Timbratrice con impronta digitale

Da Wikiversità, l'apprendimento libero.
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.