Table des matières:

Serrure intelligente à reconnaissance faciale avec LTE Pi HAT : 4 étapes
Serrure intelligente à reconnaissance faciale avec LTE Pi HAT : 4 étapes

Vidéo: Serrure intelligente à reconnaissance faciale avec LTE Pi HAT : 4 étapes

Vidéo: Serrure intelligente à reconnaissance faciale avec LTE Pi HAT : 4 étapes
Vidéo: 路飛的形象宣傳大使們! 炫弟狂魔艾斯,走到哪裡都能聊聊弟弟路飛!【山治漫剪君】 2024, Novembre
Anonim
Serrure intelligente à reconnaissance faciale avec LTE Pi HAT
Serrure intelligente à reconnaissance faciale avec LTE Pi HAT

La reconnaissance faciale est de plus en plus utilisée, nous pouvons l'utiliser pour faire une serrure intelligente.

Étape 1: Éléments utilisés dans ce projet

Composants matériels

  • Raspberry Pi 3 modèle B
  • Module de caméra Raspberry Pi V2
  • Grove - Relais
  • CHAPEAU LTE Cat 1 Pi (Europe)
  • Écran LCD 10,1 pouces 1200x1980 HDMI IPS

Applications logicielles et services en ligne

  • WinSCP
  • Bloc-notes++

Étape 2: connexion matérielle

Connexion matérielle
Connexion matérielle

Dans ce projet, nous prévoyons de prendre des photos avec picamera et d'y reconnaître les visages, puis d'afficher le résultat de la reconnaissance à l'écran. Si les visages sont connus, ouvrez la porte et envoyez qui a ouvert la porte au numéro de téléphone spécifié par SMS.

Vous devez donc connecter une caméra à l'interface de caméra de Raspberry Pi, et installer une antenne et Grove - Relay to LTE Pi hat, puis brancher HAT à votre Pi. L'écran peut être connecté à Raspberry Pi via un câble HDMI, n'oubliez pas de connecter l'alimentation à votre écran et à Pi.

Étape 3: Programmation du logiciel

Reconnaissance de visage

Merci pour Adam Geitgey et son projet Face Recognition, nous pouvons utiliser la bibliothèque de reconnaissance faciale la plus simple au monde sur Raspberry Pi. Les étapes suivantes vous montreront comment configurer la reconnaissance faciale sur Pi.

Étape 1. Utilisez raspi-config pour configurer la mémoire de la caméra et du GPU.

sudo raspi-config

Choisissez Options d'interface -- Appareil photo pour activer la picamera, puis choisissez Options avancées -- Division de la mémoire pour définir la mémoire GPU, elle doit être modifiée en 64. Après avoir terminé, redémarrez votre Raspberry Pi.

Étape 2. Installez les bibliothèques requises.

sudo apt-get mise à jour

sudo apt-get upgrade sudo apt-get install build-essential / cmake / gfortran / git / wget / curl / graphicsmagick / libgraphicsmagick1-dev / libatlas-dev / libavcodec-dev / libavformat-dev / libboost-all-dev / libgtk2. 0-dev\libjpeg-dev\liblapack-dev\libswscale-dev\pkg-config\python3-dev\python3-numpy\python3-picamera\python3-pip\zip sudo apt-get clean

Étape 3. Faites en sorte que picamerea prenne en charge le tableau.

sudo pip3 install --upgrade picamera[array]

Étape 4. Installez dlib et la reconnaissance faciale.

sudo pip3 installer dlib

sudo pip3 installer face_recognition

Étape 5. Téléchargez et exécutez l'exemple de reconnaissance faciale

git clone --single-branch

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

AVIS: Si vous obtenez ImportError: libatlas.so.3: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type, exécutez la commande suivante pour le corriger.

Relais

Lorsque la reconnaissance faciale est prête, nous pouvons continuer à ajouter des fonctionnalités supplémentaires. Nous avons connecté Grove - Relay au LTE Cat 1 Pi HAT, mais il utilise un port numérique plutôt que le port I2C.

Il s'agit du brochage pour Raspberry Pi 3B, nous pouvons voir les broches SDA et SCL situées dans les broches 3 et 5 de la carte.

Image
Image

Nous pouvons donc contrôler le relais en émettant un signal numérique sur la broche 5. Exécutez le programme python suivant sur votre Raspberry Pi, si rien ne se passe, vous entendrez un Ti-Ta du relais.

importer RPi. GPIO en tant que GPIO

RELAY_PIN = 5 GPIO.setmode(GPIO. BOARD) GPIO.setup(RELAY_PIN, GPIO. OUT) GPIO.output(RELAY_PIN, GPIO. HIGH)

