Obsah:
- Krok 1: PIR snímač pohybu
- Krok 2: Nastavenie snímača pohybu PIR
- Krok 3: Modul a nastavenie kamery Raspberry Pi
- Krok 4: Skombinujte snímač pohybu PIR a modul kamery
- Krok 5: Nastavenie pre banku
- Krok 6: Výsledok
Video: Detektor človeka Raspberry Pi + kamera + banka: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
V tomto návode vás prevediem krokmi k môjmu projektu Raspberry Pi IoT - Použitie pohybového senzora PIR, modulu Raspberry Camera na vytvorenie jednoduchého bezpečnostného zariadenia IoT a prístup k denníku detekcie pomocou banky.
Krok 1: PIR snímač pohybu
PIR znamená „pasívne infračervené“a tento snímač pohybu zachytáva pohyby sledovaním infračerveného zobrazenia a snímaním infračervených zmien. Preto keď list a človek prejde senzorom, detekuje iba človeka, pretože my ako ľudia generujeme teplo a vyžarujeme tak infračervený lúč. Pohybový senzor je preto dobrou voľbou na detekciu pohybov ľudí.
Krok 2: Nastavenie snímača pohybu PIR
K dispozícii sú tri kolíky pre snímač pohybu PIR, výkon, výstup a uzemnenie. Pod kolíkmi môžete vidieť štítky VCC pre napájanie, výstup pre výstup a GND pre zem. Keď snímač detekuje pohyby, výstupný kolík bude vydávať HIGH signál na pin Raspberry Pi, pomocou ktorého senzor pripojíte. V prípade napájacieho kolíka sa chcete uistiť, že sa napája na 5V pin na Raspberry Pi. Pre svoj projekt som sa rozhodol prepojiť výstupný pin s Pin11 na Pi.
Po pripojení všetkého môžete svojmu senzoru odoslať textovú správu spustením skriptov, ako je uvedené nižšie:
importovať RPi. GPIO ako GPIOimportový čas GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Read výstup zo snímača pohybu PIR na Pin 11 pri True: i = GPIO.vstup (11) ak i == 0: #Keď je výstup zo snímača pohybu NÍZKY, vytlačte „Bez detekcie“, i time.sleep (0,1) elif i == 1: #Keď je výstup zo snímača pohybu VYSOKÝ, vytlačte „ Zistený pohyb “, i čas.spánok (0,1)
Spustite skript na svojom Pi a dajte ruky alebo priateľa pred senzor, aby ste zistili, či senzor zachytáva pohyb.
Krok 3: Modul a nastavenie kamery Raspberry Pi
Človek v dôsledku tepla vyžaruje infračervený lúč, a teda aj objekty s teplotami. Pohybový senzor preto môžu spustiť aj zvieratá alebo horúce predmety. Potrebujeme spôsob, ako skontrolovať, či je detekcia platná. Existuje mnoho spôsobov implementácie, ale v mojom projekte som sa rozhodol použiť modul kamery Raspberry Pi na fotografovanie, keď snímač pohybu zachytí pohyby.
Ak chcete použiť modul kamery, najskôr sa musíte uistiť, že sú kolíky zapojené do otvoru pre fotoaparát na Pi. Napíšte
sudo raspi-config
na vašom Pi otvorte konfiguračné rozhranie a povoľte kameru v „možnostiach rozhrania“. Po reštarte môžete vyskúšať, či je Pi skutočne pripojené k fotoaparátu zadaním
vcgencmd get_camera
a ukáže vám stav. Posledným krokom je inštalácia modulu picamera zadaním
pip install picamera
Po všetkých nastaveniach môžete svoju kameru otestovať spustením skriptov, ako je uvedené nižšie:
z importu picamery PiCamera
od času importovať spánkovú kameru = PiCamera () camera.start_preview () spánok (2) camera.capture ('image.jpg') camera.stop_preview ()
Obrázok bude uložený ako 'image.jpg' v adresári rovnako ako ten, ktorý je súčasťou vášho skriptu fotoaparátu. Všimnite si toho, že sa chcete uistiť, že je tam „spánok (2)“a že číslo je väčšie ako 2, aby mal fotoaparát dostatok času na úpravu svetelných podmienok.
Krok 4: Skombinujte snímač pohybu PIR a modul kamery
Idea môjho projektu je, že snímač pohybu a kamera budú smerovať rovnakým smerom. Kedykoľvek snímač pohybu zachytí pohyby, fotoaparát nasníma fotografiu, aby sme potom mohli skontrolovať, čo pohyby spôsobuje.
Scenár:
importovať RPi. GPIO ako GPIOod datetime import datetime importovať čas 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)
kým je pravda:
i = GPIO.vstup (11) ak i == 0: #Keď je výstup zo snímača pohybu NÍZKY, ak je počítadlo> 0: koniec = str (datetime.now ()) log_f = otvorený ('static/log.txt', ' a ') správa = správa +'; koniec 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é) počítadlo = 0 vytlačiť „Žiadni narušitelia“, i čas.spánok (0,1) elif i == 1: #Keď je výstup zo snímača pohybu VYSOKÝ, ak je počítadlo == 0: prúd = str (datetime.now ()) správa = 'Detekovaný človekom:' + 'štart na' + aktuálny čítač = počítadlo + 1 výtlačok "Zistený narušiteľ", i time.sleep (0,1) camera.stop_preview ()
Adresáre pre „log.txt“a obrázky sú „statické“, čo je nevyhnutné pre správnu funkciu banky.
Krok 5: Nastavenie pre banku
Flask je mikrowebový framework napísaný v Pythone a založený na súbore nástrojov Werkzeug a šablóne Jinja2. Je ľahké ho implementovať a udržiavať. Pre lepší návod pre Flask odporúčam tento odkaz: Flask Mega Tutorial
Hlavný skript „trasy.py“môjho projektu:
z aplikácie appfolder import appFlask z banky import render_template, presmerovanie 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 = pre prihlásenie logs: final_logs.append (log. strip ()) name = str (len (final_logs) -1)+'. jpg' return render_template ('view.html', logs = final_logs, filename = name)
Súbor HTML „view.html“je v hornej lište (pretože keď sem skopírujem kódy HTML, v skutočnosti sa zmení na FORMÁT HTML …)
Štruktúra projektu by mala vyzerať nasledovne (ale samozrejme existuje viac súborov ako tieto):
iotproject / appfolder / trasy.py šablóny / view.html static / log.txt 0-j.webp
Krok 6: Výsledok
Po tejto inštalácii by ste po správnom nastavení mali mať prístup k svojmu Raspberry Pi zadaním jeho IP adresy v prehliadači a výsledok by v tomto kroku mal vyzerať ako obrázok v hornom paneli.