¡Empezamos con la cámara en Raspberry! Gracias a ella es posible, entre otras cosas, hacer fotografías, transmitir la imagen por la red e incluso detectar movimiento. En el caso de los principiantes, muchos se preguntan como llevar a cabo esto ya que les puede parecer un nivel más complejo. Pero en este apartado vas a descubrir que no lo es.

Se pueden conectar muchas cámaras diferentes al RPi. Nos enfocamos en usar una cámara raspberry dedicada, es decir, Raspberry Pi Camera HD v2, la más extendida.

Primero, unas palabras sobre los parámetros técnicos de la cámara:

 

·         Resolución máxima: 8 Mpx (3280x2464),

·         Modos de video: 1080p30 (Full-HD), 720p60, 640x480p90 (VGA),

·         Interfaz: CSI,

·         Peso: 3 g,

·         Dimensiones: 25 x 24 x 9 mm.

 

 

El módulo Raspberry Pi Camera HD utiliza CSI (Interfaz en Serie de Cámara), que está dedicado en especial para cámaras. Gracias a esto, todo el conjunto no carga el bus USB. Además, esta interfaz es compatible con un acelerador de gráficos (GPU) integrado en la Raspberry Pi.

 

 

10.1. Conexión de la cámara

 

Empezamos por conectar la cámara, que se limita solo a insertar la cinta:

 

·         En la Raspberry Pi, enchufe la cinta en el conector descrito como CAMERA. La cinta debe mirar las clavijas plateadas hacia el conector HDMI.

·         Coloque la cinta en la cámara de tal manera que los contactos plateados se dirijan hacia el objetivo.

Presta atención únicamente a la posición de los contactos plateados indicados anteriormente, no al lado de la cinta donde este el texto. Cuando conectes la cinta, haz lo siguiente: levanta el bloqueo del conector (una especie de pletina), inserta la cinta y presiona hacia abajo el bloqueo del conector. No tienes que preocuparte por la posición de la cámara, la imagen se puede rotar mediante programación.

 

10.2. Hacer fotografías

 

Comenzamos con la función básica, que es tomar fotografías. Lo primero de todo, como siempre, iremos al menú de configuración y activaremos la cámara.

Para capturar las fotos, usaremos el programa raspistill. El uso básico del programa de captura de imágenes es sencillo. Simplemente escribiendo el comando:

raspistill -o test.jpg

 

En lugar de test.jpg podemos dar cualquier nombre de archivo. La foto se tomará exactamente 5 segundos después de dar el comando anterior. El archivo test.jpg se guardará en el directorio desde el que ejecutamos el programa raspistill.

 

Si tenemos un monitor conectado o usamos VNC para previsualizar la imagen, basta con buscar la foto y hacer clic dos veces en ella para ver la foto.

 

Si las fotos están borrosas, podemos cambiar el enfoque girando la lente de la cámara. La operación debe realizarse muy suavemente a mano o con una herramienta pequeña. ¡Tenga cuidado al ajustar, ya que es fácil rayar la lente!

10.3. Comandos

 

Algunos comandos útiles que vale la pena conocer son:

 

·         Desactivar vista previa. Deshabilite la vista previa no deseada agregando la opción -n :

raspistill -n -o test.jpg

 

·         Cambiar el temporizador de captura. Se puede cambiar con la opción -t seguido del tiempo en milisegundos:

raspistill -n -o test.jpg -t 100

                Nota: para evitar problemas de calidad y demás se recomienda usar como mínimo 100ms.

 

·         Rotación de imagen. Basta con utilizar el parámetro -rot , que gira la imagen en el ángulo seleccionado, que será un múltiplo de 90 °:

raspistill -n -o test.jpg -t 100 -rot 180

 

·         Reflexión vertical u horizontal. Tenemos los comandos para reflexión horizontal ( -hf ) y verticalmente ( -vf ):

raspistill -n -o test.jpg -t 100 -hf

raspistill -n -o test.jpg -t 100 -vf

 

·         Cambiar la resolución. No siempre nos interesa la resolución más alta, podemos ahorrar mucho espacio reduciendo el tamaño de la imagen descargada. Establecemos el ancho con la opción -w y el alto con -h . Una foto con resolución VGA estándar sería:

               raspistill -n -o test_VGA.jpg -t 100 -w 640 -h 480

·         Añadir fecha y hora al archivo. El programa raspistill se puede ejecutar automáticamente, por ejemplo, periódicamente o cuando se detecta un evento específico. En ese caso, sería conveniente poder guardar varios archivos en lugar de sobrescribir el mismo test.jpg cada vez . El programa raspistill tiene dos opciones para usar la hora actual en el nombre del archivo.

 

La opción -dt  agrega la fecha y hora actuales al nombre del archivo. Mientras que el parámetro -ts  agrega el llamado marca de tiempo, que es el número de segundos desde el 1 de enero de 1970 (este es el método tradicional de representación de tiempo de Unix). Para utilizar estas posibilidades, en el nombre del archivo debemos insertar el marcador % d , que será reemplazado por la fecha en que se tomó la foto.

Podemos emitir los siguientes dos comandos para la prueba en el día 20/10/2020:

 

raspistill -n -o test_%d.jpg -t 100 -dt   #Se guardará como test_10202041040.jpg

raspistill -n -o test_%d.jpg -t 100 -ts   #Se guardará como test_1603196029.jpg

 

·         Otros ajustes. Existen múltiples comandos más. La información más importante se puede encontrar en la descripción que aparece tras llamar al comando raspistill sin ningún parámetro más, entonces aparecerá toda la información y comandos en un listado. Con los atributos que se describen allí, también puede cambiar parámetros como ISO, balance de blancos, brillo y contraste.

 

10.4. Transmisión de imágenes con Motion

 

 

Otra aplicación igualmente interesante para la cámara Raspberry Pi es el paquete Motion, que permite, entre otras cosas, transmitir la imagen a través de la red. Además, también se puede utilizar para rastrear el movimiento de objetos.

Empezamos instalando el programa introduciendo el comando:

sudo apt install motion

 

La versión instalada del paquete Motion por defecto no tiene soporte incorporado para nuestra cámara, por lo que necesitamos instalar el controlador apropiado ahora: Video4Linux (V4L) . Para ello, emitimos el siguiente comando, señalando que el penúltimo carácter es una "L" minúscula y no el número "1":

sudo modprobe bcm2835-v4l2

 

Ahora aparecerá un nuevo dispositivo en el directorio / dev , que corresponderá a la webcam: / dev / video0 .

Esta es la interfaz estándar utilizada por las cámaras en Linux.

El paquete Motion instalado tiene grandes posibilidades y muchas opciones disponibles. El archivo de configuración predeterminado es /etc/motion/motion.conf . El acceso al directorio / etc requiere derechos de administrador, así que edite el archivo con el comando:

sudo nano /etc/motion/motion.conf

 

Después de ejecutar el archivo, debemos realizar algunos cambios importantes. Primero, buscamos la línea donde está la opción stream_localhost. Por defecto está encendido (on), lo cambiamos a apagado (off).

Puede usar el atajo CTRL + W para buscar texto en nano.

Guardamos el archivo y lo dejamos. Luego ejecutamos el paquete Motion con el comando:

                sudo motion

 

Cuando se inicia el programa, ejecutamos el navegador web en nuestro PC. En la barra de direcciones, ingresa la dirección IP con el puerto 8081 (por ejemplo, http://192.168.0.250:8081/). Después de un tiempo, deberíamos ver una pequeña transmisión de nuestra cámara web (1 FPS).

Presiona CTRL + C para terminar el programa de la consola.

 

Para aumentar los FPS (Frames Per Second/fotogramas por segundo) podemos modificar las siguientes líneas que por defecto están establecidos en 20:

·         framerate: ratio de frames

·         stream_maxrate: máximo ratio de frames en stream

 

Para aumentar la resolución:

·         width: ancho (lo configuramos en 640),

·         high: altura (lo configuramos en 480).

 

10.5. Detección de movimiento en RPi

 

Como podemos ver, convertimos la Raspberry Pi en una webcam. Vale la pena recordar que el paquete Motion supera con creces las capacidades de las cámaras típicas. Te permite detectar movimiento, generar eventos después de detectar un intruso, tomar fotos o videos automáticamente, notificar eventos, etc.

 

Puedes encontrar más información sobre el programa en el sitio web del proyecto: https://motion-project.github.io/

 

Para esta prueba, puedes ejecutar, por ejemplo, la opción responsable del seguimiento de movimiento. Para ello, basta con habilitar la opción en el archivo de configuración, que se llama  locate_motion_mode (cambiamos de apagado(off) a encendido(on)). Los elementos en movimiento ahora se marcarán con un rectángulo en la imagen transmitida. Para que el elemento se delinee con un rectángulo rojo, locate_motion_style también debe cambiarse a redbox .