J’ai réalisé un petit coffre à ouverture par empreinte digitale dans un meuble ikea, pour me permettre de stoker les télécommandes, les manettes de console et les téléphones, afin de ne pas les laisser tous le temps à disposition de mes enfants. Je vous détail se montage et les composants utilisés.

Les composants

Je vous liste les composants que j’ai utilisé avec un lien pour les commander.

Le schéma du montage

Voici le schéma de montage.

Notez bien que j’ai soudé l’alimentation électrique (fil rouge) de la serrure solénoïde sur l’alimentation de l’arduino afin d’avoir du 9 Volts.

Ajouter la bibliothèque fingerprint

Afin de pouvoir gérer le lecteur d’empreinte digital avec l’arduino, il est nécessaire d’ajouter une bibliothèque à l’IDE arduino, de la manière suivante :

Menu Croquis > Inclure une bibliothèque > Gérer les bibliothèques

Saisissez Fingerprint dans le champ de recherche puis cliquez sur le bouton Installer pour la bibliothèque Adafruit Fingerprint Sensor Library

Enregistrer les empreintes

Il faut comprendre qu’il faut d’abord enregistrer les empreintes dans le lecteur d’empreinte pour ensuite pouvoir l’utiliser avec notre programme que nous verrons plus loin. Pour cela, vous avez un programme d’exemple livré avec la bibliothèque :

Menu Fichier > Exemples > Adafruit Fingerprint Sensor Library > enroll

Vous pouvez maintenant le Téléverser sur l’arduino et suivre les indications sur le moniteur série pour enregistrer les scan d’empreintes dans le lecteurs d’empreinte.

Le programme présent sur l’arduino

Vous disposez aussi d’un exemple nommé fingerprint dans la bibliothèque du lecteur d’empreinte et c’est de ce programme dont je me suis inspiré et d’une vidéo de The Wrench.

Voici le programme en C que j’utilise :



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

int getFingerprintIDez();

// Déclaration pins de connexions
int pinRelay =12;
int pinFPS = 8;

// Déclaration compteur
int count = 0;

// 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("Test empreinte");
  
  // SET PIN AS OUTPUT
  pinMode(pinRelay, OUTPUT);
  pinMode(pinFPS, OUTPUT);
  
  //ACTIVATE THE FPS TRANSISTOR
  digitalWrite(pinFPS,HIGH);

  // set the data rate for the sensor serial port
  finger.begin(57600);
  
  if (finger.verifyPassword()) {
    Serial.println("Trouvez le capteur empreintes digitales !");
  } else {
    Serial.println("Pas de capteur empreintes digitales :(");
    while (1);
  }
  Serial.println("En attente doigt valide...");
}

void loop()
{
  getFingerprintIDez();
  delay(50); // Vitesse clignotement de la led du lecteur empreinte
  
  
  // Afficher les informations de la configuration du compteur
  Serial.print("Awake for ");
  Serial.print(count);
  Serial.println("sec");
  count++;
  delay(1000);
  
    // lire les données en série et lancer la fonction de comptage
  if (Serial.available()) {
    int serialData = Serial.read();
    if (serialData == 'Serial')
    {
      Serial.println("Serial: Pas de doigt détecté"); 
      delay(100);
      count = 0;
    }
  }
 
  // check to confirm sleep 
  if (count >= 10) {
      Serial.println("Lecteur en attente");
      delay(100);
      count = 0;
      digitalWrite(pinFPS,LOW);  
  }
  
}

uint8_t getFingerprintID() {
  uint8_t p = finger.getImage();
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image prise");
      break;
    case FINGERPRINT_NOFINGER:
      Serial.println("Aucun doigt détecté");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Erreur de communication");
      return p;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("Erreur de prise image");
      return p;
    default:
      Serial.println("Erreur inconnu");
      return p;
  }

  // OK success !

  p = finger.image2Tz();
  switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image converti");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("Image trop brouillonne");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Erreur de communication");
      return p;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("Impossible de trouver les caractéristiques des empreintes digitales");
      return p;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("Impossible de trouver les caractéristiques des empreintes digitales");
      return p;
    default:
      Serial.println("Erreu inconnu");
      return p;
  }
  
  // OK converti!
  p = finger.fingerFastSearch();
  if (p == FINGERPRINT_OK) {
    Serial.println("Correspondance trouvé !"); 
  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
    Serial.println("Erreur communication");
    return p;
  } else if (p == FINGERPRINT_NOTFOUND) {
    Serial.println("Pas de correspondance trouvé");
    return p;
  } else {
    Serial.println("Erreur inconnu");
    return p;
  }   
  
  // correspondance trouvé !
  Serial.print("Found ID #"); 
  Serial.print(finger.fingerID); 
  
  Serial.print(" with confidence of "); 
  Serial.println(finger.confidence); 
}

// retourne -1 si échoué, sinon retourne 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;
  
  // correspondance trouvé !
  Serial.print("Found ID #"); 
  //SET RELAY TO HIGH TO ACTIVATE
  digitalWrite(pinRelay, HIGH);
  delay(2000);
  digitalWrite(pinRelay,LOW);
  Serial.print(finger.fingerID); 
  Serial.print(" with confidence of "); 
  Serial.println(finger.confidence);
  return finger.fingerID; 
}

Le résultat

J’ai fixé le lecteur d’empreinte sous le meuble Ikea avec de la colle à chaud.

Lecteur d'empreinte digitale

Je peux donc poser l’un de mes doigts sous le meuble sur le lecteur d’empreinte digitale

Lecture de mon empreinte digitale

Le verrou s’ouvre, je peux ainsi tirer la porte et l’ouvrir.

Serrure électrique à solénoïde

L’arduino est collé à l’intérieur du meuble, il faut que lui fasse un cache en impression 3D.

Arduino Uno

J’ai déporté l’alimentation à l’arrière du meuble pour le brancher de l’extérieur avec le bloc alimentation 9V.

Il est en place depuis 8 mois maintenant et n’a jamais planté une seul fois.

Les améliorations

J’ai eu plusieurs idées d’améliorations comme :

  • La possibilité d’ouverture à distance avec mon téléphone
  • La possibilité d’ouverture par mes enfants à certaines heures et jours

0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

 
Copyright © 2016-2020 - Romain PLANEL - Tous droits réservés.