Alors voici l'idée, on charge les visages connus à partir d'un dossier, on reconnaît les visages capturés par picamera, si le visage dans le dossier, on contrôle le relais pour déverrouiller la porte. Nous pouvons les empaqueter dans une classe, voici la méthode load_known_faces() et la méthode unlock(), le programme terminé peut être téléchargé à la fin de cet article.

def load_known_faces(self):

connus_faces = os.listdir(self._known_faces_path) pourknown_face dansknown_faces: self._known_faces_name.append(known_face[0: len(known_face) - len('.jpg')])known_face_image = face_recognition.load_image_file(self._known_faces_path +) self._known_faces_encoding.append(face_recognition.face_encodings(known_face_image)[0]) return len(self._known_faces_encoding) def unlock(self): if self._matched.count(True) > 0: GPIO.output(self._relay_pin, GPIO. HIGH) print('Porte ouverte') time.sleep(5) GPIO.output(self._relay_pin, GPIO. LOW) self._reset_recognise_params() return True self._retry_count += 1 print('Veuillez réessayer…{ }'.format(self._retry_count)) renvoie False

Pensez transcendantalement, nous pouvons montrer l'image qui a reconnu, les bibliothèques PIL et matplotlib peuvent être utiles, parmi elles, matplotlib doit être installé manuellement, exécutez cette commande dans le terminal de votre Raspberry Pi.

sudo pip3 installer matplotlib

Importez-les dans votre code et modifiez if block dans la méthode unlock() comme ceci:

img = Image.open('{}/{}.jpg'.format(self._known_faces_path, self._known_faces_name[0]))

plt.imshow(img) plt.ion() GPIO.output(self._relay_pin, GPIO. HIGH) print('Porte ouverte') plt.pause(3) plt.close() GPIO.output(self._relay_pin, GPIO. LOW) self._reset_recognise_params() renvoie True

Désormais, si un visage est reconnu, l'image du dossier s'affichera à l'écran.

Image
Image

SMS

Parfois, nous voulons savoir qui est dans notre pièce, et maintenant il y a une place pour LTE Cat 1 Pi HAT. Branchez une carte SIM dessus et suivez les étapes pour tester si cela fonctionnera ou non.

Étape 1. Activer UART0 dans Raspberry Pi

Utilisez nano pour éditer config.txt dans /boot

sudo nano /boot/config.txt

ajoutez dtoverlay=pi3-disable-bt au bas de celui-ci et désactivez le service hciuart

sudo systemctl désactiver hciuart

puis supprimez console=serial0, 115200 dans cmdline.txt dans /boot

sudo nano /boot/cmdline.txt

Après tout, vous devez redémarrer votre Raspberry Pi.

Étape 2. Téléchargez l'exemple et exécutez-le.

Ouvrez un terminal sur votre Raspberry Pi, tapez ces commandes ligne par ligne.

disque ~

git clone https://github.com/Seeed-Studio/ublox_lara_r2_pi_hat.git cd ublox_lara_r2_pi_hat sudo python setup.py installer cd test sudo python test01.py

Si vous voyez ces sorties dans votre terminal, le LTE Cat 1 Pi HAT fonctionne bien.

En-tête GPIO 40 broches détecté

Activation de CTS0 et RTS0 sur les GPIO 16 et 17 rts cts au réveil… nom du module: LARA-R211 RSSI: 3

Maintenant que nous savons que le HAT fonctionne bien, comment l'utiliser pour envoyer des SMS ? La première chose que vous devez savoir est que le Raspberry Pi communique avec le HAT via l'envoi de commandes AT par UART. Vous pouvez envoyer des commandes AT à LTE HAT en exécutant ce code en python

à partir de l'importation ublox_lara_r2 *

u = Ublox_lara_r2() u.initialize() u.reset_power() # Fermer le massage de débogage u.debug = False u.sendAT('')

La commande AT pour l'envoi de SMS est la suivante

AT+CMGF=1

AT+CMGS=

voici donc la méthode _send_sms():

def _send_sms(self):

if self._phonenum == None: renvoie False pour le déblocage dans self._recognise_face_names(): if self._ublox.sendAT('AT+CMGF=1\r\n'): print(self._ublox.response) si self. _ublox.sendAT('AT+CMGS="{}"\r\n'.format(self._phonenum)): print(self._ublox.response) si self._ublox.sendAT('{} entre dans la pièce.\ x1a'.format(unlocker)): print(self._ublox.response)

AVIS: La bibliothèque LTE Cat 1 Pi HAT écrite par python2, qui n'est pas très compatible avec python3, si vous souhaitez l'utiliser avec la reconnaissance faciale, veuillez la télécharger à partir du lien à la fin de cet article.

Conseillé: