Obsah:

Lidský detektor Raspberry Pi + kamera + baňka: 6 kroků
Lidský detektor Raspberry Pi + kamera + baňka: 6 kroků

Video: Lidský detektor Raspberry Pi + kamera + baňka: 6 kroků

Video: Lidský detektor Raspberry Pi + kamera + baňka: 6 kroků
Video: SECRET of SKINWALKER RANCH Sezóna 4 – Tým mluví 2024, Červenec
Anonim
Lidský detektor Raspberry Pi + kamera + baňka
Lidský detektor Raspberry Pi + kamera + baňka

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

Senzor pohybu PIR
Senzor pohybu PIR

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

Nastavení snímače pohybu PIR
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

Modul a nastavení kamery Raspberry Pi
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

Nastavení pro baňku
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

Výsledek
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.