Cuprins:

Detector uman Raspberry Pi + Cameră + Balon: 6 pași
Detector uman Raspberry Pi + Cameră + Balon: 6 pași

Video: Detector uman Raspberry Pi + Cameră + Balon: 6 pași

Video: Detector uman Raspberry Pi + Cameră + Balon: 6 pași
Video: Alternator auto la generatorul auto excitat folosind DIODE 2024, Iulie
Anonim
Detector uman Raspberry Pi + Cameră + Balon
Detector uman Raspberry Pi + Cameră + Balon

În acest tutorial, voi parcurge pașii pentru proiectul meu Raspberry Pi IoT - Utilizarea senzorului de mișcare PIR, modulul Raspberry Camera pentru a construi un dispozitiv IoT de securitate simplu și Accesarea jurnalului de detectare cu Flask.

Pasul 1: senzor de mișcare PIR

Senzor de mișcare PIR
Senzor de mișcare PIR

PIR înseamnă „Infraroșu pasiv” și acest senzor de mișcare preia mișcări urmărind vizualizarea în infraroșu și preluând modificările în infraroșu. Prin urmare, cu o frunză și un om care trece senzorul, acesta detectează doar omul, deoarece noi, ca oameni, generăm căldură și astfel emitem raze infraroșii. Prin urmare, senzorul de mișcare este o alegere bună pentru detectarea mișcărilor umane.

Pasul 2: Configurarea senzorului de mișcare PIR

Configurarea senzorului de mișcare PIR
Configurarea senzorului de mișcare PIR

Există trei pini pentru senzorul de mișcare PIR, putere, ieșire și masă. Sub pini puteți vedea etichetele, VCC pentru alimentare, ieșire pentru ieșire și GND pentru masă. Când senzorul detectează mișcări, pinul de ieșire va emite un semnal HIGH la pinul Raspberry Pi cu care conectați senzorul. Pentru pinul de alimentare, doriți să vă asigurați că se conectează la pinul de 5 V de pe Raspberry Pi pentru putere. Pentru proiectul meu, aleg să conectez pinul de ieșire cu Pin11 pe Pi.

După ce conectați totul, vă puteți trimite textul senzorului executând scripturi precum cel de mai jos:

import RPi. GPIO ca GPIO import timp GPIO.cleanup () GPIO.setwarnings (Fals) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Read output from PIR motion sensor on Pin 11 while True: i = GPIO.input (11) dacă i == 0: #Când ieșirea de la senzorul de mișcare este tipărită LOW "Fără detectare", i time.sleep (0.1) elif i == 1: # Când ieșirea de la senzorul de mișcare este tipărită HIGH " Mișcare detectată ", i time.sleep (0.1)

Rulați scriptul pe Pi și puneți mâinile sau prietenul în fața senzorului pentru a verifica dacă senzorul preia mișcarea.

Pasul 3: Modul și configurare cameră Raspberry Pi

Modul și configurare cameră Raspberry Pi
Modul și configurare cameră Raspberry Pi

Omul emite raze infraroșii datorită căldurii, la fel și obiectele cu temperaturi. Prin urmare, animalele sau obiectele fierbinți pot declanșa și senzorul de mișcare. Avem nevoie de o modalitate de a verifica dacă detectarea este validă. Există multe modalități de implementare, dar în proiectul meu, aleg să folosesc modulul camerei Raspberry Pi pentru a face fotografii atunci când senzorul de mișcare preia mișcări.

Pentru a utiliza modulul camerei, mai întâi doriți să vă asigurați că pinii sunt conectați la slotul camerei de pe Pi. Tip

sudo raspi-config

pe Pi pentru a deschide interfața de configurare și pentru a activa camera în „opțiunile de interfață”. După repornire, puteți testa dacă Pi este de fapt conectat la cameră tastând

vcgencmd get_camera

și vă va arăta starea. Ultimul pas este instalarea modulului picamera tastând

pip instala picamera

După toate configurările, vă puteți testa camera rulând scripturi precum cel de mai jos:

din picamera import PiCamera

din timp import camera de dormit = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()

Imaginea va fi stocată ca „imagine.jpg” în director la fel ca și cea din scriptul camerei. Observați, doriți să vă asigurați că „sleep (2)” este acolo și numărul este mai mare decât 2, astfel încât camera să aibă suficient timp pentru a regla starea luminii.

Pasul 4: Combinați senzorul de mișcare PIR și modulul camerei

Ideea proiectului meu este că senzorul de mișcare și camera se vor confrunta în aceeași direcție. Ori de câte ori senzorul de mișcare preia mișcări, camera va face o fotografie, astfel încât să putem verifica ce cauzează mișcările ulterior.

Scenariul:

import RPi. GPIO ca GPIO de la data-timp import date-timp de import din picamera import PiCamera

GPIO.cleanup ()

GPIO.setwarnings (Fals) 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 ()

camera = PiCamera ()

pic_name = 0

camera.start_preview ()

time.sleep (2)

în timp ce este adevărat:

i = GPIO.input (11) if i == 0: #When output from the motion sensor is LOW if counter> 0: end = str (datetime.now ()) log_f = open ('static / log.txt', ' a ') mesaj = mesaj +'; terminați la '+ sfârșit +' / n 'print (mesaj) log_f.write (mesaj) log_f.close () final =' static / '+ str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (final) contor = 0 tipăriți „Fără intruși”, i time.sleep (0.1) elif i == 1: # Când ieșirea de la senzorul de mișcare este ÎNALT dacă contorul == 0: curent = str (datetime.now ()) mesaj = 'Om detectat:' + 'începe la' + contor curent = contor + 1 tipărire "Intrus detectat", i time.sleep (0.1) camera.stop_preview ()

Directoarele pentru „log.txt” și imaginile sunt „statice”, ceea ce este necesar pentru ca Flask să funcționeze.

Pasul 5: Configurare pentru Flask

Configurare pentru Flask
Configurare pentru Flask

Flask este un micro framework web scris în Python și bazat pe setul de instrumente Werkzeug și pe motorul șablon Jinja2. Este ușor de implementat și întreținut. Pentru un tutorial mai bun pentru Flask, recomand acest link: Flask Mega Tutorial

Principalul script, „routes.py”, al proiectului meu:

din appfolder import appFlaskde la flask import render_template, redirecționează import OS

APP_ROOT = os.path.dirname (os.path.abspath (_ fișier_)) # se referă la application_top

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

@ appFlask.route ('/', methods = ['GET', 'POST'])

vizualizare def (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = pentru log-uri log: final_logs.append (log. strip ()) name = str (len (final_logs) -1) + '. jpg' return render_template ('view.html', logs = final_logs, filename = name)

Fișierul HTML „view.html” se află în bara de sus (deoarece atunci când copiez codurile HTML aici, de fapt se transformă în HTML FORMAT …)

Și structura proiectului ar trebui să arate ca ceva mai jos (dar, desigur, există mai multe fișiere decât acestea):

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

Pasul 6: Rezultat

Rezultat
Rezultat

Pentru această implementare, după ce totul a fost configurat corect, ar trebui să puteți accesa Raspberry Pi tastând adresa IP a acestuia în browser, iar rezultatul ar trebui să arate ca imaginea din bara de sus la acest pas.