Kazalo:

Človeški detektor Raspberry Pi + kamera + steklenica: 6 korakov
Človeški detektor Raspberry Pi + kamera + steklenica: 6 korakov

Video: Človeški detektor Raspberry Pi + kamera + steklenica: 6 korakov

Video: Človeški detektor Raspberry Pi + kamera + steklenica: 6 korakov
Video: MJC Stream: Видишь енота? А он есть! Главное об ML и компьютерном зрении 2024, November
Anonim
Človeški detektor Raspberry Pi + kamera + steklenica
Človeški detektor Raspberry Pi + kamera + steklenica

V tej vadnici bom predstavil korake za svoj projekt Raspberry Pi IoT - uporaba senzorja gibanja PIR, modula Raspberry Camera za izdelavo preproste varnostne naprave IoT in dostop do dnevnika odkrivanja s tipko Flask.

Korak: PIR senzor gibanja

Senzor gibanja PIR
Senzor gibanja PIR

PIR pomeni "pasivno infrardeče" in ta senzor gibanja zaznava premike z opazovanjem infrardečega pogleda in zaznavanjem infrardečih sprememb. Zato z listom in človekom, ki gre mimo senzorja, zazna le človeka, saj kot ljudje ustvarjamo toploto in tako oddajamo infrardeči žarek. Zato je senzor gibanja dobra izbira za zaznavanje človeških gibov.

2. korak: Nastavitev senzorja gibanja PIR

Nastavitev senzorja gibanja PIR
Nastavitev senzorja gibanja PIR

Obstajajo trije zatiči za PIR senzor gibanja, moč, izhod in ozemljitev. Pod zatiči lahko vidite oznake, VCC za napajanje, Out za izhod in GND za maso. Ko senzor zazna premike, bo izhodni zatič predvajal signal VISOK na pin Raspberry Pi, s katerim povežete senzor. Za napajalni zatič se prepričajte, da se za napajanje poveže s 5 -volnim zatičem na Raspberry Pi. Za svoj projekt se odločim povezati izhodni pin s Pin11 na Pi.

Ko vse povežete, lahko svojemu senzorju pošljete SMS, tako da zaženete skripte, kot je spodaj:

uvoz RPi. GPIO kot GPIO čas uvoza GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Preberite izhod iz senzorja gibanja PIR na Pin 11, medtem ko je True: i = GPIO.input (11) if i == 0: #Ko je izhod iz senzorja gibanja NIZAK, natisni "No detection", i time.sleep (0.1) elif i == 1: #When output from sensor of motion is HIGH print " Zaznano gibanje ", i time.sleep (0,1)

Zaženite skript na svojem Pi in roke ali prijatelja postavite pred senzor, da preverite, ali senzor zazna gibanje.

3. korak: Modul in nastavitev kamere Raspberry Pi

Modul in nastavitev kamere Raspberry Pi
Modul in nastavitev kamere Raspberry Pi

Človek zaradi toplote oddaja infrardeči žarek, prav tako pa tudi predmeti s temperaturo. Zato lahko živali ali vroči predmeti sprožijo tudi senzor gibanja. Potrebujemo način, da preverimo, ali je odkritje veljavno. Obstaja veliko načinov za izvedbo, toda v svojem projektu se odločim za uporabo modula kamere Raspberry Pi za fotografiranje, ko senzor gibanja zazna premike.

Če želite uporabiti modul kamere, se najprej prepričajte, da so nožice priključene v režo za fotoaparat na Pi. Vrsta

sudo raspi-config

na vašem Pi, da odprete konfiguracijski vmesnik in omogočite kamero v možnostih vmesnika. Po ponovnem zagonu lahko z vnosom preverite, ali je Pi dejansko povezan s kamero

vcgencmd get_camera

in prikazal vam bo stanje. Zadnji korak je namestitev modula picamera z vnosom

pip namestite pikamero

Po vseh nastavitvah lahko kamero preizkusite tako, da zaženete skripte, kot je spodnja:

iz picamere uvoz PiCamera

from time import sleep camera = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()

Slika bo shranjena kot 'image.jpg' v imeniku, enaka tisti v skriptu vaše kamere. Upoštevajte, da se želite prepričati, da obstaja "spanje (2)" in je število večje od 2, da ima fotoaparat dovolj časa za prilagoditev svetlobnega stanja.

4. korak: Združite senzor gibanja PIR in modul kamere

Ideja mojega projekta je, da bosta senzor gibanja in kamera obrnjena v isto smer. Kadarkoli senzor gibanja zazna premike, bo fotoaparat posnel sliko, da bomo lahko preverili, kaj povzroča gibanje.

Scenarij:

uvoz RPi. GPIO kot GPIOiz datuma uvoza uvoz datuma in časa iz pikamere uvoz PiCamera

GPIO.cleanup ()

GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Preberite izhod iz sporočila senzorja gibanja PIR = 'start' counter = 0 log_f = open ('static/log.txt', 'w') log_f.close ()

kamera = PiCamera ()

pic_name = 0

camera.start_preview ()

time.sleep (2)

medtem ko je res:

i = GPIO.input (11) if i == 0: #Ko je izhod iz senzorja gibanja LOW, če je števec> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' a ') sporočilo = sporočilo +'; konec na ' + end +' / n 'natisni (sporočilo) log_f.write (sporočilo) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (končno) števec = 0 natisni "Brez vsiljivcev", i time.sleep (0.1) elif i == 1: #Ko je izhod iz senzorja gibanja VELIK, če je števec == 0: tok = str (datetime.now ()) sporočilo = 'Človek zaznan:' + 'začetek pri' + trenutni števec = števec + 1 izpis "Zaznan vsiljivec", i time.sleep (0.1) camera.stop_preview ()

Imeniki za 'log.txt' in slike so 'statični', kar je potrebno za delovanje Flaska.

5. korak: Nastavitev za Flask

Nastavitev za Flask
Nastavitev za Flask

Flask je mikro spletni okvir, napisan v Pythonu in temelji na kompletu orodij Werkzeug in mehanizmu za predloge Jinja2. Je enostaven za izvajanje in vzdrževanje. Za boljšo vadbo za Flask priporočam to povezavo: Flask Mega Tutorial

Glavni skript, 'routes.py', mojega projekta:

iz mape aplikacij uvoz appFlask iz bučke uvoz render_template, preusmeri uvoz os

APP_ROOT = os.path.dirname (os.path.abspath (_ file_)) # se nanaša 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 = za dnevnike prijave: final_logs.append (log strip ()) name = str (len (final_logs) -1)+'. jpg' return render_template ('view.html', logs = final_logs, filename = name)

Datoteka HTML "view.html" je v zgornji vrstici (ker kopiram kode HTML tukaj, se dejansko obrne na HTML FORMAT …)

Struktura projekta bi morala izgledati takole spodaj (seveda je datotek več kot teh):

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

6. korak: Rezultat

Rezultat
Rezultat

Za to izvedbo bi morali imeti po pravilni nastavitvi dostop do vašega Raspberry Pi tako, da v brskalnik vnesete njegov naslov IP, rezultat pa mora biti v tem koraku videti kot slika v zgornji vrstici.