Sommario:
- Passaggio 1: sensore di movimento PIR
- Passaggio 2: configurazione del sensore di movimento PIR
- Passaggio 3: modulo fotocamera Raspberry Pi e configurazione
- Passaggio 4: combinare il sensore di movimento PIR e il modulo telecamera
- Passaggio 5: installazione per Flask
- Passaggio 6: risultato
Video: Rilevatore umano Raspberry Pi + Fotocamera + Flacone: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
In questo tutorial, illustrerò i passaggi per il mio progetto IoT Raspberry Pi: utilizzo del sensore di movimento PIR, modulo fotocamera Raspberry per creare un semplice dispositivo IoT di sicurezza e accesso al registro di rilevamento con Flask.
Passaggio 1: sensore di movimento PIR
PIR sta per "Passive Infrared" e questo sensore di movimento rileva i movimenti osservando la vista a infrarossi e rilevando i cambiamenti a infrarossi. Pertanto, con una foglia e un essere umano che passano il sensore, rileva solo l'essere umano poiché noi come esseri umani generiamo calore e quindi emettiamo raggi infrarossi. Quindi, il sensore di movimento è una buona scelta per rilevare i movimenti umani.
Passaggio 2: configurazione del sensore di movimento PIR
Ci sono tre pin per il sensore di movimento PIR, Power, Output e Ground. Sotto i pin puoi vedere le etichette, VCC per Power, Out per Output e GND per terra. Quando il sensore rileva movimenti, il pin di uscita emette un segnale ALTO al pin Raspberry Pi a cui si collega il sensore. Per il pin di alimentazione, assicurati che si colleghi al pin 5V su Raspberry Pi per l'alimentazione. Per il mio progetto, scelgo di collegare il pin Output con Pin11 su Pi.
Dopo aver collegato tutto, puoi inviare messaggi al tuo sensore eseguendo script come quello qui sotto:
import RPi. GPIO as GPIOimport time GPIO.cleanup() GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #Leggi l'output dal sensore di movimento PIR sul Pin 11 mentre True: i =GPIO.input(11) if i==0: #Quando l'output del sensore di movimento è BASSO print "Nessun rilevamento", i time.sleep(0.1) elif i==1: #Quando l'output del sensore di movimento è ALTO print " Rilevato movimento", i time.sleep(0.1)
Esegui lo script sul tuo Pi e metti le mani o il tuo amico davanti al sensore per verificare se il sensore rileva il movimento.
Passaggio 3: modulo fotocamera Raspberry Pi e configurazione
L'essere umano emette raggi infrarossi a causa del calore, così come gli oggetti con temperature. Pertanto, anche animali o oggetti caldi possono attivare il sensore di movimento. Abbiamo bisogno di un modo per verificare se il rilevamento è valido. Esistono molti modi per implementare, ma nel mio progetto scelgo di utilizzare il modulo fotocamera Raspberry Pi per scattare foto quando il sensore di movimento rileva i movimenti.
Per utilizzare il modulo della fotocamera, devi prima assicurarti che i pin siano collegati allo slot della fotocamera su Pi. Tipo
sudo raspi-config
sul tuo Pi per aprire l'interfaccia di configurazione e abilitare la fotocamera nelle "opzioni di interfaccia". Dopo il riavvio, puoi verificare se il Pi è effettivamente connesso alla fotocamera digitando
vcgencmd get_camera
e ti mostrerà lo stato. L'ultimo passaggio consiste nell'installare il modulo picamera digitando
pip installa picamera
Dopo tutte le impostazioni, puoi testare la tua fotocamera eseguendo script come quello qui sotto:
da picamera import PiCamera
from time import sleep camera = PiCamera() camera.start_preview() sleep(2) camera.capture('image.jpg') camera.stop_preview()
L'immagine verrà archiviata come 'image.jpg' nella directory come quella dello script della fotocamera. Nota, assicurati che "sleep (2)" sia presente e che il numero sia maggiore di 2 in modo che la fotocamera abbia abbastanza tempo per regolare le condizioni di luce.
Passaggio 4: combinare il sensore di movimento PIR e il modulo telecamera
L'idea del mio progetto è che il sensore di movimento e la fotocamera siano rivolti nella stessa direzione. Ogni volta che il sensore di movimento rileva i movimenti, la fotocamera scatterà una foto in modo da poter verificare in seguito cosa causa i movimenti.
Il copione:
import RPi. GPIO as GPIOfrom datetime import datetime import time from picamera import PiCamera
GPIO.cleanup()
GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #Leggi l'output dal messaggio del sensore di movimento PIR = contatore 'start' = 0 log_f = open('static/log.txt', 'w') log_f.close()
fotocamera = PiCamera()
pic_name = 0
camera.start_preview()
tempo.sonno(2)
mentre vero:
i=GPIO.input(11) if i==0: #Quando l'output dal sensore di movimento è LOW se counter > 0: end = str(datetime.now()) log_f = open('static/log.txt', ' a') messaggio = messaggio + '; end at ' + end + '\n' print(message) log_f.write(message) log_f.close() final = 'static/' + str(pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture(final) counter = 0 print "Nessun intruso", i time.sleep(0.1) elif i==1: #Quando l'output del sensore di movimento è ALTO if counter == 0: current = str(datetime.now()) message = 'Rilevato umano:' + 'inizia da ' + contatore corrente = contatore + 1 print "Intruso rilevato", i time.sleep(0.1) camera.stop_preview()
Le directory per "log.txt" e le immagini sono "statiche", il che è necessario per il funzionamento di Flask.
Passaggio 5: installazione per Flask
Flask è un micro framework web scritto in Python e basato sul toolkit Werkzeug e sul motore di template Jinja2. È facile da implementare e mantenere. Per un tutorial migliore per Flask, consiglio questo link: Flask Mega Tutorial
Lo script principale, 'routes.py', del mio progetto:
from appfolder import appFlaskfrom flask import render_template, reindirizzare import os
APP_ROOT = os.path.dirname(os.path.abspath(_file_)) # si riferisce a application_top
APP_STATIC = os.path.join(APP_ROOT, 'statico')
@appFlask.route('/', method=['GET', 'POST'])
def view(): log_f = open(os.path.join(APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines() final_logs = per i log di accesso: final_logs.append(log. strip()) name = str(len(final_logs)-1)+'.jpg' return render_template('view.html', logs=final_logs, filename=name)
Il file HTML 'view.html' si trova nella barra in alto (perché quando copio qui i codici HTML, in realtà si trasforma in FORMATO HTML…)
E la struttura del progetto dovrebbe assomigliare a qualcosa di seguito (ma ovviamente ci sono più file di questi):
iotproject\ cartella app\ percorsi.py templates\ view.html static\ log.txt 0-j.webp
Passaggio 6: risultato
Per questa implementazione, dopo che tutto è stato configurato correttamente, dovresti essere in grado di accedere al tuo Raspberry Pi digitando il suo indirizzo IP nel browser e il risultato dovrebbe apparire come l'immagine nella barra in alto in questo passaggio.