INHOUDSOPGAWE:

Framboos Pi menslike detektor + kamera + fles: 6 stappe
Framboos Pi menslike detektor + kamera + fles: 6 stappe

Video: Framboos Pi menslike detektor + kamera + fles: 6 stappe

Video: Framboos Pi menslike detektor + kamera + fles: 6 stappe
Video: Брайан Китинг и Ли Кронин: Жизнь во Вселенной 2024, November
Anonim
Framboos Pi menslike detektor + kamera + fles
Framboos Pi menslike detektor + kamera + fles

In hierdie tutoriaal gaan ek deur die stappe vir my Raspberry Pi IoT -projek - met behulp van PIR -bewegingsensor, framboos -kamera -module om 'n eenvoudige IoT -toestel te bou en toegang tot die opsporingslogboek met Flask te verkry.

Stap 1: PIR -bewegingsensor

PIR bewegingsensor
PIR bewegingsensor

PIR staan vir "Passiewe infrarooi" en hierdie bewegingsensor neem bewegings op deur na die infrarooi aansig te kyk en die infrarooi veranderings op te neem. Daarom, met 'n blaar en 'n mens wat die sensor verbysteek, bespeur dit slegs die mens, aangesien ons as mense hitte genereer en dus infrarooi straal uitstraal. Die bewegingsensor is dus 'n goeie keuse om menslike bewegings op te spoor.

Stap 2: Opstelling van PIR -bewegingsensor

Opstelling van PIR -bewegingsensor
Opstelling van PIR -bewegingsensor

Daar is drie penne vir PIR -bewegingsensor, Power, Output en Ground. Onder die penne kan u die etikette sien, VCC for Power, Out for Output en GND for ground. As die sensor bewegings opspoor, sal die uitvoerpen 'n HOOG sein na die Raspberry Pi -pen stuur waarmee u die sensor verbind. Vir die kragpen wil u seker maak dat dit aansluit by die 5V -pen op Raspberry Pi vir krag. Vir my projek kies ek om die uitvoerpen met Pin11 op Pi aan te sluit.

Nadat u alles gekoppel het, kan u 'n SMS na u sensor stuur deur skrifte soos die onderstaande uit te voer:

voer RPi. GPIO in as GPIO Invoertyd GPIO.cleanup () GPIO.setwarnings (Onwaar) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Lees uitset van PIR bewegingsensor op Pin 11 terwyl True: i = GPIO.input (11) as i == 0: #As die uitset van die bewegingsensor LOW is, druk "Geen opsporing" nie, i time.sleep (0.1) elif i == 1: #Wanneer die uitset van die bewegingsensor HOOG gedruk is " Beweging opgespoor ", i time.sleep (0.1)

Begin die script op u Pi en plaas u hande of u vriend voor die sensor om te kyk of die sensor die beweging optel.

Stap 3: Raspberry Pi -kameramodule en opstelling

Raspberry Pi -kameramodule en -opstelling
Raspberry Pi -kameramodule en -opstelling

Die mens straal infrarooi strale uit as gevolg van die hitte, en so ook voorwerpe met temperature. Daarom kan diere of warm voorwerpe ook die bewegingsensor aktiveer. Ons het 'n manier nodig om te kyk of die opsporing geldig is. Daar is baie maniere om dit te implementeer, maar in my projek kies ek om die Raspberry Pi -kameramodule te gebruik om foto's te neem wanneer die bewegingsensor bewegings optel.

Om die kameramodule te gebruik, wil u eers seker maak dat die penne in die kamerasleuf op Pi geplaas is. Tik

sudo raspi-config

op u Pi om die konfigurasie -koppelvlak oop te maak en die kamera in die 'koppelvlakopsies' moontlik te maak. Na herlaai kan u toets of die Pi werklik aan die kamera gekoppel is

vcgencmd get_camera

en dit sal u die status wys. Die laaste stap is om die picamera -module te installeer deur te tik

pip installeer picamera

Na al die opstellings, kan u u kamera toets deur scripts soos die onderstaande uit te voer:

van picamera invoer PiCamera

van tyd af slaap kamera invoer = PiCamera () camera.start_preview () slaap (2) camera.capture ('image.jpg') camera.stop_preview ()

Die prentjie sal in die gids as 'image.jpg' gestoor word, dieselfde as die van u kameraskrif. Let op, u wil seker maak dat 'slaap (2)' daar is en die getal groter is as 2, sodat die kamera genoeg tyd het om die ligstoestand aan te pas.

Stap 4: Kombineer PIR -bewegingsensor en kameramodule

Die idee van my projek is dat die bewegingsensor en kamera in dieselfde rigting sal kyk. Elke keer as die bewegingsensor bewegings opneem, neem die kamera 'n foto sodat ons daarna kan kyk wat die bewegings veroorsaak.

Die draaiboek:

voer RPi. GPIO in as GPIO vanaf datetime invoer datatyd invoer tyd van picamera invoer PiCamera

GPIO.cleanup ()

GPIO.setwarnings (Onwaar) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Lees uitset van PIR bewegingsensor boodskap = 'start' teller = 0 log_f = open ('static/log.txt', 'w') log_f.close ()

kamera = PiCamera ()

pic_name = 0

camera.start_preview ()

tyd. slaap (2)

terwyl dit waar is:

i = GPIO.input (11) as i == 0: #As uitvoer van bewegingsensor LAAG is as teller> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' a ') boodskap = boodskap +'; eindig by ' + end +' / n 'druk (boodskap) log_f.write (boodskap) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (finale) teller = 0 druk "Geen indringers", i time.sleep (0.1) elif i == 1: #As die uitset van die bewegingsensor HOOG is as teller == 0: current = str (datetime.now ()) boodskap = 'Mens opgespoor:' + 'begin by' + huidige teller = teller + 1 druk "indringer opgespoor", i time.sleep (0.1) camera.stop_preview ()

Die dopgehou vir 'log.txt' en beelde is 'staties', wat nodig is om Flask te laat werk.

Stap 5: Stel die fles op

Opstelling vir Flask
Opstelling vir Flask

Flask is 'n mikro -webraamwerk wat in Python geskryf is en gebaseer is op die Werkzeug -toolkit en Jinja2 -sjabloon -enjin. Dit is maklik om te implementeer en te onderhou. Vir 'n beter tutoriaal vir Flask, beveel ek hierdie skakel aan: Flask Mega Tutorial

Die hoofskrif, 'routes.py', van my projek:

vanaf appmap invoer appFlaskvan fles invoer render_template, herlei invoer os

APP_ROOT = os.path.dirname (os.path.abspath (_ lêer_)) # verwys na application_top

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

@appFlask.route ('/', metodes = ['KRY', 'POST'])

def view (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = vir aanmeld logs: final_logs.append (log. strip ()) name = str (len (final_logs) -1)+'. jpg' return render_template ('view.html', logs = final_logs, lêernaam = naam)

Die HTML -lêer 'view.html' is in die boonste balk (want as ek die HTML -kodes hier kopieer, verander dit eintlik na HTML FORMAT …)

En die struktuur van die projek moet soos volg lyk (maar daar is natuurlik meer lêers as dit):

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

Stap 6: Resultaat

Uitslag
Uitslag

Vir hierdie implementering, nadat alles korrek opgestel is, moet u toegang tot u Raspberry Pi hê deur sy IP -adres in die blaaier te tik, en die resultaat moet in hierdie stap soos 'n prentjie in die boonste balk lyk.