Innehållsförteckning:
- Steg 1: PIR -rörelsesensor
- Steg 2: Inställning av PIR -rörelsesensor
- Steg 3: Raspberry Pi kameramodul och installation
- Steg 4: Kombinera PIR -rörelsesensor och kameramodul
- Steg 5: Inställning för kolv
- Steg 6: Resultat
Video: Raspberry Pi mänsklig detektor + kamera + kolv: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
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 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
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
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
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
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.