Nota

¡Hola, bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Previews exclusivos: Accede anticipadamente a anuncios de nuevos productos y adelantos exclusivos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

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

3.1.1 Módulo Fotográfico

Introducción

En este kit, equipado con un módulo de cámara, vamos a intentar tomar una foto con Raspberry Pi.

Componentes necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/photo1.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Módulo de Cámara

COMPRAR

Procedimientos experimentales

Paso 1: Accede al escritorio de Raspberry Pi. Puede 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 2: Abre un terminal y accede a la carpeta del código.

cd ~/raphael-kit/python/

Paso 3: Ejecuta el código.

sudo python3 3.1.1_PhotographModule.py

Después de ejecutar el código, la cámara tomará una foto. Ahora puedes ver la foto llamada my_photo.jpg en el directorio ~.

Nota

También puedes abrir 3.1.1_PhotographModule.py en la ruta ~/raphael-kit/python/ con un IDE de Python, hacer clic en el botón de Ejecutar para ejecutar el código y detenerlo con el botón de Detener.

Si deseas descargar la foto a tu PC, consulta Software FileZilla.

Código

#!/usr/bin/env python3
from picamera2 import Picamera2, Preview
import os

# Get the current user's login name
user = os.getlogin()
# Get the path to the user's home directory
user_home = os.path.expanduser(f'~{user}')

# Create a Picamera2 instance
camera = Picamera2()
# Retrieve the default preview configuration
preview_config = camera.preview_configuration

try:
    # Set preview size and format
    preview_config.size = (800, 600)
    preview_config.format = 'XRGB8888'
    # Start the camera preview in QTGL mode
    camera.start_preview(Preview.QTGL)
    # Start the camera
    camera.start()
    # Capture and save a photo to the user's home directory
    camera.capture_file(f'{user_home}/my_photo.jpg')

except KeyboardInterrupt:
    # Stop the camera preview if a KeyboardInterrupt (e.g., Ctrl+C) occurs
    camera.stop_preview()
    pass

Explicación del código

  1. Importa las clases Picamera2 y Preview de la biblioteca picamera2, y el módulo os para interacciones con el sistema operativo.

    #!/usr/bin/env python3
    from picamera2 import Picamera2, Preview
    import os
    
  2. Obtiene el nombre de inicio de sesión del usuario actual y la ruta a su directorio personal.

    # Obtener el nombre de usuario actual
    user = os.getlogin()
    # Obtener la ruta al directorio personal del usuario
    user_home = os.path.expanduser(f'~{user}')
    
  3. Crea una instancia de Picamera2 y recupera la configuración predeterminada de vista previa.

    # Crear una instancia de Picamera2
    camera = Picamera2()
    # Recuperar la configuración predeterminada de la vista previa
    preview_config = camera.preview_configuration
    
  4. Establece el tamaño y el formato de la vista previa de la cámara. El tamaño se establece en 800x600 píxeles y el formato en XRGB8888.

    try:
        # Establecer tamaño y formato de la vista previa
        preview_config.size = (800, 600)
        preview_config.format = 'XRGB8888'
    
        ...
    
  5. Inicia la vista previa de la cámara en modo QTGL, un método para mostrar la vista previa, y luego inicia la cámara.

    try:
        ...
    
        # Iniciar la vista previa en modo QTGL
        camera.start_preview(Preview.QTGL)
        # Iniciar la cámara
        camera.start()
    
        ...
    
  6. Captura una imagen desde la cámara y la guarda en ~/.

    try:
        ...
    
        # Capturar y guardar una foto en el directorio personal del usuario
        camera.capture_file(f'{user_home}/my_photo.jpg')
    

    Nota

    Puedes usar la función camera.capture() junto con un bucle for para lograr disparos continuos. Usa la función delay para ajustar el intervalo de tiempo entre fotos.

    for i in 5:
        camera.capture(f'{user_home}/my_photo%s.jpg' % i)
    
  7. Este bloque de código maneja una interrupción de teclado (como Ctrl+C) deteniendo la vista previa de la cámara. La instrucción pass se utiliza para manejar la excepción sin realizar ninguna acción adicional.

    except KeyboardInterrupt:
        # Detener la vista previa si ocurre un KeyboardInterrupt (ej., Ctrl+C)
        camera.stop_preview()
        pass