Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Kasvojentunnistusta käytetään yhä laajemmin, voimme käyttää sitä älykkään lukon luomiseen.
Vaihe 1: Tässä projektissa käytetyt asiat
Laitteiston osat
- Raspberry Pi 3 Malli B
- Raspberry Pi -kameramoduuli V2
- Grove - Viesti
- LTE Cat 1 Pi HAT (Eurooppa)
- 10,1 tuuman 1200x1980 HDMI IPS LCD -näyttö
Ohjelmistosovellukset ja verkkopalvelut
- WinSCP
- Muistio ++
Vaihe 2: Laitteistoyhteys
Tässä projektissa aiomme ottaa kuvia pikakameralla ja tunnistaa niissä kasvot ja näyttää tunnistustuloksen näytöllä. Jos kasvot ovat tiedossa, avaa ovi ja lähetä tekstiviestillä määritettyyn puhelinnumeroon kuka avasi oven.
Joten sinun on liitettävä kamera Raspberry Pi -kameran käyttöliittymään ja asennettava antenni ja Grove - Rele LTE Pi -hattuun ja liitettävä HAT Pi -laitteeseen. Näyttö voidaan liittää Raspberry Pi -laitteeseen HDMI -kaapelilla, älä unohda kytkeä virtaa näyttöön ja Pi: hen.
Vaihe 3: Ohjelmointi
Kasvojen tunnistus
Kiitos Adam Geitgeystä ja hänen kasvojentunnistusprojektistaan, voimme käyttää maailman yksinkertaisinta kasvojentunnistuskirjastoa Raspberry Pi: llä. Seuraavat vaiheet näyttävät, kuinka voit määrittää kasvojentunnistuksen Pi -laitteeseen.
Vaihe 1. Määritä kameran ja näytönohjaimen muisti raspi-config-toiminnolla.
sudo raspi-config
Kun valitset käyttöliittymän vaihtoehdot - Kamera ottaaksesi pikakameran käyttöön, valitse sitten Lisäasetukset - Muistijakaja asettaaksesi GPU -muistin. Muuta se 64. Kun olet valmis, käynnistä Raspberry Pi uudelleen.
Vaihe 2. Asenna tarvittavat kirjastot.
sudo apt-get päivitys
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
Vaihe 3. Tee picamerea -tuki.
sudo pip3 install -päivitä picamera [array]
Vaihe 4. Asenna dlib ja kasvojentunnistus.
sudo pip3 asenna dlib
sudo pip3 asenna face_recognition
Vaihe 5. Lataa ja suorita esimerkki kasvojentunnistuksesta
git klooni-yksi haara
cd./face_recognition/esimerkit python3 facerec_on_raspberry_pi.py
VAROITUS: Jos sinulla on ImportError: libatlas.so.3: ei voi avata jaetun objektin tiedostoa: Ei tällaista tiedostoa tai hakemistoa, korjaa se suorittamalla seuraava komento.
Rele
Kun kasvojentunnistus on valmis, voimme jatkaa lisäominaisuuksien lisäämistä. Yhdistimme Grove - releen LTE Cat 1 Pi HAT -laitteeseen, mutta se käyttää digitaalista porttia I2C -portin sijaan.
Tämä on Raspberry Pi 3B: n pin-out, voimme nähdä SDA-nastan ja SCL-tapin, jotka sijaitsevat levyn nastoissa 3 ja 5.
Voimme siis ohjata relettä antamalla digitaalisen signaalin nastaan 5. Suorita Raspberry Pi -laitteen python-ohjelma, jos mikään ei mene pieleen, kuulet releen Ti-Ta.
Tuo RPi. GPIO GPIO: ksi
RELAY_PIN = 5 GPIO.setm (GPIO. BOARD) GPIO.setup (RELAY_PIN, GPIO. OUT) GPIO. output (RELAY_PIN, GPIO. HIGH)
Joten tässä on idea, lataamme tunnetut kasvot kansiosta, tunnistamme picamera -kameran ottamat kasvot, jos kansion kasvot, ohjaa rele oven avaamiseksi. Voimme pakata ne luokkaan, tässä on load_known_faces () -menetelmä ja unlock () -metodi, valmis ohjelma voidaan ladata tämän artikkelin lopussa.
def load_known_faces (itse):
tunnetut_kasvot = os.listdir (itse._ tunnetut_käytäntöpolut) tunnetuille kasvoille tunnetuissa käyttöliittymissä: itse._ tunnetut kasvot_nimi.append (tunnetut_kasvot [0: len (tunnetut_kasvot) - len ('. jpg')]) tunnetut kasvot -kuvat = kasvotunnistus.latauskuvakuvatiedostot (tunnetut) itse._ tunnetut_liittymät_koodaus.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 ('Ovi auki') time.sleep (5) GPIO. output (self._ rele_pin, GPIO. LOW) self._ reset_recognise_params () return true self._ retry_count += 1 print ('Yritä uudelleen… { } '. format (self._ retry_count)) return False
Ajattele transsendenttisesti, voimme näyttää kuvan, kuka tunnisti, kirjastot PIL ja matplotlib voivat olla hyödyllisiä, muun muassa matplotlib on asennettava manuaalisesti, suorita tämä komento Raspberry Pi -päätteessäsi.
sudo pip3 asenna matplotlib
Tuo ne koodiin ja muuta, jos estät lukituksen avausmenetelmässä () seuraavasti:
img = Image.open ('{}/{}. jpg'.format (itse._ tunnetut_käyttöpolut, itse._ tunnetut_käyttäjien_nimet [0]))
plt.imshow (img) plt.ion () GPIO.output (itse._ relay_pin, GPIO. HIGH) print ('Ovi auki') plt.pause (3) plt.close () GPIO. output (self._ relay_pin, GPIO. LOW) itse._ reset_recognise_params () return True
Jos kasvot tunnistetaan, kansion kuva näytetään näytöllä.
tekstiviesti
Joskus haluamme tietää, kuka on huoneessamme, ja nyt on paikka LTE Cat 1 Pi HATille. Liitä SIM -kortti siihen ja testaa toimiiko se noudattamalla vaiheita.
Vaihe 1. Ota UART0 käyttöön Raspberry Pi: ssä
Käytä nanoa muokataksesi config.txt -tiedostoa /boot
sudo nano /boot/config.txt
lisää dtoverlay = pi3-disable-bt sen pohjaan ja poista hciuart-palvelu käytöstä
sudo systemctl poista hciuart käytöstä
poista sitten konsoli = serial0, 115200 cmdline.txt -tiedostossa /boot
sudo nano /boot/cmdline.txt
Kun kaikki on tehty, sinun on käynnistettävä Raspberry Pi uudelleen.
Vaihe 2. Lataa esimerkki ja suorita se.
Avaa pääte Raspberry Pi -laitteellasi, kirjoita nämä komennot sille rivi riviltä.
cd ~
git-klooni https://github.com/Seeed-Studio/ublox_lara_r2_pi_hat.git cd cd ublox_lara_r2_pi_hat sudo python setup.py asenna cd-testi sudo python test01.py
Jos näet nämä lähdöt päätelaitteessasi, LTE Cat 1 Pi HAT toimii hyvin.
40-nastainen GPIO-otsikko havaittu
CTS0: n ja RTS0: n ottaminen käyttöön GPIO-laitteissa 16 ja 17 rts cts herätessä… moduulin nimi: LARA-R211 RSSI: 3
Nyt tiesimme, että HAT toimii hyvin, miten sitä käytetään tekstiviestien lähettämiseen? Ensimmäinen asia, joka sinun on tiedettävä, on, että Raspberry Pi kommunikoi HAT: n kanssa UART: n lähettämien AT -komentojen kautta. Voit lähettää AT -komentoja LTE HAT: lle suorittamalla tämän koodin pythonissa
ublox_lara_r2 -tuonnista *
u = Ublox_lara_r2 () u.initialize () u.reset_power () # Sulje virheenkorjaus hieronta u.debug = False u.sendAT ('')
AT -komento tekstiviestien lähettämiseen on seuraava
AT+CMGF = 1
AT+CMGS =
joten tässä on _send_sms () -menetelmä:
def _send_sms (itse):
jos itse._ phonenum == Ei mitään: palauta False for unlocker in self._ tunnista_kasvun_nimet (): if self._ ublox.sendAT ('AT+CMGF = 1 / r / n'): print (self._ ublox.response) if self. _ublox.sendAT ('AT+CMGS = "{}" / r / n'.format (self._ phonenum)): tulosta (self._ ublox.response) jos itse._ ublox.sendAT (' {} astu huoneeseen. / x1a'.format (lukituksen avaaja)): tulosta (itse._ ublox.response)
HUOMAUTUS: LTE Cat 1 Pi HAT: n kirjasto, jonka on kirjoittanut python2, joka ei ole kovin yhteensopiva python3: n kanssa. Jos haluat käyttää sitä kasvojentunnistuksen kanssa, lataa se tämän artikkelin lopussa olevasta linkistä.