.. note:: ¡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é unirte?** - **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. - **Avances exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos. - **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más nuevos. - **Promociones y sorteos festivos**: Participa en sorteos y promociones navideñas. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo! .. _3.1.1_py_pi5: 3.1.1 Módulo Fotográfico ============================= Introducción -------------------- En este kit, equipado con un módulo de cámara, intentemos tomar una foto con Raspberry Pi. Componentes Necesarios ------------------------------- En este proyecto, necesitamos los siguientes componentes. .. image:: ../python_pi5/img/3.3.1_photograph_list.png :width: 800 Es definitivamente conveniente comprar un kit completo, aquí está el enlace: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nombre - ARTÍCULOS EN ESTE KIT - ENLACE * - Kit Raphael - 337 - |link_Raphael_kit| También puedes comprarlos por separado en los enlaces a continuación. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCCIÓN DEL COMPONENTE - ENLACE DE COMPRA * - :ref:`cpn_camera_module` - |link_camera_buy| Procedimientos Experimentales ------------------------------------- **Paso 1:** Accede al Escritorio de Raspberry Pi. Es posible que necesites una pantalla para una mejor experiencia, consulta: `Connect your Raspberry Pi `_. O accede al escritorio de Raspberry Pi de forma remota, para un tutorial detallado consulta :ref:`remote_desktop`. **Paso 2:** Abre una Terminal y ve a la carpeta del código. .. code-block:: cd ~/raphael-kit/python-pi5 **Paso 3:** Ejecuta. .. code-block:: sudo python3 3.1.1_PhotographModule_zero.py Después de que el código se ejecute, la cámara tomará una foto. Ahora puedes ver la foto llamada ``my_photo.jpg`` en el directorio ``~``. .. note:: También puedes abrir ``3.1.1_PhotographModule.py`` en la ruta ``~/raphael-kit/python-pi5/`` con un IDE de Python, haz clic en el botón Ejecutar para ejecutar y detén el código con el botón Detener. Si deseas descargar la foto a tu PC, consulta :ref:`filezilla`. .. warning:: Si recibe el mensaje de error ``RuntimeError: Cannot determine SOC peripheral base address``, consulte :ref:`faq_soc` **Código** .. code-block:: python #!/usr/bin/env python3 from picamera2 import Picamera2, Preview import os # Obtener el nombre de usuario actual user = os.getlogin() # Obtener la ruta al directorio principal del usuario user_home = os.path.expanduser(f'~{user}') # Crear una instancia de Picamera2 camera = Picamera2() # Recuperar la configuración predeterminada de previsualización preview_config = camera.preview_configuration try: # Configurar tamaño y formato de previsualización preview_config.size = (800, 600) preview_config.format = 'XRGB8888' # Iniciar la previsualización de la cámara en modo QTGL camera.start_preview(Preview.QTGL) # Iniciar la cámara camera.start() # Capturar y guardar una foto en el directorio principal del usuario camera.capture_file(f'{user_home}/my_photo.jpg') except KeyboardInterrupt: # Detener la previsualización de la cámara si ocurre una interrupción de teclado (por ejemplo, Ctrl+C) camera.stop_preview() pass **Explicación del Código** #. Importa las clases ``Picamera2`` y ``Preview`` de la biblioteca picamera2, y el módulo ``os`` para interacciones con el sistema operativo. .. code-block:: python #!/usr/bin/env python3 from picamera2 import Picamera2, Preview import os #. Recupera el nombre de usuario actual y la ruta a su directorio principal. .. code-block:: python # Obtener el nombre de usuario actual user = os.getlogin() # Obtener la ruta al directorio principal del usuario user_home = os.path.expanduser(f'~{user}') #. Crea una instancia de la clase ``Picamera2`` y recupera la configuración predeterminada de previsualización. .. code-block:: python # Crear una instancia de Picamera2 camera = Picamera2() # Recuperar la configuración predeterminada de previsualización preview_config = camera.preview_configuration #. Configura el tamaño y formato de la previsualización de la cámara. El tamaño se establece en 800x600 píxeles y el formato en ``XRGB8888``. .. code-block:: python try: # Configurar tamaño y formato de previsualización preview_config.size = (800, 600) preview_config.format = 'XRGB8888' ... #. Inicia la previsualización de la cámara en modo QTGL y luego inicia la cámara. .. code-block:: python try: ... # Iniciar la previsualización de la cámara en modo QTGL camera.start_preview(Preview.QTGL) # Iniciar la cámara camera.start() ... #. Captura una imagen con la cámara, guardándola en ``~/``. .. code-block:: python try: ... # Capturar y guardar una foto en el directorio principal del usuario camera.capture_file(f'{user_home}/my_photo.jpg') .. note:: Puedes usar la función ``camera.capture()`` y un bucle ``for`` juntos para lograr una captura continua. Utiliza la función ``delay`` para ajustar el intervalo de tiempo entre las tomas. .. code-block:: python for i in 5: camera.capture(f'{user_home}/my_photo%s.jpg' % i) #. Este bloque de código maneja una interrupción de teclado (como Ctrl+C) deteniendo la previsualización de la cámara. La declaración ``pass`` se usa para manejar la excepción sin hacer nada más. .. code-block:: python except KeyboardInterrupt: # Detener la previsualización de la cámara si ocurre una interrupción de teclado (por ejemplo, Ctrl+C) camera.stop_preview() pass