Innehållsförteckning:

Ansiktsigenkänning Smart Lock med LTE Pi HAT: 4 steg
Ansiktsigenkänning Smart Lock med LTE Pi HAT: 4 steg

Video: Ansiktsigenkänning Smart Lock med LTE Pi HAT: 4 steg

Video: Ansiktsigenkänning Smart Lock med LTE Pi HAT: 4 steg
Video: CS50 2014 – 9-я неделя 2024, November
Anonim
Ansiktsigenkänning Smart Lock Med LTE Pi HAT
Ansiktsigenkänning Smart Lock Med LTE Pi HAT

Ansiktsigenkänning blir mer och mer allmänt använd, vi kan använda det för att skapa ett smart lås.

Steg 1: Saker som används i detta projekt

Hårdvarukomponenter

  • Raspberry Pi 3 Modell B
  • Raspberry Pi kameramodul V2
  • Grove - stafett
  • LTE Cat 1 Pi HAT (Europa)
  • 10,1 tum 1200x1980 HDMI IPS LCD -skärm

Programvaruappar och onlinetjänster

  • WinSCP
  • Anteckningsblock ++

Steg 2: Maskinvaruanslutning

Maskinvaruanslutning
Maskinvaruanslutning

I detta projekt planerar vi att ta bilder med picamera och känna igen ansikten i dem och sedan visa igenkänningsresultat på skärmen. Om ansikten är kända, öppna dörren och skicka vem som öppnade dörren till ett specifikt telefonnummer via SMS.

Så du måste ansluta en kamera till Raspberry Pi: s kameragränssnitt och installera antenn och Grove - Relä till LTE Pi -hatt och anslut sedan HAT till din Pi. Skärmen kan anslutas till Raspberry Pi via en HDMI -kabel, glöm inte att ansluta ström till din skärm och Pi.

Steg 3: Programvaruprogrammering

Ansiktsigenkänning

Tack för Adam Geitgey och hans ansiktsigenkänningsprojekt, vi kan använda världens enklaste ansiktsigenkänningsbibliotek på Raspberry Pi. Följande steg visar hur du konfigurerar ansiktsigenkänning på Pi.

Steg 1. Använd raspi-config för att konfigurera kamera och GPU-minne.

sudo raspi-config

Välja gränssnittsalternativ - kamera för att aktivera picamera, sedan välja Avancerade alternativ - Memory Split för att ställa in GPU -minne, det bör ändras till 64. Efter avslutad starta om din Raspberry Pi.

Steg 2. Installera nödvändiga bibliotek.

sudo apt-get uppdatering

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

Steg 3. Gör picamerea stöder array.

sudo pip3 installera -uppgradera picamera [array]

Steg 4. Installera dlib och ansiktsigenkänning.

sudo pip3 installera dlib

sudo pip3 installera face_recognition

Steg 5. Ladda ner och kör ansiktsigenkänningsexempel

git clone --single-branch

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

ANMÄRKNING: Om du fick ImportError: libatlas.so.3: kan inte öppna delad objektfil: Ingen sådan fil eller katalog, kör följande kommando för att fixa det.

Relä

När ansiktsigenkänning är klar kan vi fortsätta att lägga till ytterligare funktioner. Vi kopplade Grove - Relay till LTE Cat 1 Pi HAT, men den använder digital port istället för I2C -port.

Detta är pin-out för Raspberry Pi 3B, vi kan se SDA-stift och SCL-stift som finns i kortets stift 3 och stift 5.

Bild
Bild

Så vi kan styra reläet genom att mata ut digital signal till pin 5. Kör ned pythonprogrammet på din Raspberry Pi, om inget går fel hör du en Ti-Ta från relä.

importera RPi. GPIO som GPIO

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

Så här är tanken, vi laddar kända ansikten från en mapp, känner igen ansikten som fångas av picamera, om ansiktet i mappen, styrrelä för att låsa upp dörren. Vi kan paketera dem till en klass, här är metoden load_known_faces () och upplåsning (), det färdiga programmet kan laddas ner i slutet av denna artikel.

def load_known_faces (self):

known_faces = os.listdir (self._ known_faces_path) för known_face in known_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_pface) 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 ('Dörr öppnad') time.sleep (5) GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return True true._ retry_count += 1 print ('Försök igen … { } '. format (self._ retry_count)) return False

Tänk transcendentalt, vi kan visa bilden vem som kände igen, bibliotek PIL och matplotlib kan vara till hjälp, bland dem måste matplotlib installeras manuellt, kör det här kommandot i din Raspberry Pi -terminal.

sudo pip3 installera matplotlib

Importera dem i din kod och ändra om blockera i unlock () -metoden så här:

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 ('Door closed') plt.pause (3) plt.close () GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return True

Om ett ansikte känns igen kommer bilden i mappen att visas på skärmen.

Bild
Bild

SMS

Ibland vill vi veta vem som är i vårt rum, och nu finns det en plats för LTE Cat 1 Pi HAT. Anslut ett SIM -kort till det och följ stegen för att testa om det fungerar eller inte.

Steg 1. Aktivera UART0 i Raspberry Pi

Använd nano för att redigera config.txt i /boot

sudo nano /boot/config.txt

lägg till dtoverlay = pi3-disable-bt till botten av det och inaktivera hciuart-tjänsten

sudo systemctl inaktivera hciuart

radera sedan console = serial0, 115200 i cmdline.txt in /boot

sudo nano /boot/cmdline.txt

När allt är gjort bör du starta om din Raspberry Pi.

Steg 2. Ladda ner exemplet och kör det.

Öppna en terminal på din Raspberry Pi, skriv dessa kommandon till den rad för rad.

cd ~

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

Om du ser dessa utgångar i din terminal fungerar LTE Cat 1 Pi HAT bra.

40-stifts GPIO-rubrik upptäckt

Aktivera CTS0 och RTS0 på GPIO 16 och 17 rt cts vid väckning … modulnamn: LARA-R211 RSSI: 3

Nu visste vi att HAT fungerar bra, hur man använder den för att skicka SMS? Det första du behöver veta är att Raspberry Pi kommunicerar med HAT via skicka AT -kommandon från UART. Du kan skicka AT -kommandon till LTE HAT genom att köra den här koden i python

från ublox_lara_r2 import *

u = Ublox_lara_r2 () u.initialize () u.reset_power () # Stäng felsökningsmassage u.debug = Falskt u.sendAT ('')

AT -kommandot för att skicka SMS är följande

AT+CMGF = 1

AT+CMGS =

så här är _send_sms () -metoden:

def _send_sms (själv):

if self._ phonenum == None: return False för unlocker i self._ igenkänna_face_namn (): 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 (' {} gå in i rummet. / x1a'.format (upplåsning)): print (self._ ublox.response)

ANMÄRKNING: LTE Cat 1 Pi HAT: s bibliotek skrivet av python2, som inte är särskilt kompatibelt med python3, om du vill använda det med ansiktsigenkänning, ladda ner det från länken från slutet av denna artikel.

Rekommenderad: