Taula de continguts:

Smart Lock de reconeixement facial amb LTE Pi HAT: 4 passos
Smart Lock de reconeixement facial amb LTE Pi HAT: 4 passos

Vídeo: Smart Lock de reconeixement facial amb LTE Pi HAT: 4 passos

Vídeo: Smart Lock de reconeixement facial amb LTE Pi HAT: 4 passos
Vídeo: ВЛАД А4 и ДИРЕКТОР ЮТУБА против СИРЕНОГОЛОВЫЙ 2024, De novembre
Anonim
Smart Lock de reconeixement facial amb LTE Pi HAT
Smart Lock de reconeixement facial amb LTE Pi HAT

El reconeixement facial és cada cop més utilitzat, el podem utilitzar per fer un pany intel·ligent.

Pas 1: coses utilitzades en aquest projecte

Components de maquinari

  • Raspberry Pi 3 Model B.
  • Mòdul de càmera Raspberry Pi V2
  • Grove - Relleu
  • LTE Cat 1 Pi HAT (Europa)
  • Pantalla LCD HDMI IPS de 10,1 polzades 1200x1980

Aplicacions de programari i serveis en línia

  • WinSCP
  • Bloc de notes ++

Pas 2: connexió de maquinari

Connexió de maquinari
Connexió de maquinari

En aquest projecte, tenim previst fer fotos amb una càmera fotogràfica i reconèixer les cares que hi apareixen, i després mostrar el resultat del reconeixement a la pantalla. Si es coneixen les cares, obriu la porta i envieu qui ha obert la porta al número de telèfon especificat per SMS.

Per tant, heu de connectar una càmera a la interfície de la càmera de Raspberry Pi i instal·lar l’antena i el relleu Grove - Relay al barret LTE Pi i, a continuació, connecteu HAT al vostre Pi. La pantalla es pot connectar a Raspberry Pi mitjançant un cable HDMI, no oblideu connectar l’alimentació a la pantalla i a Pi.

Pas 3: programació de programari

Reconeixement facial

Gràcies per Adam Geitgey i el seu projecte de reconeixement facial, podem utilitzar la biblioteca de reconeixement facial més senzilla del món a Raspberry Pi. Els passos següents us mostraran com configurar el reconeixement facial a Pi.

Pas 1. Utilitzeu raspi-config per configurar la memòria de la càmera i la GPU.

sudo raspi-config

Triar Opcions d’interfície: càmera per habilitar la càmera i, a continuació, triar Opcions avançades - Dividir memòria per configurar la memòria GPU, s’ha de canviar a 64. Després d’acabar, reinicieu el Raspberry Pi.

Pas 2. Instal·leu les biblioteques necessàries.

sudo apt-get update

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

Pas 3. Feu que picamerea admeti matriu.

sudo pip3 install --upgrade picamera [array]

Pas 4. Instal·leu dlib i reconeixement facial.

sudo pip3 instal·la dlib

sudo pip3 instal·la reconeixement facial

Pas 5. Baixeu i executeu un exemple de reconeixement facial

git clone --single-branch

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

AVÍS: Si teniu ImportError: libatlas.so.3: no es pot obrir un fitxer d’objectes compartits: no hi ha cap fitxer ni directori, executeu l’ordre següent per solucionar-lo.

Relleu

Quan el reconeixement facial estigui a punt, podem continuar afegint funcions addicionals. Hem connectat Grove - Relay a LTE Cat 1 Pi HAT, però utilitza el port digital en lloc del port I2C.

Es tracta d’un pin-out per a Raspberry Pi 3B, podem veure el pin SDA i el pin SCL ubicats als pins 3 i 5 del tauler.

Imatge
Imatge

Per tant, podem controlar el relé mitjançant les sortides del senyal digital al pin 5. Executeu el programa Python del Raspberry Pi cap avall, si res no surt malament, sentireu un Ti-Ta del relé.

importar RPi. GPIO com a GPIO

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

Així que aquí teniu la idea, carreguem les cares conegudes d’una carpeta, reconeixem les cares capturades per la càmera fotogràfica, si la cara de la carpeta, el relé de control per desbloquejar la porta. Els podem empaquetar a una classe, aquí teniu el mètode load_known_faces () i el mètode unlock (); el programa complet es pot descarregar al final d’aquest article.

cares_de_conegudes_carregades (auto):

cares_ conegudes = os.listdir (auto._ camí_cares conegudes) per a cara_ coneguda a cares conegudes: auto._ nom_cares conegudes.append (cara_coneguda [0: len (cara_coneguda) - len ('. jpg')]) imatge_cara_coneguda = reconeixement_carregat.arxiu_imatge_carregat (auto._cares_ conegudes_) self._ known_faces_encoding.append (face_recognition.face_encodings (known_face_image) [0]) return len (self._ known_faces_encoding) def unlock (self): si self._ coincideix.count (True)> 0: GPIO.output (self._ relay_pin, GPIO. HIGH) print ('Porta oberta') time.sleep (5) GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return True true._ retry_count + = 1 print ('Torneu-ho a provar … { } '. Format (self._ retry_count)) retorna False

Penseu de manera transcendental, podem mostrar a la imatge qui ha reconegut, les biblioteques PIL i matplotlib poden ser útils, entre elles, cal instal·lar matplotlib manualment, executeu aquesta ordre al terminal del vostre Raspberry Pi.

sudo pip3 instal·la matplotlib

Importeu-los al vostre codi i canvieu si bloqueja el mètode unlock () com aquest:

img = Image.open ('{} / {}. jpg'.format (auto._ camí_de_cares conegut, auto._ nom_cares_ conegut [0]))

plt.imshow (img) plt.ion () GPIO.output (auto._ relay_pin, GPIO. HIGH) print ('Porta oberta') plt.pause (3) plt.close () GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return True

Ara, si es reconeix una cara, la imatge de la carpeta es mostrarà a la pantalla.

Imatge
Imatge

SMS

De vegades volem saber qui hi ha a la nostra habitació i ara hi ha un lloc per a LTE Cat 1 Pi HAT. Connecteu-hi una targeta SIM i seguiu els passos per comprovar si funciona o no.

Pas 1. Activeu UART0 a Raspberry Pi

Utilitzeu nano per editar config.txt a / boot

sudo nano /boot/config.txt

afegiu dtoverlay = pi3-disable-bt a la part inferior i desactiveu el servei hciuart

sudo systemctl desactiva hciuart

a continuació, suprimiu console = serial0, 115200 a cmdline.txt a / boot

sudo nano /boot/cmdline.txt

Després de tot el que heu fet, heu de reiniciar el Raspberry Pi.

Pas 2. Descarregueu l'exemple i executeu-lo.

Obriu un terminal al vostre Raspberry Pi, escriviu-los aquesta línia per línia.

cd ~

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

Si veieu aquestes sortides al vostre terminal, el LTE Cat 1 Pi HAT funciona bé.

S'ha detectat una capçalera GPIO de 40 pins

Habilitació de CTS0 i RTS0 en GPIO de 16 i 17 rts cts en despertar … nom del mòdul: LARA-R211 RSSI: 3

Ara sabíem que el HAT funciona bé, com utilitzar-lo per enviar SMS? El primer que heu de saber és que el Raspberry Pi es comunica amb el HAT mitjançant comandes d’enviament AT per part d’UART. Podeu enviar comandes AT a LTE HAT executant aquest codi en python

des de la importació ublox_lara_r2 *

u = Ublox_lara_r2 () u.initialize () u.reset_power () # Massatge de depuració tancada u.debug = Fals u.sendAT ( )

La comanda AT per enviar SMS és la següent

AT + CMGF = 1

AT + CMGS =

així que aquí teniu el mètode _send_sms ():

def _send_sms (auto):

if self._ phonenum == None: return False for unlocker in self._ recognise_face_names (): if self._ ublox.sendAT ('AT + CMGF = 1 / r / n'): print (self._ ublox.response) if self. _ublox.sendAT ('AT + CMGS = "{}" / r / n'.format (self._ phonenum)): imprimeix (self._ ublox.response) si self._ ublox.sendAT (' {} entra a la sala. / x1a'.format (unlocker)): print (auto._ ublox.response)

AVÍS: La biblioteca de LTE Cat 1 Pi HAT escrita per python2, que no és molt compatible amb python3, si la voleu utilitzar amb reconeixement facial, descarregueu-la des de l'enllaç del final d'aquest article.

Recomanat: