Inhaltsverzeichnis:

Gesichtserkennung Smart Lock mit LTE Pi HAT - Gunook
Gesichtserkennung Smart Lock mit LTE Pi HAT - Gunook

Video: Gesichtserkennung Smart Lock mit LTE Pi HAT - Gunook

Video: Gesichtserkennung Smart Lock mit LTE Pi HAT - Gunook
Video: Face Recognization Smart Lock with LTE Pi HAT(Updated) 2024, Dezember
Anonim
Gesichtserkennung Smart Lock mit LTE Pi HAT
Gesichtserkennung Smart Lock mit LTE Pi HAT

Die Gesichtserkennung wird immer häufiger verwendet, wir können sie verwenden, um ein intelligentes Schloss zu erstellen.

Schritt 1: Dinge, die in diesem Projekt verwendet werden

Hardware-Komponenten

  • Raspberry Pi 3 Modell B
  • Raspberry Pi Kameramodul V2
  • Grove - Relais
  • LTE Cat 1 Pi HAT (Europa)
  • 10,1 Zoll 1200x1980 HDMI IPS LCD-Display

Software-Apps und Online-Dienste

  • WinSCP
  • Notizblock++

Schritt 2: Hardwareverbindung

Hardware-Verbindung
Hardware-Verbindung

In diesem Projekt planen wir, Bilder mit Picamera aufzunehmen und darin Gesichter zu erkennen und dann das Erkennungsergebnis auf dem Bildschirm anzuzeigen. Wenn Gesichter bekannt sind, öffnen Sie die Tür und senden Sie per SMS, wer die Tür geöffnet hat, an die angegebene Telefonnummer.

Sie müssen also eine Kamera an die Kameraschnittstelle des Raspberry Pi anschließen, Antenne und Grove - Relais an LTE-Pi-Hut installieren und dann HAT an Ihren Pi anschließen. Der Bildschirm kann über ein HDMI-Kabel mit dem Raspberry Pi verbunden werden, vergessen Sie nicht, den Bildschirm und das Pi mit Strom zu versorgen.

Schritt 3: Softwareprogrammierung

Gesichtserkennung

Danke für Adam Geitgey und sein Gesichtserkennungsprojekt, wir können die einfachste Gesichtserkennungsbibliothek der Welt auf Raspberry Pi verwenden. Die folgenden Schritte zeigen Ihnen, wie Sie die Gesichtserkennung auf Pi einrichten.

Schritt 1. Verwenden Sie raspi-config, um den Kamera- und GPU-Speicher zu konfigurieren.

sudo raspi-config

Wählen Sie Schnittstellenoptionen – Kamera, um die Picamera zu aktivieren, und wählen Sie dann Erweiterte Optionen – Speicheraufteilung, um den GPU-Speicher einzustellen. Er sollte auf 64 geändert werden. Starten Sie Ihren Raspberry Pi nach Abschluss neu.

Schritt 2. Installieren Sie die erforderlichen 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

Schritt 3. Machen Sie picamerea unterstützt Array.

sudo pip3 install --upgrade picamera[array]

Schritt 4. Installieren Sie dlib und Gesichtserkennung.

sudo pip3 dlib installieren

sudo pip3 install face_recognition

Schritt 5. Laden Sie das Beispiel für die Gesichtserkennung herunter und führen Sie es aus

git clone --single-branch

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

HINWEIS: Wenn Sie ImportError: libatlas.so.3: Shared Object File nicht öffnen können: Keine solche Datei oder kein solches Verzeichnis, führen Sie den folgenden Befehl aus, um das Problem zu beheben.

Relais

Wenn die Gesichtserkennung bereit ist, können wir weitere Funktionen hinzufügen. Wir haben Grove - Relay mit LTE Cat 1 Pi HAT verbunden, aber es verwendet einen digitalen Port anstelle eines I2C-Ports.

Dies ist die Pinbelegung für Raspberry Pi 3B, wir können den SDA-Pin und den SCL-Pin in Pin 3 und Pin 5 der Platine sehen.

Bild
Bild

So können wir das Relais steuern, indem wir ein digitales Signal an Pin 5 ausgeben. Führen Sie das folgende Python-Programm auf Ihrem Raspberry Pi aus. Wenn nichts schief geht, hören Sie ein Ti-Ta vom Relais.

RPi. GPIO als GPIO importieren

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

