Sommario:

Smart Lock con riconoscimento facciale con LTE Pi HAT: 4 passaggi
Smart Lock con riconoscimento facciale con LTE Pi HAT: 4 passaggi

Video: Smart Lock con riconoscimento facciale con LTE Pi HAT: 4 passaggi

Video: Smart Lock con riconoscimento facciale con LTE Pi HAT: 4 passaggi
Video: Face Recognition With Raspberry Pi + OpenCV + Python 2024, Novembre
Anonim
Smart Lock con riconoscimento facciale con LTE Pi HAT
Smart Lock con riconoscimento facciale con LTE Pi HAT

Il riconoscimento facciale sta diventando sempre più diffuso, possiamo usarlo per creare una serratura intelligente.

Passaggio 1: cose utilizzate in questo progetto

Componenti hardware

  • Raspberry Pi 3 Modello B
  • Modulo fotocamera Raspberry Pi V2
  • Grove - Staffetta
  • CAPPELLO LTE Cat 1 Pi (Europa)
  • Display LCD IPS HDMI 1200x1980 da 10,1 pollici

App software e servizi online

  • WinSCP
  • Blocco note++

Passaggio 2: connessione hardware

Connessione hardware
Connessione hardware

In questo progetto, abbiamo in programma di scattare foto con picamera e riconoscere i volti in esse, quindi visualizzare i risultati del riconoscimento sullo schermo. Se noti volti, apri la porta e invia chi ha aperto la porta al numero di telefono specificato tramite SMS.

Quindi è necessario collegare una fotocamera all'interfaccia della fotocamera di Raspberry Pi e installare l'antenna e il cappello Grove - Relay su LTE Pi, quindi collegare HAT al Pi. Lo schermo può essere collegato a Raspberry Pi tramite un cavo HDMI, non dimenticare di collegare l'alimentazione allo schermo e al Pi.

Passaggio 3: Programmazione software

Riconoscimento facciale

Grazie per Adam Geitgey e il suo progetto Face Recognition, possiamo utilizzare la libreria di riconoscimento facciale più semplice al mondo su Raspberry Pi. I seguenti passaggi ti mostreranno come impostare il riconoscimento facciale su Pi.

Passaggio 1. Utilizzare raspi-config per configurare la memoria della fotocamera e della GPU.

sudo raspi-config

Scegliendo Opzioni interfaccia - Fotocamera per abilitare la picamera, quindi scegliendo Opzioni avanzate - Divisione memoria per impostare la memoria GPU, dovrebbe essere cambiato in 64. Dopo aver terminato, riavvia il tuo Raspberry Pi.

Passaggio 2. Installa le librerie richieste.

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

Passaggio 3. Fare in modo che picamerea supporti l'array.

sudo pip3 install --upgrade picamera[array]

Passaggio 4. Installa dlib e il riconoscimento facciale.

sudo pip3 install dlib

sudo pip3 install face_recognition

Passaggio 5. Scarica ed esegui l'esempio di riconoscimento facciale

git clone --single-branch

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

AVVISO: se hai ricevuto ImportError: libatlas.so.3: impossibile aprire il file oggetto condiviso: nessun file o directory di questo tipo, esegui il seguente comando per risolverlo.

relè

Quando il riconoscimento facciale è pronto, possiamo continuare ad aggiungere funzionalità aggiuntive. Abbiamo collegato Grove - Relay a LTE Cat 1 Pi HAT, ma utilizza la porta digitale anziché la porta I2C.

Questo è il pin-out per Raspberry Pi 3B, possiamo vedere il pin SDA e il pin SCL situati nei pin 3 e 5 della scheda.

Immagine
Immagine

Quindi possiamo controllare il relè inviando il segnale digitale al pin 5. Esegui seguendo il programma Python sul tuo Raspberry Pi, se nulla va storto, sentirai un Ti-Ta dal relè.

importa RPi. GPIO come GPIO

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

Quindi ecco l'idea, carichiamo i volti noti da una cartella, riconosciamo i volti catturati da picamera, se il volto è nella cartella, controlliamo il relè per sbloccare la porta. Possiamo impacchettarli in una classe, ecco il metodo load_known_faces() e il metodo unlock(), il programma completato può essere scaricato alla fine di questo articolo.

def load_known_faces(self):

volti_noti = os.listdir(self._percorso_facce_conosciute) for volto_noto in volti_noti: self._nome_facce_conosciute.append(faccia_nota[0: len(faccia_nota) - len('.jpg')]) immagine_faccia_conosciuta = riconoscimento_faccia.load_image_file(self._facce_conosciute)) 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('Porta aperta') time.sleep(5) GPIO.output(self._relay_pin, GPIO. LOW) self._reset_recognise_params() return True self._retry_count += 1 print('Riprova…{ }'.format(self._retry_count)) restituisce False

Pensa in modo trascendentale, possiamo mostrare l'immagine che ha riconosciuto, le librerie PIL e matplotlib possono essere utili, tra queste, matplotlib deve essere installato manualmente, esegui questo comando nel terminale del tuo Raspberry Pi.

sudo pip3 install matplotlib

Importali nel tuo codice e cambia if block nel metodo unlock() in questo modo:

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('Porta aperta') plt.pause(3) plt.close() GPIO.output(self._relay_pin, GPIO. LOW) self._reset_recognise_params() return True

Ora, se viene riconosciuto un volto, l'immagine nella cartella verrà visualizzata sullo schermo.

Immagine
Immagine

sms

A volte vogliamo sapere chi c'è nella nostra stanza, e ora c'è un posto per LTE Cat 1 Pi HAT. Collega una scheda SIM e segui i passaggi per verificare se funziona o meno.

Passaggio 1. Abilita UART0 in Raspberry Pi

Usa nano per modificare config.txt in /boot

sudo nano /boot/config.txt

aggiungi dtoverlay=pi3-disable-bt in fondo e disabilita il servizio hciuart

sudo systemctl disabilita hciuart

quindi elimina console=serial0, 115200 in cmdline.txt in /boot

sudo nano /boot/cmdline.txt

Dopo aver fatto tutto, dovresti riavviare il tuo Raspberry Pi.

Passaggio 2. Scarica l'esempio ed eseguilo.

Apri un terminale sul tuo Raspberry Pi, digita questi comandi riga per riga.

cd ~

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

Se vedi queste uscite nel tuo terminale, LTE Cat 1 Pi HAT funziona bene.

Intestazione GPIO a 40 pin rilevata

Abilitazione CTS0 e RTS0 su GPIO 16 e 17 rts cts al risveglio… nome modulo: LARA-R211 RSSI: 3

Ora sapevamo che il HAT funziona bene, come usarlo per inviare SMS? La prima cosa che devi sapere è che il Raspberry Pi comunica con l'HAT tramite i comandi send AT di UART. Puoi inviare comandi AT a LTE HAT eseguendo questo codice in python

da ublox_lara_r2 import *

u = Ublox_lara_r2() u.initialize() u.reset_power() # Chiudi il messaggio di debug u.debug = False u.sendAT('')

Il comando AT per l'invio di SMS è il seguente

AT+CMGF=1

AT+CMGS=

quindi ecco il metodo _send_sms():

def _send_sms(self):

if self._phonenum == Nessuno: restituisce False per lo sblocco 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)): print(self._ublox.response) if self._ublox.sendAT('{} entra nella stanza.\ x1a'.format(unlocker)): print(self._ublox.response)

AVVISO: la libreria LTE Cat 1 Pi HAT scritta da python2, che non è molto compatibile con python3, se vuoi usarla con riconoscimento facciale, scaricala dal link alla fine di questo articolo.

Consigliato: