Kazalo:

Pametna ključavnica za prepoznavanje obrazov z LTE Pi HAT: 4 koraki
Pametna ključavnica za prepoznavanje obrazov z LTE Pi HAT: 4 koraki

Video: Pametna ključavnica za prepoznavanje obrazov z LTE Pi HAT: 4 koraki

Video: Pametna ključavnica za prepoznavanje obrazov z LTE Pi HAT: 4 koraki
Video: Abandoned Home In America - Everything Left Behind After An Awful Storm! 2024, December
Anonim
Pametna ključavnica za prepoznavanje obrazov z LTE Pi HAT
Pametna ključavnica za prepoznavanje obrazov z LTE Pi HAT

Prepoznavanje obrazov se vse bolj pogosto uporablja, z njim lahko naredimo pametno ključavnico.

1. korak: Stvari, uporabljene v tem projektu

Strojne komponente

  • Raspberry Pi 3 Model B
  • Modul kamere Raspberry Pi V2
  • Grove - Rele
  • LTE Cat 1 Pi HAT (Evropa)
  • 10,1 -palčni LCD zaslon IPS z ločljivostjo 1200x1980 HDMI

Programske aplikacije in spletne storitve

  • WinSCP
  • Beležnica ++

2. korak: Povezava strojne opreme

Povezava strojne opreme
Povezava strojne opreme

V tem projektu nameravamo fotografirati s pikamero in v njih prepoznati obraze, nato pa na zaslonu prikazati rezultat prepoznavanja. Če so znani obrazi, odprite vrata in po SMS -u pošljite, kdo je odprl vrata, na določeno telefonsko številko.

Torej morate povezati kamero z vmesnikom kamere Raspberry Pi in namestiti anteno in Grove - rele na klobuk LTE Pi, nato pa HAT priključite na svoj Pi. Zaslon lahko povežete z Raspberry Pi prek kabla HDMI, ne pozabite priključiti napajanja na zaslon in Pi.

3. korak: Programiranje programske opreme

Prepoznavanje obrazov

Hvala za Adama Geitgeyja in njegov projekt prepoznavanja obrazov, lahko uporabimo najpreprostejšo svetovno knjižnico za prepoznavanje obrazov na Raspberry Pi. Naslednji koraki vam bodo pokazali, kako nastaviti prepoznavanje obrazov na Pi.

Korak 1. Uporabite raspi-config za konfiguriranje pomnilnika kamere in grafičnega procesorja.

sudo raspi-config

Izbira možnosti vmesnika - Kamera za omogočanje pikamere, nato izbira Napredne možnosti - Razdelitev pomnilnika za nastavitev pomnilnika grafičnega procesorja, ga je treba spremeniti v 64. Po zaključku znova zaženite Raspberry Pi.

Korak 2. Namestite potrebne knjižnice.

sudo apt-get posodobitev

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

Korak 3. Ustvari matriko za podporo picamerea.

sudo pip3 install --upgrade picamera [niz]

Korak 4. Namestite dlib in prepoznavanje obrazov.

sudo pip3 namestite dlib

sudo pip3 namestite face_recognition

Korak 5. Prenesite in zaženite primer prepoznavanja obrazov

git clone-single-branch

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

OBVESTILO: Če imate ImportError: libatlas.so.3: ne more odpreti predmetne datoteke v skupni rabi: Taka datoteka ali imenik ni, zaženite naslednji ukaz, da to popravite.

Rele

Ko je prepoznavanje obrazov pripravljeno, lahko še naprej dodajamo dodatne funkcije. Povezali smo Grove - Relay z LTE Cat 1 Pi HAT, vendar uporablja digitalna vrata in ne vrata I2C.

To je pin-out za Raspberry Pi 3B, vidimo lahko pin SDA in SCL, ki se nahajata v zatičih 3 in 5 na plošči.

Slika
Slika

Tako lahko upravljamo rele z izhodom digitalnega signala na pin 5. Zaženite program Python navzdol na vašem Raspberry Pi, če nič ne bo narobe, boste iz releja slišali Ti-Ta.

uvozite RPi. GPIO kot GPIO

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

Tako je ideja: naložimo znane obraze iz mape, prepoznamo obraze, ki jih zajame pikamera, če obraz v mapi, krmilni rele za odklepanje vrat. Lahko jih zapakiramo v razred, tukaj sta metoda load_known_faces () in metoda unlock (), dokončan program lahko prenesete na koncu tega članka.

def load_known_faces (self):

known_faces = os.listdir (self._ known_faces_path) for known_face v 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_face_p)) 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 ('Door open') time.sleep (5) GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return True self._ retry_count += 1 print ('Poskusite znova … { } '. format (self._ retry_count)) return False

Pomislite transcendentalno, lahko prikažemo sliko, ki je prepoznala, knjižnici PIL in matplotlib sta lahko v pomoč, med njimi je treba matplotlib namestiti ročno, zaženite ta ukaz v terminalu Raspberry Pi.

sudo pip3 namestite matplotlib

Uvozite jih v svojo kodo in spremenite način blokiranja v načinu unlock (), kot je ta:

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

Če bo obraz prepoznan, bo slika v mapi prikazana na zaslonu.

Slika
Slika

SMS

Včasih želimo vedeti, kdo je v naši sobi, zdaj pa je prostor za LTE Cat 1 Pi HAT. Nanjo priključite kartico SIM in sledite spodnjim korakom, da preverite, ali deluje ali ne.

Korak 1. Omogočite UART0 v Raspberry Pi

Uporabite nano za urejanje config.txt v /boot

sudo nano /boot/config.txt

na dno dodajte dtoverlay = pi3-disable-bt in onemogočite storitev hciuart

sudo systemctl onemogoči hciuart

nato izbrišite console = serial0, 115200 v cmdline.txt v /boot

sudo nano /boot/cmdline.txt

Ko je vse opravljeno, znova zaženite svoj Raspberry Pi.

Korak 2. Prenesite primer in ga zaženite.

Odprite terminal na Raspberry Pi in vnesite ta ukaz zanj.

cd ~

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

Če vidite te izhode v svojem terminalu, LTE Cat 1 Pi HAT deluje dobro.

Zaznana je 40-polna glava GPIO

Omogočanje CTS0 in RTS0 na GPIO 16 in 17 rts cts ob prebujanju … ime modula: LARA-R211 RSSI: 3

Zdaj smo vedeli, da HAT dobro deluje, kako ga uporabiti za pošiljanje SMS? Prva stvar, ki jo morate vedeti, je, da Raspberry Pi komunicira s HAT prek ukazov za pošiljanje UART. Ukaze AT lahko pošljete v LTE HAT tako, da to kodo zaženete v pythonu

iz ublox_lara_r2 uvoz *

u = Ublox_lara_r2 () u.initialize () u.reset_power () # Zapri masažo odpravljanja napak u.debug = False u.sendAT ('')

Ukaz AT za pošiljanje SMS je naslednji

AT+CMGF = 1

AT+CMGS =

torej tukaj je metoda _send_sms ():

def _send_sms (self):

if self._ phonenum == None: return False za odklepanje v self._ prepoznat_ime_nazivov (): if self._ ublox.sendAT ('AT+CMGF = 1 / r / n'): print (self._ ublox.response) if self. _ublox.sendAT ('AT+CMGS = "{}" / r / n'.format (self._ phonenum)): natisnite (self._ ublox.response), če self._ ublox.sendAT (' {} vstopite v sobo. / x1a'.format (odklepanje)): print (self._ ublox.response)

OBVESTILO: Knjižnica LTE Cat 1 Pi HAT, ki jo je napisal python2 in ni zelo združljiva s python3, če jo želite uporabljati s prepoznavanjem obrazov, jo prenesite s povezave na koncu tega članka.

Priporočena: