Inhoudsopgave:

Raspberry Pi menselijke detector + camera + fles - Ajarnpa
Raspberry Pi menselijke detector + camera + fles - Ajarnpa

Video: Raspberry Pi menselijke detector + camera + fles - Ajarnpa

Video: Raspberry Pi menselijke detector + camera + fles - Ajarnpa
Video: Raspberry Pi High Quality Camera Getting Started Guide - First Pictures and Videos 2024, November
Anonim
Raspberry Pi Menselijke Detector + Camera + Fles
Raspberry Pi Menselijke Detector + Camera + Fles

In deze tutorial zal ik de stappen voor mijn Raspberry Pi IoT-project doorlopen: PIR-bewegingssensor, Raspberry Camera-module gebruiken om een eenvoudig IoT-beveiligingsapparaat te bouwen en toegang krijgen tot het detectielogboek met Flask.

Stap 1: PIR-bewegingssensor

PIR-bewegingssensor
PIR-bewegingssensor

PIR staat voor "Passive Infrared" en deze bewegingssensor pikt bewegingen op door naar het infraroodbeeld te kijken en de infraroodveranderingen op te pikken. Daarom, met een blad en een mens die de sensor passeren, detecteert het alleen de mens, omdat wij als mensen warmte genereren en dus infraroodstraling uitzenden. Daarom is de bewegingssensor een goede keuze voor het detecteren van menselijke bewegingen.

Stap 2: PIR-bewegingssensor instellen

PIR-bewegingssensor instellen
PIR-bewegingssensor instellen

Er zijn drie pinnen voor PIR-bewegingssensor, Power, Output en Ground. Onder de pinnen ziet u de labels, VCC voor Power, Out voor Output en GND voor aarde. Wanneer de sensor bewegingen detecteert, zal de output-pin een HOOG signaal uitvoeren naar de Raspberry Pi-pin waarmee u de sensor verbindt. Voor Power-pin, wil je ervoor zorgen dat deze voor stroom wordt aangesloten op de 5V-pin op Raspberry Pi. Voor mijn project kies ik ervoor om de output-pin te verbinden met Pin11 op Pi.

Nadat je alles hebt aangesloten, kun je je sensor sms'en door scripts zoals hieronder uit te voeren:

importeer RPi. GPIO als GPIOimporteer tijd GPIO.cleanup() GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #Lees uitvoer van PIR-bewegingssensor op Pin 11 terwijl True: i =GPIO.input(11) if i==0: #Als de output van de bewegingssensor LAAG is print "Geen detectie", i time.sleep(0.1) elif i==1: #Als de output van de bewegingssensor HOOG is print " Beweging gedetecteerd", i time.sleep(0.1)

Voer het script uit op je Pi en plaats je handen of je vriend voor de sensor om te controleren of de sensor de beweging oppikt.

Stap 3: Raspberry Pi-cameramodule en installatie

Raspberry Pi-cameramodule en installatie
Raspberry Pi-cameramodule en installatie

De mens zendt infraroodstraling uit vanwege de hitte, en dat geldt ook voor objecten met temperaturen. Daarom kunnen ook dieren of hete voorwerpen de bewegingssensor activeren. We hebben een manier nodig om te controleren of de detectie geldig is. Er zijn veel manieren om te implementeren, maar in mijn project kies ik ervoor om de Raspberry Pi-cameramodule te gebruiken om foto's te maken wanneer de bewegingssensor bewegingen oppikt.

Om de cameramodule te gebruiken, moet u er eerst voor zorgen dat de pinnen in de camerasleuf op Pi zijn gestoken. Type

sudo raspi-config

op je Pi om de configuratie-interface te openen en de camera in te schakelen in de 'interface-opties'. Na het opnieuw opstarten kun je testen of de Pi daadwerkelijk is verbonden met de camera door te typen

vcgencmd get_camera

en het zal u de status laten zien. De laatste stap is om de picamera-module te installeren door te typen

pip installeer picamera

Na alle instellingen kun je je camera testen door scripts zoals hieronder uit te voeren:

van picamera import PiCamera

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

De afbeelding wordt opgeslagen als 'image.jpg' in de map die overeenkomt met die van uw camerascript. Let op, u wilt er zeker van zijn dat 'slaap (2)' aanwezig is en dat het getal groter is dan 2, zodat de camera genoeg tijd heeft om de lichtomstandigheden aan te passen.

Stap 4: Combineer PIR-bewegingssensor en cameramodule

Het idee van mijn project is dat de bewegingssensor en camera in dezelfde richting wijzen. Telkens wanneer de bewegingssensor bewegingen oppikt, maakt de camera een foto zodat we achteraf kunnen controleren wat de bewegingen veroorzaakt.

Het script:

importeer RPi. GPIO als GPIOvan datetime import datetime importeer tijd van picamera importeer PiCamera

GPIO.opschonen()

GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #Lees uitvoer van PIR-bewegingssensorbericht = 'start'-teller = 0 log_f = open('static/log.txt', 'w') log_f.close()

camera = PiCamera()

pic_name = 0

camera.start_preview()

tijd.slaap(2)

terwijl waar:

i=GPIO.input(11) if i==0: #Wanneer output van bewegingssensor LAAG is als teller > 0: end = str(datetime.now()) log_f = open('static/log.txt', ' a') bericht = bericht + '; eindig op ' + 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 "Geen indringers", i time.sleep(0.1) elif i==1: #When output from motion sensor is HIGH if counter == 0: current = str(datetime.now()) message = 'Mens gedetecteerd:' + 'start om' + huidige teller = teller + 1 print "Indringer gedetecteerd", i time.sleep(0.1) camera.stop_preview()

De mappen voor 'log.txt' en afbeeldingen zijn 'statisch', wat nodig is om Flask te laten werken.

Stap 5: Setup voor Flask

Opstelling voor Flask
Opstelling voor Flask

Flask is een micro-webframework geschreven in Python en gebaseerd op de Werkzeug-toolkit en de Jinja2-sjabloonengine. Het is eenvoudig te implementeren en te onderhouden. Voor een betere tutorial voor Flask raad ik deze link aan: Flask Mega Tutorial

Het hoofdscript, 'routes.py', van mijn project:

from appfolder import appFlaskfrom flask import render_template, redirect import os

APP_ROOT = os.path.dirname(os.path.abspath(_file_)) # verwijst naar 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 = voor log in logs: final_logs.append(log. strip()) naam = str(len(final_logs)-1)+'.jpg' return render_template('view.html', logs=final_logs, filename=name)

Het HTML-bestand 'view.html' staat in de bovenste balk (want als ik de HTML-codes hier kopieer, verandert het eigenlijk in HTML-FORMAAT…)

En de structuur van het project zou er als volgt uit moeten zien (maar er zijn natuurlijk meer bestanden dan deze):

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

Stap 6: Resultaat

Resultaat
Resultaat

Voor deze implementatie zou je, nadat alles correct is ingesteld, toegang moeten hebben tot je Raspberry Pi door het IP-adres in de browser te typen, en het resultaat zou bij deze stap eruit moeten zien als een afbeelding in de bovenste balk.