Tabla de contenido:
- Paso 1: Sensor de movimiento PIR
- Paso 2: Configuración del sensor de movimiento PIR
- Paso 3: Módulo de cámara Raspberry Pi y configuración
- Paso 4: combine el sensor de movimiento PIR y el módulo de la cámara
- Paso 5: Configuración para Flask
- Paso 6: Resultado
Video: Detector humano Raspberry Pi + Cámara + Frasco: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
En este tutorial, recorreré los pasos para mi proyecto de IoT Raspberry Pi: uso del sensor de movimiento PIR, módulo de cámara Raspberry para construir un dispositivo IoT de seguridad simple y acceso al registro de detección con Flask.
Paso 1: Sensor de movimiento PIR
PIR significa "infrarrojo pasivo" y este sensor de movimiento capta los movimientos observando la vista infrarroja y captando los cambios infrarrojos. Por lo tanto, con una hoja y un humano pasando el sensor, solo detecta humanos ya que nosotros como humanos generamos calor y por lo tanto emitimos rayos infrarrojos. Por lo tanto, el sensor de movimiento es una buena opción para detectar movimientos humanos.
Paso 2: Configuración del sensor de movimiento PIR
Hay tres pines para el sensor de movimiento PIR, potencia, salida y tierra. Debajo de los pines puede ver las etiquetas, VCC para alimentación, Salida para salida y GND para tierra. Cuando el sensor detecta movimientos, el pin de salida emitirá una señal ALTA al pin Raspberry Pi con el que conecta el sensor. Para el pin de alimentación, debe asegurarse de que se conecte al pin de 5 V en Raspberry Pi para obtener alimentación. Para mi proyecto, elijo conectar el pin de salida con el Pin11 en Pi.
Después de conectar todo, puede enviar un mensaje de texto a su sensor ejecutando scripts como el siguiente:
importar RPi. GPIO como GPIOimportar tiempo GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) # Leer la salida del sensor de movimiento PIR en el Pin 11 mientras es Verdadero: i = GPIO.input (11) if i == 0: #Cuando la salida del sensor de movimiento es BAJA imprima "Sin detección", i time.sleep (0.1) elif i == 1: #Cuando la salida del sensor de movimiento es ALTA imprima " Movimiento detectado ", i time.sleep (0.1)
Ejecute el script en su Pi y coloque sus manos o su amigo frente al sensor para verificar si el sensor capta el movimiento.
Paso 3: Módulo de cámara Raspberry Pi y configuración
El ser humano emite rayos infrarrojos debido al calor, al igual que los objetos con temperaturas. Por lo tanto, los animales u objetos calientes también pueden activar el sensor de movimiento. Necesitamos una forma de comprobar si la detección es válida. Hay muchas formas de implementar, pero en mi proyecto, elijo usar el módulo de la cámara Raspberry Pi para tomar fotografías cuando el sensor de movimiento detecta movimientos.
Para usar el módulo de la cámara, primero debe asegurarse de que los pines estén conectados a la ranura de la cámara en Pi. Escribe
sudo raspi-config
en su Pi para abrir la interfaz de configuración y habilitar la cámara en las 'opciones de interfaz'. Después de reiniciar, puede probar si el Pi está realmente conectado a la cámara escribiendo
vcgencmd get_camera
y te mostrará el estado. El último paso es instalar el módulo picamera escribiendo
pip instalar picamera
Después de todas las configuraciones, puede probar su cámara ejecutando scripts como el siguiente:
desde picamera importar PiCamera
from time import sleep camera = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()
La imagen se almacenará como 'imagen.jpg' en el directorio igual que el de la secuencia de comandos de su cámara. Tenga en cuenta que desea asegurarse de que 'sleep (2)' esté ahí y que el número sea mayor que 2 para que la cámara tenga tiempo suficiente para ajustar la condición de luz.
Paso 4: combine el sensor de movimiento PIR y el módulo de la cámara
La idea de mi proyecto es que el sensor de movimiento y la cámara estén orientados en la misma dirección. Siempre que el sensor de movimiento capta movimientos, la cámara tomará una foto para que luego podamos verificar qué causa los movimientos.
La secuencia de comandos:
importar RPi. GPIO como GPIO desde fecha y hora importar fecha y hora importar tiempo desde picamera importar PiCamera
GPIO.cleanup ()
GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Leer la salida del mensaje del sensor de movimiento PIR = 'start' counter = 0 log_f = open ('static / log.txt', 'w') log_f.close ()
cámara = PiCamera ()
pic_name = 0
camera.start_preview ()
hora de dormir (2)
mientras que es cierto:
i = GPIO.input (11) if i == 0: #Cuando la salida del sensor de movimiento es BAJA si el contador> 0: end = str (datetime.now ()) log_f = open ('static / log.txt', ' a ') mensaje = mensaje +'; finaliza en '+ end +' / n 'print (mensaje) log_f.write (mensaje) log_f.close () final =' static / '+ str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (final) contador = 0 imprimir "Sin intrusos", i time.sleep (0.1) elif i == 1: #Cuando la salida del sensor de movimiento es ALTA si el contador == 0: actual = str (datetime.now ()) mensaje = 'Humano detectado:' + 'empezar en' + contador actual = contador + 1 imprimir "Intruso detectado", i time.sleep (0.1) camera.stop_preview ()
Los directorios para 'log.txt' y las imágenes son 'estáticos', lo cual es necesario para que Flask funcione.
Paso 5: Configuración para Flask
Flask es un marco de micro web escrito en Python y basado en el kit de herramientas Werkzeug y el motor de plantillas Jinja2. Es fácil de implementar y mantener. Para un mejor tutorial para Flask, recomiendo este enlace: Flask Mega Tutorial
El script principal, 'routes.py', de mi proyecto:
desde appfolder import appFlaskfrom flask import render_template, redirigir import os
APP_ROOT = os.path.dirname (os.path.abspath (_ file_)) # se refiere a application_top
APP_STATIC = os.path.join (APP_ROOT, 'estático')
@ appFlask.route ('/', métodos = ['OBTENER', 'POST'])
def view (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = para iniciar sesión en los registros: final_logs.append (log. strip ()) name = str (len (final_logs) -1) + '. jpg' return render_template ('view.html', logs = final_logs, filename = name)
El archivo HTML 'view.html' está en la barra superior (porque cuando copio los códigos HTML aquí, en realidad se convierte en FORMATO HTML…)
Y la estructura del proyecto debería verse como algo a continuación (pero, por supuesto, hay más archivos que estos):
iotproject / appfolder / routes.py templates / view.html static / log.txt 0-j.webp
Paso 6: Resultado
Para esta implementación, después de que todo se haya configurado correctamente, debería poder acceder a su Raspberry Pi escribiendo su dirección IP en el navegador, y el resultado debería verse como la imagen en la barra superior en este paso.