Inhoudsopgave:

Gezichtsherkenning Smart Lock met LTE Pi HAT - Ajarnpa
Gezichtsherkenning Smart Lock met LTE Pi HAT - Ajarnpa

Video: Gezichtsherkenning Smart Lock met LTE Pi HAT - Ajarnpa

Video: Gezichtsherkenning Smart Lock met LTE Pi HAT - Ajarnpa
Video: OSCAL C60: сверхдоступный смартфон // Обзор из реальной жизни 2024, November
Anonim
Gezichtsherkenning Smart Lock met LTE Pi HAT
Gezichtsherkenning Smart Lock met LTE Pi HAT

Gezichtsherkenning wordt steeds meer gebruikt, we kunnen er een slim slot van maken.

Stap 1: Dingen die in dit project worden gebruikt

Hardware onderdelen

  • Raspberry Pi 3 Model B
  • Raspberry Pi-cameramodule V2
  • Grove - Estafette
  • LTE Cat 1 Pi HOED (Europa)
  • 10,1-inch 1200x1980 HDMI IPS LCD-scherm

Software-apps en online services

  • WinSCP
  • Kladblok++

Stap 2: Hardwareverbinding

Hardwareverbinding
Hardwareverbinding

In dit project zijn we van plan om foto's te maken met picamera en gezichten erin te herkennen, en vervolgens het herkenningsresultaat op het scherm weer te geven. Als gezichten bekend zijn, open dan de deur en stuur via sms wie de deur heeft geopend naar het opgegeven telefoonnummer.

Je moet dus een camera aansluiten op de camera-interface van Raspberry Pi en een antenne en Grove - Relay op de LTE Pi-hoed installeren, en vervolgens HAT op je Pi aansluiten. Scherm kan via een HDMI-kabel op Raspberry Pi worden aangesloten, vergeet niet de stroom op je scherm en Pi aan te sluiten.

Stap 3: Softwareprogrammering

Gezichtsherkenning

Bedankt voor Adam Geitgey en zijn gezichtsherkenningsproject, we kunnen 's werelds eenvoudigste gezichtsherkenningsbibliotheek op Raspberry Pi gebruiken. De volgende stappen laten u zien hoe u gezichtsherkenning op Pi instelt.

Stap 1. Gebruik raspi-config om het camera- en GPU-geheugen te configureren.

sudo raspi-config

Interface-opties kiezen -- Camera om de picamera in te schakelen, dan Geavanceerde opties kiezen -- Geheugen splitsen om GPU-geheugen in te stellen, dit moet worden gewijzigd in 64. Na het voltooien, start u uw Raspberry Pi opnieuw op.

Stap 2. Installeer de vereiste bibliotheken.

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

Stap 3. Maak picamerea ondersteunt array.

sudo pip3 install --upgrade picamera[array]

Stap 4. Installeer dlib en gezichtsherkenning.

sudo pip3 installeer dlib

sudo pip3 installeer face_recognition

Stap 5. Voorbeeld van gezichtsherkenning downloaden en uitvoeren

git clone --single-branch

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

KENNISGEVING: Als u ImportError: libatlas.so.3: kan het gedeelde objectbestand niet openen: geen dergelijk bestand of map, voer dan de volgende opdracht uit om het te repareren.

Relais

Als gezichtsherkenning klaar is, kunnen we doorgaan met het toevoegen van extra functies. We hebben Grove - Relay aangesloten op LTE Cat 1 Pi HAT, maar het gebruikt een digitale poort in plaats van een I2C-poort.

Dit is pin-out voor Raspberry Pi 3B, we kunnen de SDA-pin en SCL-pin zien in pin 3 en pin 5 van het bord.

Afbeelding
Afbeelding

Dus we kunnen het relais besturen door een digitaal signaal uit te voeren naar pin 5. Voer het volgende python-programma uit op je Raspberry Pi, als er niets misgaat, hoor je een Ti-Ta van relais.

importeer RPi. GPIO als GPIO

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

