Tabla de contenido:

Detector humano Raspberry Pi + Cámara + Frasco: 6 pasos
Detector humano Raspberry Pi + Cámara + Frasco: 6 pasos

Video: Detector humano Raspberry Pi + Cámara + Frasco: 6 pasos

Video: Detector humano Raspberry Pi + Cámara + Frasco: 6 pasos
Video: Sistema de Seguridad Raspberry Pi - Sensor de Movimiento y Camara HD con envio de imagenes a correo 2024, Mes de julio
Anonim
Detector humano Raspberry Pi + Cámara + Frasco
Detector humano Raspberry Pi + Cámara + Frasco

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

Sensor de movimiento PIR
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

Configuración del sensor de movimiento PIR
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

Módulo de cámara Raspberry Pi y configuración
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

Configuración para matraz
Configuración para matraz

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

Resultado
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.