Obsah:
- Krok 1: PIR snímač pohybu
- Krok 2: Nastavení snímače pohybu PIR
- Krok 3: Modul a nastavení kamery Raspberry Pi
- Krok 4: Kombinujte snímač pohybu PIR a modul kamery
- Krok 5: Nastavení pro baňku
- Krok 6: Výsledek
Video: Lidský detektor Raspberry Pi + kamera + baňka: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:23
V tomto tutoriálu projdu kroky mého projektu Raspberry Pi IoT - pomocí PIR Motion Sensor, modulu Raspberry Camera k vytvoření jednoduchého bezpečnostního zařízení IoT a přístupu k detekčnímu protokolu pomocí Flask.
Krok 1: PIR snímač pohybu
PIR znamená „pasivní infračervený“a tento pohybový senzor zachycuje pohyby sledováním infračerveného pohledu a snímáním infračervených změn. Proto když list a člověk projde senzorem, detekuje pouze člověka, protože my jako lidé generujeme teplo a tím vydáváme infračervený paprsek. Pohybový senzor je proto dobrou volbou pro detekci pohybů lidí.
Krok 2: Nastavení snímače pohybu PIR
K dispozici jsou tři kolíky pro pohybový senzor PIR, výkon, výstup a uzemnění. Pod piny můžete vidět popisky VCC pro napájení, výstup pro výstup a GND pro uzemnění. Když snímač detekuje pohyby, výstupní kolík bude vysílat HIGH signál na pin Raspberry Pi, ke kterému připojíte senzor. U napájecího kolíku se chcete ujistit, že se připojuje k 5V kolíku na Raspberry Pi pro napájení. Pro svůj projekt jsem se rozhodl propojit výstupní pin s Pin11 na Pi.
Po připojení všeho můžete senzoru odeslat textovou zprávu spuštěním skriptů, jako je ten níže:
importovat RPi. GPIO jako čas GPIOimport GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Přečíst výstup ze snímače pohybu PIR na Pin 11 při True: i = GPIO.input (11) if i == 0: #When output from motion sensor is LOW print "No detection", i time.sleep (0.1) elif i == 1: #When output from motion sensor is HIGH print " Detekován pohyb “, i time.sleep (0,1)
Spusťte skript na svém Pi a položte ruce nebo přítele před senzor, abyste zkontrolovali, zda senzor zachycuje pohyb.
Krok 3: Modul a nastavení kamery Raspberry Pi
Člověk kvůli teplu vysílá infračervený paprsek, stejně jako objekty s teplotami. Zvířata nebo horké předměty proto mohou také spustit pohybový senzor. Potřebujeme způsob, jak zkontrolovat, zda je detekce platná. Existuje mnoho způsobů implementace, ale v mém projektu jsem se rozhodl použít kamerový modul Raspberry Pi k pořizování snímků, když pohybový senzor zaznamenává pohyby.
Chcete -li použít modul kamery, nejprve se ujistěte, že jsou kolíky zapojeny do slotu pro kameru na Pi. Typ
sudo raspi-config
na vašem Pi otevřete konfigurační rozhraní a povolte kameru v „možnostech rozhraní“. Po restartu můžete vyzkoušet, zda je Pi skutečně připojeno k fotoaparátu zadáním
vcgencmd get_camera
a ukáže vám stav. Posledním krokem je instalace modulu picamera zadáním
pip install picamera
Po všech nastaveních můžete kameru vyzkoušet spuštěním skriptů, jako je ten níže:
z picamery import PiCamera
od času import spánku kamera = PiCamera () camera.start_preview () spánek (2) camera.capture ('image.jpg') camera.stop_preview ()
Obrázek bude uložen jako 'image.jpg' v adresáři stejně jako ten ve vašem skriptu kamery. Všimněte si, že se chcete ujistit, že je tam „spánek (2)“a že číslo je větší než 2, aby měl fotoaparát dostatek času na úpravu světelných podmínek.
Krok 4: Kombinujte snímač pohybu PIR a modul kamery
Myšlenka mého projektu je, že pohybový senzor a kamera budou směřovat stejným směrem. Kdykoli snímač pohybu zachytí pohyby, kamera pořídí snímek, abychom mohli později zkontrolovat, co pohyby způsobuje.
Scénář:
import RPi. GPIO jako GPIOz datetime import datetime import time z 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 ()
time.sleep (2)
zatímco pravda:
i = GPIO.input (11) pokud i == 0: #Když je výstup ze snímače pohybu NÍZKÝ, pokud je čítač> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' a ') zpráva = zpráva +'; konec na ' + end +' / n 'print (message) log_f.write (message) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (konečné) čítač = 0 tisk "Žádní vetřelci", i time.sleep (0,1) elif i == 1: #Když je výstup ze snímače pohybu VYSOKÝ, pokud je čítač == 0: aktuální = str (datetime.now ()) zpráva = 'Detekován člověk:' + 'začíná na' + aktuální čítač = čítač + 1 tisk "Detekován narušitel", i time.sleep (0,1) camera.stop_preview ()
Adresáře pro 'log.txt' a obrázky jsou 'statické', což je nezbytné pro fungování Flasku.
Krok 5: Nastavení pro baňku
Flask je mikro webový framework napsaný v Pythonu a založený na sadě nástrojů Werkzeug a šablony Jinja2. Je snadné jej implementovat a udržovat. Pro lepší návod pro Flask doporučuji tento odkaz: Mega Tutorial Flask
Hlavní skript „routs.py“mého projektu:
z appfolder import appFlask z baňky import render_template, přesměrování import os
APP_ROOT = os.path.dirname (os.path.abspath (_ file_)) # odkazuje na application_top
APP_STATIC = os.path.join (APP_ROOT, 'static')
@appFlask.route ('/', methods = ['GET', 'POST'])
def view (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = pro přihlášení logs: final_logs.append (log. strip ()) name = str (len (final_logs) -1)+'. jpg' return render_template ('view.html', logs = final_logs, filename = name)
Soubor HTML „view.html“je v horní liště (protože když sem zkopíruji kódy HTML, ve skutečnosti se změní na HTML FORMAT …)
A struktura projektu by měla vypadat jako níže (ale samozřejmě existuje více souborů než těchto):
iotproject / appfolder / trasy.py šablony / view.html static / log.txt 0-j.webp
Krok 6: Výsledek
Pro tuto implementaci byste po správném nastavení měli mít přístup k Raspberry Pi zadáním jeho IP adresy do prohlížeče a výsledek by měl v tomto kroku vypadat jako obrázek na horním panelu.