Detecta intrusos y guarda imágenes con Pi Camera y Firebase


Debido al crecimiento global en diversas industrias, cada vez más personas abandonan su lugar de residencia o trabajo. Existe la necesidad de proteger sus hogares, propiedades, fábricas y vecindarios, y aquí la detección de intrusos usando varias técnicas está ganando popularidad. El Internet de las cosas ha revolucionado aún más este tipo de aplicaciones en los tiempos modernos con alternativas en las que el usuario puede recibir actualizaciones a pedido sobre intrusos desde cualquier ubicación deseada a través de una conectividad perfecta. El sistema propuesto es un sistema de seguridad Raspberry Pi que utiliza una cámara Pi y un sensor infrarrojo pasivo (PIR) como unidad de detección de movimiento. Las imágenes así obtenidas se almacenan en el almacenamiento de Firebase.

Se puede observar cualquier terreno (interior/exterior) o zona, e incluso un movimiento muy leve de un cuerpo humano/animal/que irradia calor puede ser capturado por un PIR de manera muy efectiva, activando la Pi-Camera para capturar una imagen de la observación. zona Puede modificarse para usarse como detector de intrusos, tomar fotos de la vida silvestre, detección de intrusos, reconocimiento facial o varias aplicaciones similares.

Sin la configuración de Firebase activada, las imágenes capturadas se almacenan en la Raspberry Pi de forma predeterminada. En ambos casos, el nombre generado automáticamente contiene la hora y la fecha de entrada, lo que brinda un beneficio adicional para la verificación del usuario de la zona de observación (y su verificación contra la entrada no autorizada esperada/inesperada) al verificar la carpeta. El mismo acceso es posible a través del sistema Firebase en su dispositivo Android/iOS o a través de la aplicación web. Nuestra configuración sugerida muestra una configuración de aplicación web y su implementación.

Figura 1: El prototipo del área de observación del autor cuando el PIR no detecta ningún movimiento.
Figura 1: El prototipo del área de observación del autor cuando el PIR no detecta ningún movimiento.

Utilizamos el lenguaje Python para la programación. Antes de codificar, el usuario debe configurar el sistema operativo Raspbian en la Raspberry Pi. Si usamos Raspberry Pi, necesitamos instalar los archivos de la biblioteca de la cámara Pi para ejecutar este proyecto en Raspberry Pi. Consulte la Figura 1 y la Figura 2.

La figura 1 muestra la configuración propuesta por el autor de la zona de observación y el ensamblaje R-Pi junto con la cámara Pi.

La figura 2 muestra la configuración propuesta por el autor de la zona de observación y el ensamblaje R-Pi junto con la cámara Pi bajo intrusión y esto se detecta. La imagen se captura y se guarda como referencia.

Prototipo del autor de la misma área de observación, cuando un pequeño gesto de la mano activa la Pi Camera y hace que grabe la imagen en ese momento.
Figura 2: Prototipo del autor de la misma área de observación cuando un pequeño movimiento de la mano activa la Pi-Camera y hace que grabe la imagen en ese momento.
Índice del contenido

Instalaciones y montaje:

Para usar una cámara Raspberry Pi (conectada con un cable plano), primero habilite la interfaz de la cámara en los ajustes de configuración de Raspberry Pi. El siguiente código se utiliza para esta parte:

• $ sudo apt-get install python-picamera
• $ sudo apt-get installpython3-picamera
  • A continuación encontrará las instrucciones paso a paso para la implementación.

Paso 1: Necesitamos activar el software de la cámara Raspberry Pi antes de poder usar el módulo de la cámara. En el entorno de escritorio, primero vaya al menú principal y seleccione Configuración > Configuración de Raspberry Pi. Seleccione la pestaña "Interfaces" y active la cámara.

Paso 2: Después de completar con éxito el paso 1 en Raspberry Pi, se recomienda realizar una actualización de software. Esto se puede hacer ejecutando los siguientes comandos de Linux en la terminal de Linux:

• $ sudo apt-get update
• $ sudo apt-get upgrade
  • Paso 3:Una vez que se completa la actualización y la actualización, debemos reiniciar el sistema.
  • Etapa 4: Después de reiniciar, necesitamos escribir el código en Python3/ThonnyIDE para que el proyecto funcione.

La figura 3 muestra el diagrama de bloques básico de la configuración propuesta.

Figura 3: Prototipo del autor del sistema de registro y detección de intrusos basado en Firebase
Figura 3: Prototipo del autor del sistema de registro y detección de intrusos basado en Firebase

Pruebas (para la cámara Pi con sensor de movimiento):

  • Al realizar la prueba, primero debemos probar el código de la cámara Pi en la terminal y se ejecutará
    durante 5 segundos. Esto asegura que se detecte el movimiento.
  • raspistill -o prueba.jpg.

La tabla 1 muestra la lista de piezas

componentesMultitudDescripción
Frambuesa Pi 3b+1para programar
sensor infrarrojo1sensor de movimiento
camara pi1Cámara Pi de 5MP
Cable para pasar corriente3suéter mujer-mujer
Conexiones entre sensor PIR y una Raspberry Pi
etiqueta del tableroFunción pin (PIR)frambuesa pi
TIERRAPisoTIERRA
5Ventrada de alimentación de 5V5V
FUERA DEsalida del sensorPatilla 7 (GPIO 4)

Como todos sabemos, cada imagen en la que se hace clic ocupa mucha memoria. Por lo que sugerimos almacenarlos en Firebase, un conjunto de servicios de alojamiento para cualquier tipo de aplicación. Ofrece NoSQL, alojamiento en tiempo real de bases de datos, contenido, autenticación social y notificaciones o servicios como un servidor de comunicaciones en tiempo real.

A continuación se encuentran las instrucciones paso a paso para cada nuevo usuario

1]Abre el sitio web

Un proyecto de Firebase es un contenedor para sus aplicaciones web, de Apple y de Android. Las aplicaciones de este proyecto comparten funciones como base de datos, administración de usuarios y configuración remota.

Un proyecto de Firebase es un proyecto en la nube. Cuando crea un nuevo proyecto de Firebase en la consola de Firebase, en realidad está creando un proyecto de Google Cloud en segundo plano.

2]Haga clic en el botón Comenzar.

3]Esto nos lleva a la consola del proyecto https://console.firebase.google.com/

4]Haga clic en el botón "Crear proyecto".

5]Crear un proyecto (Paso 1 de 3)

Dale un nombre a nuestro proyecto.
El nombre de mi proyecto es Detección de intrusos.
Acepte los términos de Firebase y haga clic en el botón Siguiente.

6]Google Analytics (Paso 2 de 3)

Google Analytics es una solución de análisis gratuita e ilimitada que permite la orientación, la generación de informes y más en Firebase Crashlytics, Cloud Messaging, In-App Messaging, Remote Configuration, A/B Testing y Cloud Functions.

Se recomienda activar la opción "Habilitar Google Analytics para este proyecto".

Pulse el botón Siguiente.

7]Configurar Google Analytics (Paso 3 de 3)

Introduzca la ubicación de análisis. Esto representa el país o la región de su organización. Esto no afecta el lugar donde Google puede procesar y almacenar datos de clientes para Firebase.

Configuración de uso compartido de datos: no he optado por la configuración predeterminada de uso compartido de datos de Google Analytics.
Acepte los términos de Google Analytics.

Continúe con el botón "Crear proyecto".

8]Tu nuevo proyecto está listo. Pulse el botón Siguiente.

El nombre de su proyecto ahora debería ser visible para usted en la pantalla.

La barra lateral ofrece varias opciones para su proyecto.

Seleccione Crear
Elige almacenamiento
Seleccione el botón Comenzar.

Para los pasos 1 a 8, consulte la Figura 4 para ver las capturas de pantalla de cada paso clave de implementación.

Figura 4: muestra capturas de pantalla de todos los pasos importantes de la aplicación de su proyecto.
Figura 4: muestra capturas de pantalla de todos los pasos importantes de la aplicación de su proyecto.

9]Preferí empezar en modo producción.

Pulse el botón Siguiente.

Introduzca la ubicación de almacenamiento en la nube. [After you set this location, you cannot change it later. This location setting will also be the default location for Cloud Firestore.]

He seleccionado Asia Sur1.

Esto da como resultado la creación de un depósito predeterminado.

10]Vaya a 'Reglas' en Almacenamiento y seleccione 'Editar reglas'.

Necesitamos acceso de lectura y escritura en todo tipo de condiciones, por lo que en el programa de la derecha debemos eliminar ":si es falso".

Haga clic en el botón Publicar.

11]Ir a Construir.
Elija Base de datos en tiempo real.
Haga clic en el botón Crear base de datos.

Tenemos que elegir "Iniciar en modo de prueba". Sus datos están abiertos de forma predeterminada para una configuración rápida. Sin embargo, debe actualizar sus reglas de seguridad dentro de los 30 días para permitir el acceso de lectura/escritura del cliente a largo plazo. Esto es para asegurar la compensación de terceros.

Haga clic en el botón Activar.

Esto le dará un enlace a la base de datos de su proyecto. Por ejemplo, el enlace a mi proyecto.

12]Ir a la vista general del proyecto.
Esto agregará una aplicación para comenzar.
Puede elegir entre Android, iOS y la aplicación web. [we opted for Web App]
Para garantizar el acceso basado en la web a los detalles de nuestro proyecto, seleccione el botón Web.

13]Aplicación de registro.
Escriba el nombre del Proyecto de detección de intrusos en el campo para ingresar el apodo de la aplicación.
Seleccione el botón Registrar aplicación.

14]Vaya al botón Agregar Firebase SDK.
Seleccione el botón Usar Npm. [https://www.npmjs.com/]
Ahora necesitamos los detalles de autenticación definidos por JS SDK
La configuración de Firebase de su aplicación web (debe incluir los siguientes detalles)
Clave API:
Dominio Auténtico:
URL de la base de datos:
Projecto ID:
cubo de almacenamiento:
ID del remitente del mensaje:
Identificación de la aplicación:
Identificación de la medida:

Recuerda que estos datos son solo tuyos y ten cuidado al dárselos a terceros.
Para el SDK de Firebase JS v7.20.0 y versiones posteriores, el ID de medición es opcional.

Esta información debe incluirse en el programa R Pi para la autenticación y el procesamiento posterior.

Haga clic en el botón Continuar a la consola.

La figura 5 cubre los pasos restantes relacionados con la compatibilidad con capturas de pantalla para la instalación.

Figura 5: muestra capturas de pantalla de los pasos restantes de la aplicación de su proyecto
Figura 5: muestra capturas de pantalla de los pasos restantes de la aplicación de su proyecto

Si todos los pasos se han realizado correctamente hasta el momento, ahora deberíamos estar listos para recibir todas las imágenes en las que se hizo clic capturadas con PIR reenviadas por Firebase, como se muestra en la Figura 6. Si es necesario, tiene la opción de cargar algunos archivos (imágenes capturadas previamente).

Figura 6: Portal de almacenamiento Firebase del autor de Observation Zone con una cámara Pi
Figura 6: Portal de almacenamiento Firebase del autor de Observation Zone con una cámara Pi

Figura 6: Portal de almacenamiento Firebase del autor de Observation Zone con una cámara Pi
Código: (todos los espacios deben llenarse con sus propias identificaciones únicas generadas en el paso 14)

Código: (todos los espacios deben llenarse con sus propias identificaciones únicas generadas en el paso 14)

import RPi.GPIO as GPIO
import time
from datetime import datetime
from picamera import PiCamera
from time import sleep
import os
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
PIR_PIN = 7
#camera.rotation = 180
GPIO.setup(PIR_PIN, GPIO.IN)
import pyrebase
firebaseConfig = {
'apiKey': __________________________,
'authDomain': "____________________________”,
'databaseURL': "______________________________",
'projectId': "_____________",
'storageBucket': "________________",
'messagingSenderId': "__________________",
'appId': "___________________________",
'measurementId': "_______________"
}
firebase = pyrebase.initialize_app(firebaseConfig)
storage = firebase.storage()
camera = PiCamera()
while True:
try:
if GPIO.input(PIR_PIN) == GPIO.HIGH:
print("Motion detected!")
now = datetime.now()
dt = now.strftime("%d%m%Y%H:%M:%S")
name = dt+".jpg"
camera.capture(name)
print(name+" saved")
storage.child(name).put(name)
print("Image sent")
os.remove(name)
print("File Removed")
sleep(2)
except:
camera.close()

Si quieres conocer otros artículos parecidos a Detecta intrusos y guarda imágenes con Pi Camera y Firebase puedes visitar la categoría Electrónica.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir