Talaan ng mga Nilalaman:

Pagkilala sa Mukha ng Smart Lock Sa LTE Pi HAT: 4 na Hakbang
Pagkilala sa Mukha ng Smart Lock Sa LTE Pi HAT: 4 na Hakbang

Video: Pagkilala sa Mukha ng Smart Lock Sa LTE Pi HAT: 4 na Hakbang

Video: Pagkilala sa Mukha ng Smart Lock Sa LTE Pi HAT: 4 na Hakbang
Video: Sa mga bakas ng isang Sinaunang Kabihasnan? 🗿 Paano kung nagkamali tayo sa ating nakaraan? 2024, Hulyo
Anonim
Pagkilala sa Mukha ng Smart Lock Sa LTE Pi HAT
Pagkilala sa Mukha ng Smart Lock Sa LTE Pi HAT

Ang pagkilala sa mukha ay nagiging mas at mas malawak na ginagamit, maaari natin itong magamit upang makagawa ng isang matalinong lock.

Hakbang 1: Mga Bagay na Ginamit sa Project na Ito

Mga bahagi ng hardware

  • Raspberry Pi 3 Model B
  • Raspberry Pi Camera Module V2
  • Grove - Relay
  • LTE Cat 1 Pi HAT (Europa)
  • 10.1 pulgada 1200x1980 HDMI IPS LCD Display

Mga software app at serbisyong online

  • WinSCP
  • Notepad ++

Hakbang 2: Koneksyon sa Hardware

Koneksyon sa Hardware
Koneksyon sa Hardware

Sa proyektong ito, plano naming kumuha ng litrato na may picamera at kilalanin ang mga mukha sa kanila, pagkatapos ay ipakita ang resulta ng pagkilala sa screen. Kung kilala ang mga mukha, buksan ang pinto, at ipadala kung sino ang nagbukas ng pinto sa tinukoy na numero ng telepono sa pamamagitan ng SMS.

Kaya kailangan mong ikonekta ang isang camera sa interface ng camera ng Raspberry Pi, at i-install ang antena at Grove - Relay sa sumbrero ng LTE Pi, pagkatapos isaksak ang HAT sa iyong Pi. Ang screen ay maaaring konektado sa Raspberry Pi sa pamamagitan ng isang HDMI cable, huwag kalimutang ikonekta ang lakas sa iyong screen at Pi.

Hakbang 3: Programming ng Software

Pagkilala sa Mukha

Salamat sa Adam Geitgey at sa kanyang proyekto sa Pagkilala sa Mukha, maaari naming magamit ang pinakasimpleng library ng pagkilala sa mukha sa mundo sa Raspberry Pi. Ipapakita sa iyo ng mga sumusunod na hakbang kung paano mag-set up ng pagkilala sa mukha sa Pi.

Hakbang 1. Gumamit ng raspi-config upang i-configure ang memorya ng camera at GPU.

sudo raspi-config

Pagpili ng Mga Pagpipilian sa Interface - Camera upang paganahin ang picamera, pagkatapos ay piliin ang Advanced na Mga Pagpipilian - Memory Split upang maitakda ang memorya ng GPU, dapat itong mapalitan sa 64. Pagkatapos matapos, i-reboot ang iyong Raspberry Pi.

Hakbang 2. I-install ang mga kinakailangang aklatan.

sudo apt-get update

sudo apt-get upgrade sudo apt-get install build-important / 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

Hakbang 3. Gumawa ng sumusuporta sa picamerea sa array.

sudo pip3 install - i-upgrade ang picamera [array]

Hakbang 4. I-install ang dlib at pagkilala sa mukha.

sudo pip3 i-install ang dlib

sudo pip3 i-install ang face_recognition

Hakbang 5. Mag-download at magpatakbo ng halimbawa ng pagkilala sa mukha

git clone --single-branch

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

PAUNAWA: Kung nakuha mo ang ImportError: libatlas.so.3: hindi mabubuksan ang nakabahaging file ng object: Walang ganoong file o direktoryo, patakbuhin ang sumusunod na utos upang ayusin ito.

Relay

Kapag handa na ang pagkilala sa mukha, maaari naming magpatuloy na magdagdag ng mga karagdagang tampok. Ikinonekta namin ang Grove - Relay sa LTE Cat 1 Pi HAT, ngunit gumagamit ito ng digital port kaysa sa I2C port.

Ito ay pin-out para sa Raspberry Pi 3B, maaari naming makita ang SDA pin at SCL pin na matatagpuan sa board 3 pin at 5.

Larawan
Larawan

Kaya maaari naming makontrol ang relay ng mga output digital signal upang i-pin ang 5. Patakbuhin ang pagsunod sa programa ng sawa sa iyong Raspberry Pi, kung walang mali, maririnig mo ang isang Ti-Ta mula sa relay.

i-import ang RPi. GPIO bilang GPIO

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

Kaya narito ang ideya, naglo-load kami ng mga kilalang mukha mula sa isang folder, kinikilala ang mga mukha na nakunan ng picamera, kung ang mukha sa folder, kontrolin ang relay upang ma-unlock ang pinto. Maaari naming i-package ang mga ito sa isang klase, narito ang load_known_faces () na pamamaraan at pag-unlock () na pamamaraan, ang nakumpletong programa ay maaaring ma-download sa pagtatapos ng artikulong ito.

def load_known_faces (sarili):

kilala_faces = os.listdir (self._ kilala_faces_path) para sa kilala_face sa mga kilala_faces: sarili._ kilala_faces_name.append (kilala_face [0: len (kilala_face) - len ('. jpg')]) kilala_face_image = face_recognition.load_image_file (sarili._ kilala_faces_) self._ kilala_faces_encoding.append (face_recognition.face_encodings (kilala_face_image) [0]) ibalik len (sarili._ kilala_faces_encoding) def unlock (sarili): kung sarili._ na tugma. account (Totoo)> 0: GPIO.output (sarili._ relay_pin, GPIO. HIGH) naka-print ('Bumukas ang pinto') oras. Natutulog (5) GPIO.output (sarili._ relay_pin, GPIO. LOW) sarili._ reset_recognise_params () ibalik ang Tunay na sarili._ subukang muli_count + = 1 print ('Pakisubukang muli… { } 'format. (sarili._ muling subukang_count)) ibalik ang Mali

Mag-isip nang transendente, maaari naming ipakita ang larawan kung sino ang kinikilala, ang mga aklatan na PIL at matplotlib ay maaaring maging kapaki-pakinabang, kasama ng mga ito, ang matplotlib ay kailangang mai-install nang manu-mano, patakbuhin ang utos na ito sa terminal ng iyong Raspberry Pi.

sudo pip3 i-install ang matplotlib

I-import ang mga ito sa iyong code, at baguhin kung i-block sa i-unlock () ang paraan na tulad nito:

img = Image.open ('{} / {}. jpg'.format (sarili._ kilala_faces_path, sarili._ kilala_faces_name [0]))

plt.imshow (img) plt.ion () GPIO.output (sarili._ relay_pin, GPIO. HIGH) print ('Bumukas ang Pinto') plt.pause (3) plt.close () GPIO.output (self._ relay_pin, GPIO. LOW) sarili._ reset_recognise_params () ibalik ang Totoo

Ngayon, kung nakilala ang isang mukha, ang larawan sa folder ay ipapakita sa screen.

Larawan
Larawan

SMS

Minsan nais naming malaman kung sino ang nasa aming silid, at ngayon mayroong isang lugar para sa LTE Cat 1 Pi HAT. I-plug dito ang isang SIM card, at sundin ang mga hakbang upang masubukan kung gagana ito o hindi.

Hakbang 1. Paganahin ang UART0 sa Raspberry Pi

Gumamit ng nano upang mai-edit ang config.txt sa / boot

sudo nano /boot/config.txt

idagdag ang dtoverlay = pi3-disable-bt sa ilalim nito, at huwag paganahin ang serbisyo ng hciuart

sudo systemctl huwag paganahin ang hciuart

pagkatapos tanggalin ang console = serial0, 115200 sa cmdline.txt sa / boot

sudo nano /boot/cmdline.txt

Matapos ang lahat ay tapos na, dapat mong i-reboot ang iyong Raspberry Pi.

Hakbang 2. Mag-download ng halimbawa at patakbuhin ito.

Magbukas ng isang terminal sa iyong Raspberry Pi, i-type ang mga utos dito sa linya sa pamamagitan ng linya.

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

Kung nakikita mo ang mga output na ito sa iyong terminal, gumagana nang maayos ang LTE Cat 1 Pi HAT.

Nakita ang header ng 40-pin GPIO

Ang pagpapagana ng CTS0 at RTS0 sa GPIO 16 at 17 rts cts sa paggising… pangalan ng module: LARA-R211 RSSI: 3

Ngayon alam naming gumagana nang maayos ang HAT, kung paano ito magagamit upang magpadala ng SMS? Ang unang bagay na kailangan mong malaman ay ang Raspberry Pi makipag-usap sa HAT sa pamamagitan ng ipadala ang mga utos ng UART. Maaari kang magpadala ng mga utos AT sa LTE HAT sa pamamagitan ng pagpapatakbo ng code na ito sa sawa

mula sa ublox_lara_r2 import *

u = Ublox_lara_r2 () u.initialize () u.reset_power () # Close debug massage u.debug = False u.sendAT ( )

Ang utos ng AT para sa pagpapadala ng SMS ay ang mga sumusunod

SA + CMGF = 1

SA + CMGS =

kaya narito ang _send_sms () na pamamaraan:

def _send_sms (sarili):

kung sarili._ phonenum == Wala: ibalik ang Mali para sa unlocker sa sarili._ pagkilala_face_names (): kung sarili._ ublox.sendAT ('AT + CMGF = 1 / r / n'): i-print (sarili._ ublox.response) kung sarili. _ublox.sendAT ('AT + CMGS = "{}" / r / n'.format (self._ phonenum)): print (self._ ublox.response) kung sarili._ ublox.sendAT (' {} ipasok ang silid. / x1a'.format (unlocker)): print (sarili._ ublox.response)

PAUNAWA: Ang aklatan ng LTE Cat 1 Pi HAT na sinulat ni python2, na hindi masyadong katugma sa python3, kung nais mong gamitin ito sa pagkilala sa mukha, mangyaring i-download ito mula sa link mula sa dulo ng artikulong ito.

Inirerekumendang: