Taula de continguts:
- Pas 1: sensor de moviment PIR
- Pas 2: Configuració del sensor de moviment PIR
- Pas 3: configuració i mòdul de la càmera Raspberry Pi
- Pas 4: combineu el sensor de moviment PIR i el mòdul de càmera
- Pas 5: Configuració de Flask
- Pas 6: resultat
Vídeo: Detector humà Raspberry Pi + càmera + matràs: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
En aquest tutorial, recorreré els passos del meu projecte IoT de Raspberry Pi: utilitzar el sensor de moviment PIR, el mòdul Càmera Raspberry per crear un dispositiu IoT de seguretat senzill i accedir al registre de detecció amb Flask.
Pas 1: sensor de moviment PIR
PIR significa "Passius Infrared" i aquest sensor de moviment capta moviments mirant la vista infraroja i recollint els canvis en l'infraroig. Per tant, amb una fulla i un humà que passa el sensor, només detecta l’ésser humà, ja que nosaltres generem calor i, per tant, emetem raigs infrarojos. Per tant, el sensor de moviment és una bona opció per detectar moviments humans.
Pas 2: Configuració del sensor de moviment PIR
Hi ha tres pins per al sensor de moviment PIR, alimentació, sortida i terra. Sota els pins podeu veure les etiquetes, VCC per a alimentació, sortida per a sortida i GND per a terra. Quan el sensor detecta moviments, el pin de sortida emetrà un senyal HIGH al pin Raspberry Pi amb el qual connecteu el sensor. Per a Power pin, voleu assegurar-vos que es connecti al pin de 5 V de Raspberry Pi per obtenir energia. Per al meu projecte, trio connectar el pin de sortida amb Pin11 al Pi.
Després de connectar-ho tot, podeu enviar missatges de text al sensor executant scripts com el següent:
importar RPi. GPIO com GPIO importar temps GPIO.cleanup () GPIO.setwarnings (fals) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Llegir la sortida del sensor de moviment PIR al pin 11 mentre és cert: i = GPIO.input (11) si i == 0: #Quan la sortida del sensor de moviment és BAIXA imprimeix "Sense detecció", he time.sleep (0.1) elif i == 1: #Quan la sortida del sensor de moviment és ALTA " Moviment detectat ", i time.sleep (0,1)
Executeu el guió al Pi i poseu les mans o el vostre amic davant del sensor per comprovar si el sensor capta el moviment.
Pas 3: configuració i mòdul de la càmera Raspberry Pi
L’ésser humà emet rajos infrarojos a causa de la calor, i també els objectes amb temperatures. Per tant, els animals o objectes calents també poden activar el sensor de moviment. Necessitem una manera de comprovar si la detecció és vàlida. Hi ha moltes maneres d’implementar-les, però en el meu projecte, trio utilitzar el mòdul de càmera Raspberry Pi per fer fotografies quan el sensor de moviment capta moviments.
Per utilitzar el mòdul de càmera, primer us voleu assegurar que els pins estiguin connectats a la ranura de la càmera del Pi. Tipus
sudo raspi-config
al vostre Pi per obrir la interfície de configuració i habilitar la càmera a les "opcions d'interfície". Després de reiniciar, podeu provar si el Pi està connectat a la càmera escrivint
vcgencmd get_camera
i us mostrarà l'estat. L’últim pas és instal·lar el mòdul picamera escrivint
pip instal·la picamera
Després de totes les configuracions, podeu provar la càmera executant scripts com el següent:
d'importació de càmeres d'imatges PiCamera
d'importació de temps sleep camera = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()
La imatge s'emmagatzemarà com a "imatge.jpg" al directori igual que la de l'script de la càmera. Tingueu en compte que voleu assegurar-vos que hi hagi "sleep (2)" i que el nombre sigui superior a 2, de manera que la càmera tingui prou temps per ajustar l'estat de la llum.
Pas 4: combineu el sensor de moviment PIR i el mòdul de càmera
La idea del meu projecte és que el sensor de moviment i la càmera s’enfrontin en la mateixa direcció. Sempre que el sensor de moviment capta moviments, la càmera farà una foto perquè puguem comprovar què causa els moviments després.
El guió:
importar RPi. GPIO com a GPIO a partir del temps d'importació de la data i hora d'importació de la càmera d'importació de la càmera 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 ()
nom_pic = 0
camera.start_preview ()
time.sleep (2)
mentre que és cert:
i = GPIO.input (11) si i == 0: #Quan la sortida del sensor de moviment és BAIX si el comptador> 0: end = str (datetime.now ()) log_f = open ('static / log.txt', ' a ') missatge = missatge +'; acabar a '+ final +' / n 'imprimir (missatge) log_f.write (missatge) log_f.close () final =' static / '+ str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (final) comptador = 0 imprimeix "Sense intrusos", i time.sleep (0.1) elif i == 1: #Quan la sortida del sensor de moviment és ALTA si comptador == 0: actual = str (datetime.now ()) missatge = 'Humà detectat:' + 'comença a' + comptador actual = comptador + 1 imprimeix "Intrús detectat", i time.sleep (0,1) camera.stop_preview ()
Els directoris de 'log.txt' i les imatges són 'estàtiques', cosa que és necessària perquè Flask funcioni.
Pas 5: Configuració de Flask
Flask és un micro framework web escrit en Python i basat en el kit d'eines Werkzeug i el motor de plantilles Jinja2. És fàcil d’implementar i mantenir. Per obtenir un tutorial millor per a Flask, recomano aquest enllaç: Flask Mega Tutorial
El guió principal, 'routes.py', del meu projecte:
des de la carpeta d’aplicacions d’importació appFlaskde flask import render_template, redirigeix el sistema operatiu d’importació
APP_ROOT = os.path.dirname (os.path.abspath (_ file_)) # fa referència a application_top
APP_STATIC = os.path.join (APP_ROOT, 'static')
@ appFlask.route ('/', methods = ['GET', 'POST'])
vista def (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = per a registres d'inici de sessió: final_logs.append (log. strip ()) name = str (len (final_logs) -1) + '. jpg' return render_template ('view.html', logs = final_logs, filename = name)
El fitxer HTML "view.html" es troba a la barra superior (perquè quan copio els codis HTML aquí, en realitat es converteix en FORMAT HTML …)
I l'estructura del projecte hauria de semblar alguna cosa a continuació (però, per descomptat, hi ha més fitxers que aquests):
iotproject / appfolder / routes.py templates / view.html static / log.txt 0-j.webp
Pas 6: resultat
Per a aquesta implementació, després de configurar-ho tot correctament, hauríeu de poder accedir al vostre Raspberry Pi escrivint la seva adreça IP al navegador i el resultat hauria de semblar la imatge de la barra superior en aquest pas.