Hier ist also die Idee, bekannte Gesichter aus einem Ordner zu laden, von Picamera erfasste Gesichter zu erkennen, wenn das Gesicht im Ordner ist, Steuerrelais zum Entriegeln der Tür. Wir können sie in eine Klasse packen, hier ist die Methode load_known_faces() und unlock(), das fertige Programm kann am Ende dieses Artikels heruntergeladen werden.

def load_known_faces(self):

bekannte_gesichter = os.listdir(self._known_faces_path) für bekanntes_gesicht in bekannten_gesichtern: self._known_faces_name.append(known_face[0: len(bekanntes_gesicht) - len('.jpg')]) bekanntes_gesicht_image = face_recognition.load_image_file(self._known_faces_path +) 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('Tür geöffnet') time.sleep(5) GPIO.output(self._relay_pin, GPIO. LOW) self._reset_recognise_params() return True self._retry_count += 1 print('Bitte erneut versuchen…{ }'.format(self._retry_count)) gibt False zurück

Denken Sie transzendental, wir können das Bild zeigen, wer erkannt hat, Bibliotheken PIL und Matplotlib können hilfreich sein, unter anderem muss Matplotlib manuell installiert werden, führen Sie diesen Befehl im Terminal Ihres Raspberry Pi aus.

sudo pip3 installiere matplotlib

Importieren Sie sie in Ihren Code und ändern Sie den Block in der Methode unlock() wie folgt:

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('Tür geöffnet') plt.pause(3) plt.close() GPIO.output(self._relay_pin, GPIO. LOW) self._reset_recognise_params() gibt True zurück

Wird nun ein Gesicht erkannt, wird das Bild im Ordner auf dem Bildschirm angezeigt.

Bild
Bild

SMS

Manchmal wollen wir wissen, wer in unserem Zimmer ist, und jetzt gibt es einen Platz für LTE Cat 1 Pi HAT. Stecken Sie eine SIM-Karte ein und befolgen Sie die Schritte, um zu testen, ob es funktioniert oder nicht.

Schritt 1. Aktivieren Sie UART0 in Raspberry Pi

Verwenden Sie nano, um config.txt in /boot zu bearbeiten

sudo nano /boot/config.txt

fügen Sie dtoverlay=pi3-disable-bt am Ende hinzu und deaktivieren Sie den hciuart-Dienst

sudo systemctl deaktivieren hciuart

dann lösche console=serial0, 115200 in cmdline.txt in /boot

sudo nano /boot/cmdline.txt

Nachdem alles erledigt ist, sollten Sie Ihren Raspberry Pi neu starten.

Schritt 2. Laden Sie das Beispiel herunter und führen Sie es aus.

Öffnen Sie ein Terminal auf Ihrem Raspberry Pi, geben Sie diesen Befehl Zeile für Zeile ein.

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

Wenn Sie diese Ausgänge in Ihrem Terminal sehen, funktioniert der LTE Cat 1 Pi HAT gut.

40-Pin-GPIO-Header erkannt

Aktivieren von CTS0 und RTS0 auf GPIOs 16 und 17 rts cts beim Aufwachen… Modulname: LARA-R211 RSSI: 3

Jetzt wussten wir, dass der HAT gut funktioniert, wie kann man ihn verwenden, um SMS zu senden? Das erste, was Sie wissen müssen, ist, dass der Raspberry Pi über das Senden von AT-Befehlen per UART mit dem HAT kommuniziert. Sie können AT-Befehle an LTE HAT senden, indem Sie diesen Code in Python ausführen

aus ublox_lara_r2 importieren *

u = Ublox_lara_r2() u.initialize() u.reset_power() # Debugmeldung schließen u.debug = False u.sendAT('')

Der AT-Befehl zum Senden von SMS lautet wie folgt

AT+CMGF=1

AT+CMGS=

Hier ist also die Methode _send_sms():

def _sms (selbst):

if self._phonenum == None: false zurückgeben für 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) if self._ublox.sendAT('{} betritt den Raum.\ x1a'.format(unlocker)): print(self._ublox.response)

HINWEIS: Die von Python2 geschriebene Bibliothek des LTE Cat 1 Pi HAT, die nicht sehr kompatibel mit Python3 ist, wenn Sie sie mit Gesichtserkennung verwenden möchten, laden Sie sie bitte über den Link am Ende dieses Artikels herunter.

Empfohlen: