Përmbajtje:

Raspberry Pi Detektor Njerëzor + Kamera + Flask: 6 Hapa
Raspberry Pi Detektor Njerëzor + Kamera + Flask: 6 Hapa

Video: Raspberry Pi Detektor Njerëzor + Kamera + Flask: 6 Hapa

Video: Raspberry Pi Detektor Njerëzor + Kamera + Flask: 6 Hapa
Video: Raspberry Pi Pico Project: Human Detector 2024, Nëntor
Anonim
Detektor Njerëzor i Raspberry Pi + Kamera + Flask
Detektor Njerëzor i Raspberry Pi + Kamera + Flask

Në këtë tutorial, unë do të kaloj nëpër hapat për Projektin tim Raspberry Pi IoT - Përdorimi i sensorit të lëvizjes PIR, modulit Kamera mjedër për të ndërtuar një pajisje të thjeshtë të sigurisë IoT dhe Qasja në regjistrin e zbulimit me Flask.

Hapi 1: Sensori i lëvizjes PIR

Sensori i lëvizjes PIR
Sensori i lëvizjes PIR

PIR qëndron për "Infrared të pasiv" dhe ky sensor lëvizjeje merr lëvizje duke shikuar pamjen infra të kuqe dhe duke marrë ndryshimet infra të kuqe. Prandaj, me një gjethe dhe një njeri që kalon sensorin, ai zbulon vetëm njeriun pasi ne si njerëz gjenerojmë nxehtësi dhe kështu lëshojmë rreze infra të kuqe. Prandaj, sensori i lëvizjes është një zgjedhje e mirë për zbulimin e lëvizjeve njerëzore.

Hapi 2: Konfigurimi i sensorit të lëvizjes PIR

Konfigurimi i sensorit të lëvizjes PIR
Konfigurimi i sensorit të lëvizjes PIR

Ekzistojnë tre kunja për sensorin e lëvizjes PIR, fuqia, dalja dhe toka. Nën kunjat mund të shihni etiketat, VCC për Power, Out for Output dhe GND për tokën. Kur sensori zbulon lëvizjet, kunja e daljes do të japë një sinjal të lartë në pinin Raspberry Pi me të cilin e lidhni sensorin. Për pin pin, ju doni të siguroheni që lidhet me pin 5V në Raspberry Pi për energji. Për projektin tim, unë zgjedh të lidh pinin e daljes me Pin11 në Pi.

Pasi të keni lidhur gjithçka, mund t'i shkruani sensorit tuaj duke ekzekutuar skriptet si ai më poshtë:

importo RPi. GPIO si GPIOimporto kohën GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Lexo daljen nga sensori i lëvizjes PIR në Pin 11 ndërsa E vërtetë: i = GPIO.input (11) nëse i == 0: #Kur dalja nga sensori i lëvizjes është printim LOW "Pa zbulim", i time.sleep (0.1) elif i == 1: #Kur dalja nga sensori i lëvizjes është printim I Lartë " Lëvizja u zbulua ", dhe koha. Gjumi (0.1)

Drejtoni skenarin në Pi tuaj dhe vendosni duart ose mikun tuaj para sensorit për të kontrolluar nëse sensori e merr lëvizjen.

Hapi 3: Moduli dhe konfigurimi i kamerës Raspberry Pi

Moduli dhe konfigurimi i kamerës Raspberry Pi
Moduli dhe konfigurimi i kamerës Raspberry Pi

Njeriu lëshon rreze infra të kuqe për shkak të nxehtësisë, dhe po kështu edhe objektet me temperaturë. Prandaj, kafshët ose objektet e nxehta mund të shkaktojnë gjithashtu sensorin e lëvizjes. Ne kemi nevojë për një mënyrë për të kontrolluar nëse zbulimi është i vlefshëm. Ka shumë mënyra për t'u zbatuar, por në projektin tim, unë zgjedh të përdor modulin e kamerës Raspberry Pi për të bërë fotografi kur sensori i lëvizjes merr lëvizje.

Për të përdorur modulin e kamerës, së pari dëshironi të siguroheni që kunjat të jenë të kyçur në folenë e kamerës në Pi. Lloji

sudo raspi-config

në Pi tuaj për të hapur ndërfaqen e konfigurimit dhe aktivizoni kamerën në 'opsionet e ndërlidhjes'. Pas rindezjes, mund të provoni nëse Pi është i lidhur me kamerën duke shtypur

vcgencmd get_camera

dhe do t'ju tregojë statusin. Hapi i fundit është të instaloni modulin e fotografisë duke shtypur

pip instaloni picamera

Pas të gjitha konfigurimeve, mund të provoni kamerën tuaj duke ekzekutuar skripte si ai më poshtë:

nga picamera import PiCamera

nga koha importo kamerën e gjumit = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()

Fotografia do të ruhet si 'image.jpg' në drejtori si e njëjtë me atë të skenarit të kamerës suaj. Vini re, ju doni të siguroheni që "gjumi (2)" është atje dhe numri është më i madh se 2, kështu që kamera ka kohë të mjaftueshme për të rregulluar gjendjen e dritës.

Hapi 4: Kombinoni sensorin e lëvizjes PIR dhe modulin e kamerës

Ideja e projektit tim është që sensori i lëvizjes dhe kamera të përballen në të njëjtin drejtim. Sa herë që sensori i lëvizjes merr lëvizje, kamera do të bëjë një fotografi në mënyrë që të kontrollojmë se çfarë i shkakton lëvizjet më pas.

Skenari:

importo RPi. GPIO si GPI Nga koha e datës importo kohën e datës kohën e importit nga importi i fotografisë PiCamera

GPIO.cleanup ()

GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Lexo daljen nga mesazhi i sensorit të lëvizjes PIR = 'start' counter = 0 log_f = open ('static/log.txt', 'w') log_f.close ()

kamera = PiCamera ()

emri i fotografisë = 0

camera.start_preview ()

koha. gjumi (2)

ndërsa e vërtetë:

i = GPIO.input (11) nëse i == 0: #Kur dalja nga sensori i lëvizjes është LOW nëse numëruesi> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' a ') mesazh = mesazh +'; përfundon në ' + fund +' / n 'print (mesazh) log_f.write (mesazh) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (përfundimtar) counter = 0 print "No intruders", i time.sleep (0.1) elif i == 1: #Kur dalja nga sensori i lëvizjes është LART nëse numëruesi == 0: current = str (dataetime.now ()) mesazh = 'Njeriu i zbuluar:' + 'fillon në' + numëruesi aktual = sporteli + 1 printim "Intruder zbuluar", i time.sleep (0.1) camera.stop_preview ()

Drejtoritë për 'log.txt' dhe imazhet janë 'statike', gjë që është e nevojshme që Flask të funksionojë.

Hapi 5: Konfigurimi për Flask

Konfigurimi për Flask
Konfigurimi për Flask

Flask është një kuadër mikro ueb i shkruar në Python dhe i bazuar në veglën Werkzeug dhe motorin e modelit Jinja2. Easyshtë e lehtë për tu zbatuar dhe mirëmbajtur. Për një mësim më të mirë për Flask, unë rekomandoj këtë lidhje: Flask Mega Tutorial

Skenari kryesor, 'route.py', i projektit tim:

nga appfolder import appFlaskfrof flaks import render_template, përcjellim importin os

APP_ROOT = os.path.dirname (os.path.abspath (_ file_)) # i referohet aplikimit_top

APP_STATIC = os.path.join (APP_ROOT, 'statike')

@appFlask.route ('/', metodat = ['MERR', 'POST'])

def view (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = për regjistrat e regjistrimit: final_logs.append (log. shirit ()) emri = str (len (ditaret_finale) -1)+'. jpg' kthehu render_template ('view.html', regjistrat = regjistrimet përfundimtare, emri i skedarit = emri)

Skedari HTML 'view.html' është në shiritin e sipërm (sepse kur kopjoj kodet HTML këtu, në të vërtetë kthehet në HTML FORMAT …)

Dhe struktura e projektit duhet të duket si diçka më poshtë (por sigurisht që ka më shumë skedarë se këto):

iotproject / appfolder / route.py templates / view.html static / log.txt 0-j.webp

Hapi 6: Rezultati

Rezultati
Rezultati

Për këtë zbatim, pasi gjithçka është konfiguruar si duhet, duhet të jeni në gjendje të hyni në Raspberry Pi tuaj duke shtypur adresën e tij IP në shfletues, dhe rezultati duhet të duket si foto në shiritin e sipërm në këtë hap.