1. Introduction

Les systèmes de sécurité domestique sont un domaine en pleine expansion. Cependant, si on l’achète, cela peut vite devenir très cher. Un système construit par l'utilisateur est non seulement moins cher qu'une installation professionnelle encombrante, mais il permet également un contrôle total et une personnalisation en fonction de nos besoins.

Le but de ce projet est donc de créer notre propre système de sécurité domestique, ici une serrure qui se déverrouille par reconnaissance faciale.

2. Matériel et méthodes

2.1 Matériel

  • 1 Raspberry pi 3 avec Raspbian
  • 1 Serrure électrique
  • 1 Source d’énergie externe DC
  • 1 Module de relais
  • 1 Raspberry pi camera
  • 1 Breadboard
  • Des fils
  • OpenCV

Premièrement, il faut commencer par brancher tout le hardware.

Il faut connecter le VCC et le GND du module de relais au 5V et GND du Raspberry Pi. Ensuite, il faut connecter le pin du signal du module à relais au GPIO 26 (ou un autre, il faut juste que ça corresponde avec le code) du Raspberry Pi.

De l'autre côté du module de relais, il faut connecter la source d'alimentation négative DC au négatif de la serrure électrique. Ensuite, connecter le positif de la source d'alimentation DC au COM1 du module de relais, puis connecter le positif de la serrure électrique au NO1 du module de relais. C'est tout pour le hardware.

Pour la partie logicielle, j’utilise l'OS Raspbian sur le Raspberry Pi et la librairie OpenCV pour la reconnaissance faciale.

2.2 Méthode

La première chose qu'il nous faut c'est un programme qui va faire la reconnaissance faciale. Pour cela il faudra prendre plusieurs photos du visage et entraîner le modèle avec ces dernières.

OpenCV contient déjà de nombreux classificateurs préentraînés pour le visage, les yeux, le sourire, etc. On va donc en utiliser un pour la reconnaissance faciale

Donc ce que code créé par Muhammad Aqib va faire c'est prendre 30 photos du visage de la personne avec une résolution de (640, 480). Le programme va ensuite demander le nom de la personne et créer un dossier avec toutes les photos. Ce que le premier fichier datagathering.py va aussi faire c'est de détecter où est le visage dans la photo.

En deuxième lieu, on entraîne le modèle avec les photos qu'on a obtenues dans l'étape précédente à l'aide du LBPH (LOCAL BINARY PATTERNS HISTOGRAMS) face recognizer, qui est inclus dans le package OpenCV.

Finalement, on utilise le modèle qu'on a entraîné pour changer en temps réel la valeur du pin GPIO 26 en fonction du modèle de reconnaissance faciale. La valeur du pin GPIO 26 dépend de la précision (confiance) de la sortie du modèle.

3. Résultats

On obtient une serrure qui est tout le temps fermée, mais qui s'ouvre quand le logiciel reconnaît le visage en face de la caméra.

4. Discussion

Au début je voulais utiliser WindowsIOT pour ce projet, mais je me suis rendu compte que même si cet OS est bien pour certaines choses, il est beaucoup plus facile de déployer du code sur Raspbian. En plus de cela, dans Raspbian, il faut coder en Python et ça tombe bien puisque c'est un langage de programmation que j'ai déjà utilisé dans le passé.

5. Conclusion

Ce système de reconnaissance des visages n'est pas précis à 100 %, mais il fonctionne bien dans de bonnes conditions d'éclairage. Le problème est qu'il peut également détecter des visages à partir d'images - par exemple, quelqu'un peut le déverrouiller en montrant votre photo depuis son téléphone portable. Cela est dû au fait qu'il y a qu'une seule caméra et qu'il n'y a donc pas de vision 3D.

Une amélioration possible, pour encore plus de sécurité, serait de combiner la caméra avec un lecteur d’empreintes digitales et encore d'ajouter un password pour pouvoir déverrouiller la serrure.