Inhaltsverzeichnis:

Raspberry Pi Human Detector + Kamera + Flask - Gunook
Raspberry Pi Human Detector + Kamera + Flask - Gunook

Video: Raspberry Pi Human Detector + Kamera + Flask - Gunook

Video: Raspberry Pi Human Detector + Kamera + Flask - Gunook
Video: Raspberry Pi Camera Live Feed with Python and Flask. 2024, Juli
Anonim
Raspberry Pi Menschendetektor + Kamera + Flasche
Raspberry Pi Menschendetektor + Kamera + Flasche

In diesem Tutorial werde ich die Schritte für mein Raspberry Pi IoT-Projekt durchgehen – Verwenden des PIR-Bewegungssensors, des Raspberry Camera-Moduls zum Erstellen eines einfachen Sicherheits-IoT-Geräts und Zugreifen auf das Erkennungsprotokoll mit Flask.

Schritt 1: PIR-Bewegungssensor

PIR-Bewegungssensor
PIR-Bewegungssensor

PIR steht für "Passive Infrared" und dieser Bewegungssensor nimmt Bewegungen auf, indem er die Infrarotansicht beobachtet und die Infrarotänderungen aufnimmt. Wenn ein Blatt und ein Mensch den Sensor passieren, erkennt er daher nur den Menschen, da wir als Menschen Wärme erzeugen und somit Infrarotstrahlen aussenden. Daher ist der Bewegungssensor eine gute Wahl, um menschliche Bewegungen zu erkennen.

Schritt 2: Einrichtung des PIR-Bewegungssensors

Einrichtung des PIR-Bewegungssensors
Einrichtung des PIR-Bewegungssensors

Es gibt drei Pins für PIR-Bewegungssensor, Strom, Ausgang und Masse. Unter den Pins sehen Sie die Beschriftungen VCC für Power, Out für Output und GND für Masse. Wenn der Sensor Bewegungen erkennt, gibt der Output-Pin ein HIGH-Signal an den Raspberry Pi-Pin aus, mit dem Sie den Sensor verbinden. Für den Power-Pin möchten Sie sicherstellen, dass er für die Stromversorgung mit dem 5V-Pin des Raspberry Pi verbunden ist. Für mein Projekt wähle ich, den Output-Pin mit Pin11 auf Pi zu verbinden.

Nachdem Sie alles verbunden haben, können Sie Ihrem Sensor eine SMS senden, indem Sie Skripte wie das folgende ausführen:

import RPi. GPIO als GPIOimport time GPIO.cleanup() GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #Lesen Sie die Ausgabe vom PIR-Bewegungssensor an Pin 11, während True: i =GPIO.input(11) if i==0: #Wenn die Ausgabe des Bewegungssensors LOW ist, drucken Sie "Keine Erkennung", i time.sleep(0.1) elif i==1: #Wenn die Ausgabe des Bewegungssensors HIGH ist, drucken Sie " Bewegung erkannt", i time.sleep(0.1)

Führen Sie das Skript auf Ihrem Pi aus und legen Sie Ihre Hände oder Ihren Freund vor den Sensor, um zu überprüfen, ob der Sensor die Bewegung aufnimmt.

Schritt 3: Raspberry Pi Kameramodul und Einrichtung

Raspberry Pi Kameramodul und Einrichtung
Raspberry Pi Kameramodul und Einrichtung

Der Mensch sendet aufgrund der Hitze Infrarotstrahlen aus, ebenso wie Objekte mit Temperaturen. Daher können auch Tiere oder heiße Gegenstände den Bewegungssensor auslösen. Wir brauchen eine Möglichkeit, um zu überprüfen, ob die Erkennung gültig ist. Es gibt viele Möglichkeiten zur Implementierung, aber in meinem Projekt wähle ich das Raspberry Pi-Kameramodul, um Bilder zu machen, wenn der Bewegungssensor Bewegungen aufnimmt.

Um das Kameramodul zu verwenden, möchten Sie zunächst sicherstellen, dass die Pins in den Kamerasteckplatz auf Pi eingesteckt sind. Typ

sudo raspi-config

auf Ihrem Pi, um die Konfigurationsoberfläche zu öffnen und die Kamera in den "Schnittstellenoptionen" zu aktivieren. Nach dem Neustart können Sie testen, ob der Pi tatsächlich mit der Kamera verbunden ist, indem Sie eingeben

