Innehållsförteckning:

Raspberry Pi mänsklig detektor + kamera + kolv: 6 steg
Raspberry Pi mänsklig detektor + kamera + kolv: 6 steg

Video: Raspberry Pi mänsklig detektor + kamera + kolv: 6 steg

Video: Raspberry Pi mänsklig detektor + kamera + kolv: 6 steg
Video: СЕКРЕТ Ранчо Скинуокеров Сезон 4 - Команда говорит 2024, November
Anonim
Raspberry Pi mänsklig detektor + kamera + kolv
Raspberry Pi mänsklig detektor + kamera + kolv

I den här självstudien kommer jag att gå igenom stegen för mitt Raspberry Pi IoT -projekt - Använda PIR -rörelsessensor, Raspberry Camera -modul för att bygga en enkel IoT -säkerhetsenhet och få tillgång till detekteringsloggen med Flask.

Steg 1: PIR -rörelsesensor

PIR -rörelsessensor
PIR -rörelsessensor

PIR står för "Passiv infraröd" och denna rörelsesensor tar upp rörelser genom att titta på den infraröda vyn och plocka upp de infraröda förändringarna. Därför, med ett blad och en människa som passerar sensorn, detekterar den bara människan eftersom vi som människor genererar värme och därmed avger infraröd strålning. Därför är rörelsesensorn ett bra val för att detektera mänskliga rörelser.

Steg 2: Inställning av PIR -rörelsesensor

Inställning av PIR -rörelsesensor
Inställning av PIR -rörelsesensor

Det finns tre stift för PIR -rörelsesensor, Power, Output och Ground. Under stiften kan du se etiketterna, VCC för Power, Out for Output och GND för ground. När sensorn upptäcker rörelser kommer utgångsstiften att mata ut en HÖG signal till Raspberry Pi -stiftet som du ansluter sensorn med. För Power -pin vill du se till att den ansluts till 5V -stiftet på Raspberry Pi för ström. För mitt projekt väljer jag att ansluta Output -stiftet med Pin11 på Pi.

Efter att ha anslutit allt kan du skicka sms till din sensor genom att köra skript som nedan:

importera RPi. GPIO som GPIOimporttid GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Read output from PIR motion sensor on Pin 11 while True: i = GPIO.input (11) om i == 0: #När utmatning från rörelsesensorn är LÅG utskrift "Ingen detektering", i time.sleep (0,1) elif i == 1: #När utmatning från rörelsesensorn är HÖG utskrift " Rörelse upptäckt ", i time.sleep (0,1)

Kör manuset på din Pi och lägg händerna eller din vän framför sensorn för att kontrollera om sensorn tar upp rörelsen.

Steg 3: Raspberry Pi kameramodul och installation

Raspberry Pi kameramodul och installation
Raspberry Pi kameramodul och installation

Människan avger infraröd stråle på grund av värmen, och det gör även objekt med temperaturer. Därför kan djur eller heta föremål också utlösa rörelsesensorn. Vi behöver ett sätt att kontrollera om upptäckten är giltig. Det finns många sätt att implementera, men i mitt projekt väljer jag att använda Raspberry Pi -kameramodulen för att ta bilder när rörelsesensorn tar upp rörelser.

För att använda kameramodulen vill du först se till att stiften är anslutna till kamerafacket på Pi. Typ

sudo raspi-config

på din Pi för att öppna konfigurationsgränssnittet och aktivera kameran i "gränssnittsalternativ". Efter omstart kan du testa om Pi faktiskt är ansluten till kameran genom att skriva

vcgencmd get_camera

och det visar status. Det sista steget är att installera picamera -modulen genom att skriva

pip installera picamera

Efter alla inställningar kan du testa din kamera genom att köra skript som nedan:

från picamera import PiCamera

från tid importera sömnkamera = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()

Bilden kommer att lagras som 'image.jpg' i katalogen som densamma som i ditt kameraskript. Lägg märke till att du vill se till att "sömn (2)" finns där och antalet är större än 2 så att kameran har tillräckligt med tid för att justera ljusförhållandena.

Steg 4: Kombinera PIR -rörelsesensor och kameramodul

Tanken med mitt projekt är att rörelsesensorn och kameran kommer att vända åt samma håll. När rörelsessensorn tar upp rörelser tar kameran en bild så att vi kan kontrollera vad som orsakar rörelserna efteråt.

Manuset:

importera RPi. GPIO som GPIO från datetime import datetime import tid från picamera import PiCamera

GPIO.cleanup ()

GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Read output from PIR motion sensor message = 'start' counter = 0 log_f = open ('static/log.txt', 'w') log_f.close ()

kamera = PiCamera ()

pic_name = 0

camera.start_preview ()

tid. sover (2)

medan det är sant:

i = GPIO.input (11) om i == 0: #När utmatning från rörelsesensorn är LÅG om räknaren> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' a ') meddelande = meddelande +'; slut vid ' + ände +' / n 'skriv ut (meddelande) log_f.write (meddelande) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (final) counter = 0 print "Inga inkräktare", i time.sleep (0.1) elif i == 1: #När utmatningen från rörelsesensorn är HÖG om räknaren == 0: current = str (datetime.now ()) meddelande = 'Mänsklig upptäckt:' + 'start vid' + nuvarande räknare = räknare + 1 utskrift "Inbrott upptäckt", i time.sleep (0,1) camera.stop_preview ()

Katalogerna för 'log.txt' och bilder är 'statiska', vilket är nödvändigt för att Flask ska fungera.

Steg 5: Inställning för kolv

Inställning för kolv
Inställning för kolv

Flask är ett mikrowebramverk skrivet i Python och baserat på Werkzeugs verktygslåda och Jinja2 -mallmotor. Det är enkelt att implementera och underhålla. För en bättre handledning för Flask, rekommenderar jag den här länken: Flask Mega Tutorial

Huvudmanuset, 'routes.py', för mitt projekt:

från appmapp import appFlaskfrån kolv import render_template, omdirigera import os

APP_ROOT = os.path.dirname (os.path.abspath (_ file_)) # hänvisar till 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 = för inloggning loggar: 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' finns längst upp i fältet (för när jag kopierar HTML -koder här, blir det faktiskt HTML -FORMAT …)

Och projektets struktur ska se ut som något nedan (men det finns naturligtvis fler filer än dessa):

iotproject / appfolder / routes.py -mallar / view.html statisk / log.txt 0-j.webp

Steg 6: Resultat

Resultat
Resultat

För denna implementering, efter att allt har konfigurerats korrekt, ska du kunna komma åt din Raspberry Pi genom att skriva dess IP -adress i webbläsaren, och resultatet ska se ut som en bild i översta fältet i det här steget.