Inhoudsopgave:
- Stap 1: PIR-bewegingssensor
- Stap 2: PIR-bewegingssensor instellen
- Stap 3: Raspberry Pi-cameramodule en installatie
- Stap 4: Combineer PIR-bewegingssensor en cameramodule
- Stap 5: Setup voor Flask
- Stap 6: Resultaat
Video: Raspberry Pi menselijke detector + camera + fles - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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 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
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
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
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
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.