Configuración de Cámara en Raspberry Pi 4

Configuración de cámara de forma inalámbrica

Autor: Eduardo Padrón

Una de las aplicaciones más utilizadas en Raspberry es el uso de cámaras, para utilizar Tensorflow y darle la capacidad de detectar objetos. Ahora que la Raspberry Pi es lo suficientemente rápida para realizar el aprendizaje automático, agregar estas funciones en proyectos es más sencillo.

Esta guía le mostrará los pasos para aprender a conectar el módulo de cámara Raspberry Pi, tome fotografías, grabe videos y aplique efectos de imagen.

Es importante conocer bien el módulo de cámara antes de comenzar a crear nuestras aplicaciones.

Sin mas que decir comencemos.

1. Material necesario

Existen múltiples opciones pero en esta guía te daré dos opciones para que elijas, por parte de Raspberry Pi existen dos módulos de cámara hablaré de ellos más adelante.

  • Laptop
  • Raspberry Pi 4
  • Fuente de alimentación (De preferencia adquirir junto con tu Raspberry la fuente oficial para no tener ningún problema, si es que no tienes mucha experiencia USB-C Power Supply.
  • Smartphone con función Mobile Hotspot
  • Tarjeta Micro SD
  • Raspberry Pi High Quality Camera (es la que usare en esta guía, pero puedes utilizar la Raspberry Pi Camera Board v2 es la versión anterior y más económica.)
  • 6mm 3MP Wide Angle Lens for Raspberry Pi HQ Camera — 3MP (el modulo HQ camera, nos permite utilizar lentes, este elemento es opcional en caso de utilizar la segunda opción de cámara.
  • Flex Cable for Raspberry Pi Camera (suele venir incluido en la compra de los módulos Raspberry Pi Camera).
  • Trípode de cámara (Nota: solo en caso de usar el módulo HQ y que lo veas necesario). la ventaja del módulo HQ es que cuenta con una montura para trípodes con standard 1/4”-20, que es con el que cuentan la mayoría de los trípodes actuales, te dejo un link de una opción de compra en Amazon.

Opcional:

  • Raspberry Pi HQ Camera Case (En caso de que cuentes con una impresora 3D o de hacer impresiones 3D te dejo un link para que puedas imprimir una carcasa en forma de cámara, mas adelante te dejo la imagen de como se vería).
  • Si utilizas el Case, necesitarás tornillos a la medida M2.5, necesitaremos de 12mm y 8mm de largo, aunque para aprovechar puedes comprar algunos de 10mm y 5mm pueden ser útiles para otros proyectos, los puedes conseguir en Amazon o tiendas especializadas en electrónica.
Image by Eduardo Padron

En caso hicieras uso del modelo 3D aquí tienes una imagen de cómo se vería, esta increíble no lo crees?

Image by Adafruit 3D Case Raspberry Pi

Ahora hablaremos de los dos módulos que mencione.

1.1 HQ Camera module

Este módulo es el más reciente accesorio de cámara Raspberry Pi. Ofrece una resolución más alta (12 megapíxeles, en comparación con la anterior de 8 megapíxeles) y sensibilidad (aproximadamente un 50% más de área por píxel para rendimiento mejorado en condiciones de poca luz) que el módulo de cámara v2 existente, y está diseñado para funcionar con lentes intercambiables en montura C y CS. Se pueden utilizar otros lentes utilizando adaptadores.

Los lentes de 6 mm con montura CS y 16 mm con montura C son ejemplos de todos los compatibles que existen. La cámara de alta calidad ofrece una alternativa al módulo de cámara v2.

Para aplicaciones industriales y de consumo, incluidas cámaras de seguridad, que requieren los más altos niveles de fidelidad visual y/o integración con óptica especializada. Es compatible con todos los modelos de Raspberry Pi, la última versión de software.

Image by Raspberry Pi
Image by Raspberry Pi

1.2 Raspberry Pi Camera Board v2 (8 Mp)

Este módulo de cámara de 8 Mp es capaz de capturar video de 1080 px e imágenes, se puede conectar a todos los modelos de Raspberry Pi. Listo para conectar y usar, muy adecuado para fotografiar por lapsos, grabar video o para usarlo en aplicaciones de seguridad y en detección de movimientos. Sólo hay que conectar el cable incluido al puerto CSI de la Raspberry Pi.

El módulo es pequeño mide 25 mm x 23 mm x 9 mm y tiene una peso de 3 gr, haciéndola perfecta para aplicaciones móviles u otras en donde el peso es un factor muy importante.

El sensor tiene una resolución de 8 megapíxeles y tiene un lente de enfoque. En cuanto a las imágenes, la cámara es capaz de tomar imágenes estáticas hasta de 3280 x 2464 pixeles y videos de 1830p30.

Image by Raspberry Pi

2. Configuración de la cámara

2.1 Conexión física

Todos los modelos actuales de Raspberry Pi tienen un puerto para conectar el módulo de la cámara.

Image by Raspberry Pi

Nota: Si desea utilizar una Raspberry Pi Zero, necesita un cable del módulo de la cámara que se ajuste al puerto del módulo de la cámara más pequeño de la Raspberry Pi Zero.

Conecte el módulo de la cámara.

Asegúrese de que su Raspberry Pi esté apagada.

1. Localice el puerto del módulo de la cámara

2. Tire suavemente hacia arriba de los bordes del clip de plástico del puerto

3. Inserte el cable plano del módulo de la cámara (Nota: asegúrese de que el cable esté en la dirección correcta. El lado azul del cable va mirando hacia el conector jack y de los puertos USB)

4. Vuelva a colocar el clip de plástico en su lugar.

Gig by Raspbery Pi
Image by Raspberry Pi

Conectar el modulo HQ en mi caso se vería de la siguiente forma:

Image by Eduardo Padron

Yo opté por solamente utilizar el soporte de la cámara del modelo 3D con la Raspberry por lo que te mostraré un poco de cómo utilice los tornillos y el resultado final.

Image by Eduardo Padron

Ahora solo faltaría conectar el lente que en esta ocasión utilicé el de 6mm, puedes saltarte esta parte y pasar a 2.2 si es que utilizaste la opción V2 de 8 Mp.

Image by Raspberry Pi

Tenemos que quitar la tapa anti-polvo para el lente de 6mm y el adaptador C-CS entonces nos quedaría de la siguiente forma:

Image by Raspberry Pi

Los lentes vienen con dos tapas una del lado del lente y otra por la entrada que conecta al módulo.

2.1.1 Colocación del lente

La lente de 6 mm tiene montura CS, por lo que no necesita el anillo adaptador C-CS. No se enfocará correctamente si el adaptador está instalado, así que, si es necesario, retíralo.

Luego, gire la lente en el sentido de las agujas del reloj hasta el final para dejarlo conectado con el anillo de ajuste del enfoque posterior. No debe apretarse con mucha fuerza porque puedes dañar el lente o el módulo, solamente que quede firme.

Image by Raspberry Pi

2.1.2 Ajuste de enfoque anillo posterior y tornillo de bloqueo

El anillo de ajuste del enfoque posterior debe estar atornillado completamente para la distancia focal posterior más corta posible. Utilice el tornillo de bloqueo del enfoque posterior para

asegurarse de que no se mueva de esta posición al ajustar la apertura o el enfoque (Al comprar el modulo HQ incluye un atornillador de la medida exacta para poder manipular el tornillo de bloqueo).

Image by Raspberry Pi

Ya listo e instalado nuestro lente se verá de la siguiente forma.

Image by Eduardo Padron

Una vez ya instalado el lente y conectado el módulo a nuestra Raspberry podemos seguir con la configuración al encender e ingresar por VNC.

2.2 Configuración de Raspberry Pi por VNC.

  1. Enciende tu Raspberry Pi.
  2. Ingresa por VNC desde tu ordenador a tu Raspberry.
  3. Vaya al menú principal y abra Raspberry Pi Configuration.
Screenshot by Eduardo Padron

Seleccione la pestaña Interfaces y asegúrese de que la cámara esté habilitada (enabled).

Screenshot by Eduardo Padron

Reinicia tu Raspberry.

Screenshot by Eduardo Padron

Una vez reiniciada, pasaremos a hacer unos cambios en VNC dentro del escritorio de Raspberry, al ejecutar algunos comandos nos mostrará la vista previa de lo que va a capturar en VNC no es posible a menos de que hagamos estos cambios. Lo primero es dirigirnos al icono de VNC y dar clic.

Screenshot by Eduardo Padron

Nos abrirá la siguiente ventana, donde encontraremos en la parte derecha un recuadro daremos clic.

Screenshot by Eduardo Padron

Daremos clic en “Options”.

Screenshot by Eduardo Padron

Nos iremos a la pestaña “Troubleshooting”.

Screenshot by Eduardo Padron

Daremos clic en la casilla “Enable direct capture mode” y después daremos clic en Apply . Esto nos permitirá ver la vista previa de lo que está capturando nuestro modulo cámara. Se irá a pantalla negra unos segundos y cuando recupere la imagen estará listo, no es necesario pero puedes reiniciar la Raspberry para comenzar con el siguiente paso.

Screenshot by Eduardo Padron

Por el momento la cámara está desenfocada así que necesitamos ejecutar un comando para poder tener acceso a la vista. Así que vamos a abrir la terminal de Raspberry.

Screenshot by Eduardo Padron

raspistill es una herramienta de comandos para capturar imágenes de la cámara. Para verificar que la cámara está instalada correctamente y usar la cámara sólo como un visor, sin guardar una foto, ingresa este comando:

raspistill -t 0

Nos dará de seguro una imagen borrosa en el caso del módulo HQ para el modulo V2 no tendrá mayor problema.

Screenshot by Eduardo Padron

Ahora veremos los pasos para enfocar el modulo con su lente.

Screenshot by Eduardo Padron

2.2.1 Apertura

Para arreglar esto hay que ajustar la apertura, mantenga la cámara con el objetivo en dirección opuesta a usted.

Gire el anillo del medio mientras sostiene el anillo exterior, más alejado de la cámara, estable. Turno en el sentido de las agujas del reloj para cerrar la apertura y reducir brillo de la imagen. Gire en sentido antihorario para abrir la apertura. Una vez que estés feliz con la luz nivel, apriete el tornillo en el lateral de la lente para bloquear la apertura.

Image by Raspberry Pi

2.2.2 Enfoque

Primero, bloquee el anillo de enfoque interno, etiquetado

“NEAR FAR”, en posición apretando su tornillo. Ahora sostenga la cámara con la lente de espaldas a ti. Sostenga los dos exteriores anillos de la lente y gírese en el sentido de las agujas del reloj

hasta que la imagen esté enfocada, tomará cuatro o cinco vueltas enteras. Para ajustar el enfoque, gire los dos anillos exteriores en el sentido de las agujas del reloj para enfocar un objeto cercano. Gire en sentido antihorario para centrarse en un objeto distante.Lo mas seguro es que necesitarás ajustar la apertura nuevamente después de esto cada que quites y pongas el lente.

Image by Raspberry Pi

Después de enfocar, tendremos que cerrar la ventana, tal vez no podamos por que la imagen es muy grande y no aparece el icono de cerrar, en ese caso tendremos que acceder por SSH y usar el comando:

sudo reboot

Para poder acceder de nuevo por VNC.

2.2.3 Prueba imagen.jpg

Ahora deberías ver una imagen clara y podrás tomar una fotografía de prueba ingresando el comando:

raspistill -o test.jpg

Cuando presione ENTER, aparecerá una imagen de vista previa en vivo, y después de un período predeterminado de cinco segundos, la cámara capturará una única imagen fija. Esto se guardará en su carpeta de inicio y llamado test.jpg.

Screenshot by Eduardo Padron

Así se ve la imagen que tomé con este comando:

Image by Eduardo Padron

2.2.4 Prueba video

Para grabar videos, raspivid es lo que necesitas. Pruébalo con este comando de Terminal:

-t 10000 es el tiempo que va a estar grabando video, 10000 milisegundos serían 10 segundos de grabación. h264 es el formato de video para reproducir en vlc, reproductor que incluye el Raspberry Pi OS, en caso de que quieras cambiar el formato por MP4 que es un formato más común y amigable para edición, al final te dejare algunos comandos y ligas para esto.

raspivid -t 10000 -o testvideo.h264
Screenshot by Eduardo Padron

Podremos ver la vista previa del archivo y después en la carpeta de Raspberry Pi encontraremos el archivo para poder reproducirlo.

Screenshot by Eduardo Padron

3. Controlar el módulo de la cámara con código Python

3.1 Vista previa

La biblioteca Python picamera le permite controlar su módulo de cámara y crear proyectos increíbles.

Abra un editor de Python 3, como Thonny Python IDE o aprovechando el tutorial anterior [VS Code en Raspberry Pi](https://) podemos usar el VS Code, crearemos una carpeta en el escritorio llamada camera o cámara, daremos clic derecho para abrir las opciones, seleccionaremos “Open current folder in terminal”, para abrir directamente el folder y la terminal, también puedes hacer esto en la terminal con el comando cd para ubicarnos en la carpeta camera.

Una vez ubicados en dentro de la terminal en la carpeta utilizaremos el comando:

code .

Con esto nos abrirá directamente VS Code en la carpeta que vamos a trabajar

Screenshot by Eduardo Padron

Abra un archivo nuevo y guárdelo como camera.py.

Nota: es importante que nunca guarde el archivo como picamera.py

En VS code podemos encontrar el icono de crear nuevo archivo.

Screenshot by Eduardo Padron

Ahora daremos clic en “CTRL + S” para guardar y nos aparecerá la siguiente ventana. Ingresamos el nombre de nuestro archivo para poder ingresar el código.

Screenshot by Eduardo Padron

Antes de ingresar el código debemos asegurarnos de tener instalada la herramienta de Python para VS Code. Verifique con la imagen que tiene instalada la que utilizaremos.

Screenshot by Eduardo Padron

Ingrese el siguiente código que nos permitirá hacer la misma función de darnos una imagen previa para verificar que nuestro lente está enfocado si ya hiciste este paso y no has desconectado la cámara puedes omitir este paso y pasar al siguiente código:

Code by Eduardo Padron
Screenshot by Eduardo Padron

Usamos “CRTL + S” para guardar y ahora abriremos una terminal en VS Code para este proyecto.

Screenshot by Eduardo Padron

Ahora podremos ver la terminal en la parte inferior y solo necesitamos correr las líneas de código con el botón que tiene el VS Code en la parte superior derecha. También puedes hacer esto desde la terminal de la forma tradicional y utilizar el comando:

sudo python3 camera.py
Screenshot by Eduardo Padron

Podrás ver en la parte inferior la ejecución del comando.

Screenshot by Eduardo Padron

Al ejecutarse abrirá una ventana muy grande que cerrará a los 5 segundos cómo tenemos definido en sleep(5), tenemos que definir un tiempo si no se mantendrá abierta la ventana como en raspistill -t 0entonces tendríamos que usar el SSH para ingresar el comando sudo reboot para ingresar nuevamente y seguir con el siguiente código.

3.2 Fotografía

Ahora para tomar algunas fotografías puede crear un segundo archivo en mi caso lo llame cameratake.py, modifique su código para agregar una línea camera.capture ():

Code by Eduardo Padron

Nota: es importante usar un sleep de al menos dos segundos antes de capturar una imagen, porque esto le da tiempo al sensor de la cámara para detectar los niveles de luz.

Screenshot by Eduardo Padron

Debería ver la vista previa de la cámara abierta durante cinco segundos y luego se debe capturar una imagen fija. Mientras se toma la imagen, puede ver la vista previa ajustarse brevemente a una resolución diferente.

Su nueva imagen debe guardarse en el escritorio.

Screenshot by Eduardo Padron

Imagen tomada por el código:

Image by Eduardo Padron

3.3 Video

¡Ahora grabe un video!

Modifique su código para eliminar capture() y en su lugar agregue start_recording() y stop_recording() para comenzar y detener la grabación. Su código debería verse así ahora:

Code by Eduardo Padron

Ejecute el código. Su Raspberry Pi debería abrir una vista previa, grabar 5 segundos de video y luego cerrar la vista previa.

Screenshot by Eduardo Padron
Screenshot by Eduardo Padron

4. Extras

4.1 Formato de video MP4

Raspberry Pi captura video como un formato de video H264 sin procesar. Muchos reproductores multimedia se negarán a reproducirlo, o lo reproducirán a una velocidad incorrecta, a menos que esté “envuelto” en un formato contenedor adecuado como MP4. La forma más fácil de obtener un archivo MP4 con el comando raspivid es usando MP4Box.

Instale MP4Box con este comando:

sudo apt install -y gpac

Capture su video sin procesar con raspivid desde la terminal y envuélvalo en un contenedor MP4 como este:

# Capture 30 segundos de video sin procesar a 640x480 y una tasa de bits de 150kB/s en un archivo pivideo.h264:raspivid -t 30000 -w 640 -h 480 -fps 25 -b 1200000 -p 0,0,640,480 -o pivideo.h264# Envuelva el video sin procesar con un contenedor MP4:MP4Box -add pivideo.h264 pivideo.mp4# Elimina el archivo sin procesar de origen, dejando que se reproduzca el archivo pivideo.mp4 restanterm pivideo.h264

Alternativamente, envuelva el formato MP4 alrededor de su salida raspivid existente, con:

MP4Box -add video.h264 video.mp4

Con esto llegamos al fin de esta guía puedes practicar haciendo un código en Python para dejar tu video en formato MP4 poniendo en practica los conocimientos adquiridos, para revisar mas sobre el formato MP4 en Raspberry visita raspivid.

Puedes aprovechar la guía de Git y VS Code para subir estos códigos a tu Github.

Sí quieres saber mas sobre Raspberry Pi y el uso de la cámara visita Camera Raspberry Pi.

Visita mi repositorio en Github.

Hydraulic Engineer / Hardware and Software Developer. Science, technology and research enthusiast , development of IoT projects.

Hydraulic Engineer / Hardware and Software Developer. Science, technology and research enthusiast , development of IoT projects.