Dus hier is het idee, we laden bekende gezichten uit een map, herkennen gezichten die zijn vastgelegd door picamera, als het gezicht in de map staat, stuurrelais om de deur te ontgrendelen. We kunnen ze in een klasse verpakken, hier is de methode load_known_faces() en de methode unlock(), het voltooide programma kan aan het einde van dit artikel worden gedownload.

def load_known_faces(zelf):

bekende_gezichten = os.listdir(zelf._bekende_gezichten_pad) voor bekend_gezicht in bekende_gezichten: zelf._bekende_faces_name.append(known_face[0: len(known_face) - len('.jpg')]) famous_face_image = face_recognition.load_image_file(self._known_faces_) 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('Deur geopend') time.sleep(5) GPIO.output(self._relay_pin, GPIO. LOW) self._reset_recognise_params() return True self._retry_count += 1 print('Probeer het opnieuw…{ }'.format(self._retry_count)) return False

Denk transcendent, we kunnen de foto laten zien die herkende, bibliotheken PIL en matplotlib kunnen nuttig zijn, waaronder matplotlib moet handmatig worden geïnstalleerd, voer deze opdracht uit in de terminal van uw Raspberry Pi.

sudo pip3 matplotlib installeren

Importeer ze in je code, en verander if block in unlock() methode als volgt:

img = Afbeelding.open('{}/{}.jpg'.format(zelf._bekende_gezichten_pad, zelf._bekende_faces_name[0]))

plt.imshow(img) plt.ion() GPIO.output(self._relay_pin, GPIO. HIGH) print('Deur geopend') plt.pause(3) plt.close() GPIO.output(self._relay_pin, GPIO. LOW) self._reset_recognise_params() return True

Als er nu een gezicht wordt herkend, wordt de afbeelding in de map op het scherm weergegeven.

Afbeelding
Afbeelding

sms

Soms willen we weten wie er in onze kamer is, en nu is er plaats voor LTE Cat 1 Pi HAT. Sluit er een simkaart op aan en volg de stappen om te testen of het werkt of niet.

Stap 1. Schakel UART0 in Raspberry Pi in

Gebruik nano om config.txt te bewerken in /boot

sudo nano /boot/config.txt

voeg dtoverlay=pi3-disable-bt toe aan de onderkant ervan en schakel de hciuart-service uit

sudo systemctl schakel hciuart uit

verwijder vervolgens console=serial0, 115200 in cmdline.txt in /boot

sudo nano /boot/cmdline.txt

Nadat alles is gedaan, moet je je Raspberry Pi opnieuw opstarten.

Stap 2. Download het voorbeeld en voer het uit.

Open een terminal op je Raspberry Pi, typ deze opdracht regel voor regel erin.

cd ~

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

Als u deze uitgangen in uw terminal ziet, werkt de LTE Cat 1 Pi HAT goed.

40-pins GPIO-header gedetecteerd

CTS0 en RTS0 inschakelen op GPIO's 16 en 17 rts cts bij het ontwaken… modulenaam: LARA-R211 RSSI: 3

Nu wisten we dat de HAT goed werkt, hoe kunnen we hem gebruiken om sms'jes te verzenden? Het eerste dat u moet weten, is dat de Raspberry Pi met de HAT communiceert via AT-opdrachten via UART. Je kunt AT-opdrachten naar LTE HAT sturen door deze code in python uit te voeren

van ublox_lara_r2 import *

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

Het AT-commando voor het verzenden van sms is als volgt:

AT+CMGF=1

AT+CMGS=

dus hier is de _send_sms() methode:

def _send_sms(zelf):

if self._phonenum == Geen: return False voor unlocker 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) als self._ublox.sendAT('{} de kamer binnenkomt.\ x1a'.format(unlocker)): print(self._ublox.response)

KENNISGEVING: De bibliotheek van de LTE Cat 1 Pi HAT, geschreven door python2, die niet erg compatibel is met python3, als u deze wilt gebruiken met gezichtsherkenning, download deze dan via de link aan het einde van dit artikel.

Aanbevolen: