Nota
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
¿Por qué unirse?
Soporte Experto: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.
Avances Exclusivos: Accede anticipadamente a nuevos anuncios de productos y adelantos exclusivos.
Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
Promociones y Sorteos Festivos: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.
4.1.2 Cámara de Captura Automática
Introducción
Cuando estés fuera, las pequeñas ardillas en el bosque podrían visitar tu alféizar. ¡Hagamos una cámara de captura automática para dejar fotos de estas adorables criaturas!
Componentes Necesarios
En este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
COMPONENTES EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DE COMPONENTES |
ENLACE DE COMPRA |
|---|---|
- |
Diagrama Esquemático
Nombre T-Board |
físico |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
Procedimientos Experimentales
Antes de este proyecto, necesitas asegurarte de completar 3.1.1 Módulo Fotográfico .
Paso 1: Construye el circuito.
Paso 2: Entra en el Escritorio de Raspberry Pi. Es posible que necesites una pantalla para una mejor experiencia, consulta: Conecta tu Raspberry Pi. O accede al escritorio de Raspberry Pi de forma remota, para un tutorial detallado consulta Escritorio Remoto.
Paso 3: Abre un Terminal y accede a la carpeta del código.
cd ~/raphael-kit/python-pi5
Paso 4: Ejecuta.
sudo python3 4.1.4_AutomaticCaptureCamera_zero.py
Después de ejecutar el código, el PIR detectará el entorno circundante y si detecta que la pequeña ardilla pasa cerca, la cámara tomará una foto. El intervalo entre fotos es de 3 segundos, y el número total de fotos tomadas se mostrará en la ventana de impresión.
Hay dos potenciómetros en el módulo PIR: uno es para ajustar la sensibilidad y el otro para ajustar la distancia de detección. Para que el módulo PIR funcione mejor, necesitas girar ambos en sentido contrario a las agujas del reloj hasta el final.
Nota
También puedes abrir 4.1.4_AutomaticCaptureCamera_zero.py en la ruta ~/raphael-kit/python-pi5/ con un IDE de Python, haz clic en el botón Run para ejecutar y detén el código con el botón Stop.
Advertencia
Si recibe el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulte Si «gpiozero» no funciona.
Código
Nota
Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como raphael-kit/python-pi5. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.
#!/usr/bin/env python3
from picamera2 import Picamera2, Preview
from gpiozero import MotionSensor
import time
import os
# Recupera el nombre de usuario actual y su directorio de inicio
user = os.getlogin()
user_home = os.path.expanduser(f'~{user}')
# Inicializa la cámara
camera = Picamera2()
camera.start()
# Inicializa el sensor de movimiento en el pin GPIO 17
pir = MotionSensor(17)
try:
i = 1 # Inicializa el contador de imágenes
while True:
if pir.motion_detected:
# Captura una imagen cuando se detecta movimiento y la guarda con un número único
camera.capture_file(f'{user_home}/capture%s.jpg' % i)
print('The number is %s' % i) # Print the image count
time.sleep(3) # Wait for 3 seconds before next detection
i += 1 # Increment the image count
else:
print('waiting') # Print 'waiting' when no motion is detected
time.sleep(0.5) # Check for motion every 0.5 seconds
except KeyboardInterrupt:
# Detiene la cámara si ocurre un KeyboardInterrupt
camera.stop_preview()
pass
Explicación del Código
Importa las clases
Picamera2yPreviewpara el control de la cámara, la claseMotionSensorpara la detección de movimiento, y las bibliotecas estándartimeyospara el manejo del tiempo y las interacciones del sistema operativo.#!/usr/bin/env python3 from picamera2 import Picamera2, Preview from gpiozero import MotionSensor import time import os
Recupera el nombre de usuario actual y el directorio de inicio para guardar las imágenes capturadas.
# Recupera el nombre de usuario actual y el directorio de inicio user = os.getlogin() user_home = os.path.expanduser(f'~{user}')
Inicializa la cámara y la pone en marcha.
# Inicializa la cámara camera = Picamera2() camera.start()
Inicializa un sensor de movimiento PIR conectado al pin GPIO 17.
# Inicializa el sensor de movimiento en el pin GPIO 17 pir = MotionSensor(17)
Inicializa un contador
ipara rastrear el número de imágenes capturadas. En un bucle infinito, verifica si se detecta movimiento. Si se detecta movimiento, captura una imagen, la guarda con un nombre único basado en el contadori, imprime el número de la imagen y espera 3 segundos antes de volver a verificar el movimiento. El contadorise incrementa después de cada captura.try: i = 1 # Inicializa el contador de imágenes while True: if pir.motion_detected: # Captura una imagen cuando se detecta movimiento y la guarda con un número único camera.capture_file(f'{user_home}/capture%s.jpg' % i) print('The number is %s' % i) # Print the image count time.sleep(3) # Wait for 3 seconds before next detection i += 1 # Increment the image count
Si no se detecta movimiento, imprime
esperandoy verifica el movimiento cada 0.5 segundos.try: ... while True: ... else: print('waiting') # Print 'waiting' when no motion is detected time.sleep(0.5) # Check for motion every 0.5 seconds
Captura un KeyboardInterrupt (como Ctrl+C) para detener la vista previa de la cámara y salir del script de manera segura.
except KeyboardInterrupt: # Detiene la cámara si ocurre un KeyboardInterrupt camera.stop_preview() pass