Innholdsfortegnelse:

Raspberry Pi menneskelig detektor + kamera + kolbe: 6 trinn
Raspberry Pi menneskelig detektor + kamera + kolbe: 6 trinn

Video: Raspberry Pi menneskelig detektor + kamera + kolbe: 6 trinn

Video: Raspberry Pi menneskelig detektor + kamera + kolbe: 6 trinn
Video: LD2410 and ESP32 to extend your Human Presence Coverage 2024, Juli
Anonim
Raspberry Pi menneskelig detektor + kamera + kolbe
Raspberry Pi menneskelig detektor + kamera + kolbe

I denne opplæringen vil jeg gå gjennom trinnene for Raspberry Pi IoT -prosjektet mitt - Bruke PIR -bevegelsessensor, Raspberry Camera -modul for å bygge en enkel IoT -sikkerhetsenhet og få tilgang til deteksjonsloggen med Flask.

Trinn 1: PIR bevegelsessensor

PIR bevegelsessensor
PIR bevegelsessensor

PIR står for "Passiv infrarød", og denne bevegelsessensoren fanger opp bevegelser ved å se den infrarøde visningen og plukke opp de infrarøde endringene. Derfor, med et blad og et menneske som passerer sensoren, oppdager det bare mennesker siden vi som mennesker genererer varme og dermed avgir infrarød stråle. Derfor er bevegelsessensoren et godt valg for å oppdage menneskelige bevegelser.

Trinn 2: Oppsett av PIR -bevegelsessensor

Oppsett av PIR -bevegelsessensor
Oppsett av PIR -bevegelsessensor

Det er tre pinner for PIR bevegelsessensor, strøm, utgang og bakken. Under pinnene kan du se etikettene, VCC for Power, Out for Output og GND for ground. Når sensoren oppdager bevegelser, sender utgangspinnen et HØYT signal til Raspberry Pi -pinnen som du kobler sensoren til. For Power pin, vil du sørge for at den kobles til 5V pin på Raspberry Pi for strøm. For prosjektet mitt velger jeg å koble Output -pin til Pin11 på Pi.

Etter at du har koblet til alt, kan du sende tekst til sensoren din ved å kjøre skript som det nedenfor:

importer RPi. GPIO som GPIOimporttid GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Les ut fra PIR bevegelsessensor på Pin 11 mens True: i = GPIO.input (11) hvis i == 0: #Når utdata fra bevegelsessensor er LAV utskrift "Ingen registrering", i time.sleep (0,1) elif i == 1: #Når utgang fra bevegelsessensor er HØY utskrift " Bevegelse oppdaget ", i time.sleep (0,1)

Kjør skriptet på Pi, og legg hendene eller vennen din foran sensoren for å sjekke om sensoren fanger opp bevegelsen.

Trinn 3: Raspberry Pi kameramodul og oppsett

Raspberry Pi kameramodul og oppsett
Raspberry Pi kameramodul og oppsett

Mennesket avgir infrarød stråle på grunn av varmen, og det gjør også objekter med temperaturer. Derfor kan dyr eller varme gjenstander også utløse bevegelsessensoren. Vi trenger en måte å kontrollere om oppdagelsen er gyldig. Det er mange måter å implementere på, men i prosjektet mitt velger jeg å bruke Raspberry Pi -kameramodulen til å ta bilder når bevegelsessensoren plukker opp bevegelser.

For å bruke kameramodulen, må du først kontrollere at pinnene er plugget inn i kamerasporet på Pi. Type

sudo raspi-config

på din Pi for å åpne konfigurasjonsgrensesnittet, og aktivere kameraet i "grensesnittalternativer". Etter omstart kan du teste om Pi faktisk er koblet til kameraet ved å skrive

vcgencmd get_camera

og det vil vise deg statusen. Det siste trinnet er å installere picamera -modulen ved å skrive

pip installer picamera

Etter alle oppsettene kan du teste kameraet ditt ved å kjøre skript som det nedenfor:

fra picamera import PiCamera

fra tiden importer søvnkamera = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()

Bildet vil bli lagret som 'image.jpg' i katalogen som det samme som i kameraskriptet. Legg merke til at du vil sørge for at 'søvn (2)' er der, og tallet er større enn 2, slik at kameraet har nok tid til å justere lysforholdene.

Trinn 4: Kombiner PIR -bevegelsessensor og kameramodul

Tanken med prosjektet mitt er at bevegelsessensoren og kameraet vil vende i samme retning. Hver gang bevegelsessensoren fanger opp bevegelser, tar kameraet et bilde slik at vi kan sjekke hva som forårsaker bevegelsene etterpå.

Manuset:

importer RPi. GPIO som GPIO fra datetime import datetime import tid fra picamera import PiCamera

GPIO.cleanup ()

GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Les ut fra PIR bevegelsessensormelding = 'start' teller = 0 log_f = open ('static/log.txt', 'w') log_f.close ()

kamera = PiCamera ()

pic_name = 0

camera.start_preview ()

time.sleep (2)

mens det er sant:

i = GPIO.input (11) hvis i == 0: #Når utgang fra bevegelsessensor er LAV hvis teller> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' a ') melding = melding +'; ende ved ' + ende +' / n 'print (melding) log_f.write (melding) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (final) counter = 0 print "Ingen inntrengere", i time.sleep (0.1) elif i == 1: #Når utgang fra bevegelsessensor er HØY hvis teller == 0: current = str (datetime.now ()) melding = 'Menneskelig oppdaget:' + 'start ved' + nåværende teller = teller + 1 utskrift "Innbrudd oppdaget", i time.sleep (0.1) camera.stop_preview ()

Katalogene for 'log.txt' og bilder er 'statiske', noe som er nødvendig for at Flask skal fungere.

Trinn 5: Oppsett for kolbe

Oppsett for kolbe
Oppsett for kolbe

Flask er et mikroweb -rammeverk skrevet i Python og basert på Werkzeug verktøykasse og Jinja2 malmotor. Det er enkelt å implementere og vedlikeholde. For en bedre opplæring for Flask, anbefaler jeg denne lenken: Flask Mega Tutorial

Hovedmanuset, 'routes.py', for prosjektet mitt:

fra appmappe import appFlaskfra kolbe import render_template, omdiriger import os

APP_ROOT = os.path.dirname (os.path.abspath (_ file_)) # refererer til application_top

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

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

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

HTML -filen 'view.html' er på den øverste linjen (for når jeg kopierer HTML -kodene her, blir den faktisk til HTML FORMAT …)

Og strukturen til prosjektet skal se ut som noe nedenfor (men det er selvfølgelig flere filer enn disse):

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

Trinn 6: Resultat

Resultat
Resultat

Etter denne implementeringen, etter at alt er konfigurert riktig, bør du ha tilgang til Raspberry Pi ved å skrive IP -adressen i nettleseren, og resultatet skal se ut som et bilde øverst i dette trinnet.