vcgencmd get_camera

und es zeigt Ihnen den Status an. Der letzte Schritt ist die Installation des Picamera-Moduls durch Eingabe von

pip installieren picamera

Nach allen Setups können Sie Ihre Kamera testen, indem Sie Skripte wie das folgende ausführen:

aus Picamera importieren PiCamera

from time import sleep camera = PiCamera() camera.start_preview() sleep(2) camera.capture('image.jpg') camera.stop_preview()

Das Bild wird als 'image.jpg' im Verzeichnis gespeichert, das dem Ihres Kameraskripts entspricht. Beachten Sie, dass Sie sicherstellen möchten, dass 'sleep(2)' vorhanden ist und die Zahl größer als 2 ist, damit die Kamera genügend Zeit hat, die Lichtverhältnisse anzupassen.

Schritt 4: PIR-Bewegungssensor und Kameramodul kombinieren

Die Idee meines Projekts ist, dass der Bewegungssensor und die Kamera in die gleiche Richtung zeigen. Immer wenn der Bewegungssensor Bewegungen aufnimmt, macht die Kamera ein Bild, damit wir später überprüfen können, was die Bewegungen verursacht.

Das Skript:

Import RPi. GPIO als GPIOfrom datetime import datetime import time from picamera import PiCamera

GPIO.cleanup()

GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #Ausgabe von PIR-Bewegungssensor-Nachricht lesen = 'Start'-Zähler = 0 log_f = open('static/log.txt', 'w') log_f.close()

Kamera = PiCamera()

Bildname = 0

Kamera.start_preview()

Zeit. Schlaf(2)

während Wahr:

i=GPIO.input(11) if i==0: #Wenn der Ausgang des Bewegungssensors LOW ist, wenn der Zähler > 0: end = str(datetime.now()) log_f = open('static/log.txt', ' a') Nachricht = Nachricht + '; end at ' + end + '\n' print(message) log_f.write(message) log_f.close() final = 'static/' + str(pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture(final) counter = 0 print "Keine Eindringlinge", i time.sleep(0.1) elif i==1: #Wenn die Ausgabe vom Bewegungssensor HIGH ist, wenn counter == 0: current = str(datetime.now()) message = 'Mensch erkannt:' + 'Start bei ' + aktueller Zähler = Zähler + 1 Druck "Eindringling erkannt", i time.sleep(0.1) camera.stop_preview()

Die Verzeichnisse für 'log.txt' und Bilder sind 'statisch', was für die Funktion von Flask notwendig ist.

Schritt 5: Einrichtung für Flask

Setup für Flask
Setup für Flask

Flask ist ein in Python geschriebenes Micro-Web-Framework, das auf dem Werkzeug-Toolkit und der Jinja2-Template-Engine basiert. Es ist einfach zu implementieren und zu warten. Für ein besseres Tutorial für Flask empfehle ich diesen Link: Flask Mega Tutorial

Das Hauptskript 'routes.py' meines Projekts:

from appfolder import appFlaskfromflakon import render_template, import os umleiten

APP_ROOT = os.path.dirname(os.path.abspath(_file_)) # verweist auf application_top

APP_STATIC = os.path.join(APP_ROOT, 'statisch')

@appFlask.route('/', Methoden=['GET', 'POST'])

def view(): log_f = open(os.path.join(APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines() final_logs = für Login-Logs: final_logs.append(log. strip()) name = str(len(final_logs)-1)+'.jpg' return render_template('view.html', logs=final_logs, filename=name)

Die HTML-Datei 'view.html' befindet sich in der oberen Leiste (denn wenn ich die HTML-Codes hierher kopiere, wird sie tatsächlich in HTML-FORMAT umgewandelt…)

Und die Struktur des Projekts sollte wie folgt aussehen (aber natürlich gibt es mehr Dateien als diese):

iotproject\ appfolder\routes.py templates\ view.html static\ log.txt 0-j.webp

Schritt 6: Ergebnis

Ergebnis
Ergebnis

Für diese Implementierung sollten Sie nach der korrekten Einrichtung in der Lage sein, auf Ihren Raspberry Pi zuzugreifen, indem Sie seine IP-Adresse in den Browser eingeben, und das Ergebnis sollte in diesem Schritt wie in der oberen Leiste aussehen.