Cuprins:
- Pasul 1: senzor de mișcare PIR
- Pasul 2: Configurarea senzorului de mișcare PIR
- Pasul 3: Modul și configurare cameră Raspberry Pi
- Pasul 4: Combinați senzorul de mișcare PIR și modulul camerei
- Pasul 5: Configurare pentru Flask
- Pasul 6: Rezultat
Video: Detector uman Raspberry Pi + Cameră + Balon: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Î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
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
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
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
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
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.