Para el proyecto de hoy vamos a utilizar una cámara. Podemos utilizar la cámara oficial de Raspberry Pi, tanto la version 1.0 como la 2.0. O podemos utilizar una webcam por usb de cualquier marca.

Resumen del artículo

Instalar el sistema operativo

En mi caso voy a utilizar Raspbian que es la distribución Debian adaptada para Raspberry pero se podría utilizar otro sistema operativo. El procedimiento es muy sencillo. Primero descargamos la ISO de la página oficial.
Elegimos la versión que queramos. Yo voy a descargar la que no tiene GUI, versión lite con solo terminal, pero el procedimiento es igual en todas las versiones y distribuciones.
Una vez descargada la ISO, descargamos e instalamos el programa Etcher. Una vez lo tengamos tan solo tenemos que seleccionar la ISO y la tarjeta SD. Si la tarjeta SD la hemos usado previamente debemos formatearla, por ejemplo con SDFormatter.

Instalar la cámara Raspberry Pi

Si la cámara es por USB no tiene instalación. Simplemente la conectas al puerto USB y ya está.
Si es una cámara oficial o no oficial de Raspberry Pi la instalación es muy sencilla. En la placa tenemos una parta que pone CAMERA. Levantamos la pestaña e introducimos el cable plano. Lo introducimos dejando los pines del cable hacia la parte plana de la entrada donde pone CAMERA. Luego presionamos par volver a dejar bien cerrada la pestaña y listo.
Configuración cámara Raspberry Pi + Vídeo en Directo 0 Configuración cámara Raspberry Pi + Vídeo en Directo 1

Instalar el servidor WEBCAM

Lo que vamos a hacer es poder acceder desde cualquier dispositivo de nuestra red (ordenador de mesa, móvil, etc…) a la IP de nuestra Raspberry Pi y poder ver el vídeo en directo.
Para ello accedemos a la terminal. Yo recomiendo hacerlo desde nuestro PC. Una vez conectada la Raspberry Pi a nuestra Red, ya sea por cable o por wifi, escribimos en la terminal:

sudo raspi-config

En ese menú debemos activar la cámara y podemos activar el SSH para conectarnos desde nuestro PC con el programa WinSCP o Putty. Ambas opciones están en interfaces:
Configuración cámara Raspberry Pi + Vídeo en Directo 2Configuración cámara Raspberry Pi + Vídeo en Directo 3
Nos pedirá reiniciar. Una vez estemos dentro de nuevo podemos ver la IP escribiendo:

ip addr show

Descargamos el programa WinSCP en nuestro PC. Su uso es muy sencillo y al tener interfaz gráfica podemos visualizar los archivos de forma más cómoda. Tan solo tenemos que abrirlo y poner la IP que nos ha dado el anterior comando, el usuario (que por defecto es: pi) y la contraseña (que por defecto es: raspberry).
Configuración cámara Raspberry Pi + Vídeo en Directo 4
Una vez le demos a Conectar, pulsamos el icono de la terminal que está en la esquina izquierda. Configuración cámara Raspberry Pi + Vídeo en Directo 5
Los siguientes comandos los podemos copiar y pegar en la terminal si usamos WinSCP o Putty. El primero es para actualizar la Raspberry Pi.

sudo apt-get update && sudo apt-get upgrade -y

Podemos hacer una prueba para comprobar que la cámara que instalamos anteriormente funciona de manera normal. Con este comando nos hará una fotografía y se guardará en la carpeta donde estemos. Podemos descargarla y verla en WinSCP.
Como nota este comando solo sirve para los módulos (cámaras oficial y no oficial de Raspberry), no para USB. Pero solo es para comprobar que funciona la cámara, podemos continuar si es USB.

raspistill -o FotoPrueba.jpg

Ahora ya tendríamos lista y funcional nuestra cámara en la Raspberry Pi. Como queremos hacer un servidor para poder ver el vídeo en directo vamos a instalar los paquetes de Motion. Este nos va a permitir grabar y emitir el vídeo en muchos tipos de cámaras diferentes.

sudo apt-get install motion -y
sudo modprobe bcm2835-v4l2
sudo sed -i '$a bcm2835-v4l2' /etc/modules

El siguiente comando es para actualizar los valores del archivo /etc/motion/motion.conf automáticamente. Puede fallar. Podemos comprobar que todo esta correcto o modificarlo manualmente escribiendo después de ejecutarlo sudo nano /etc/motion/motion.conf.
Es muy importante que todo esté correcto y aunque esta forma es la más rápida (copiar y pegar) recomiendo que después compruebes el archivo para que todos los valores estén correctamente.

sudo sed -i 's/daemon off/daemon on/g' /etc/motion/motion.conf && sudo sed -i 's/stream_localhost on/stream_localhost off/g' /etc/motion/motion.conf && sudo sed -i 's/output_pictures on/output_pictures off/g' /etc/motion/motion.conf && sudo sed -i 's/ffmpeg_output_movies on/ffmpeg_output_movies off/g' /etc/motion/motion.conf && sudo sed -i 's/framerate 2/framerate 100/g' /etc/motion/motion.conf && sudo sed -i 's/start_motion_daemon=no/start_motion_daemon=yes/g' /etc/default/motion && sudo sed -i 's/width 320/width 640/g' /etc/motion/motion.conf && sudo sed -i 's/height 240/height 480/g' /etc/motion/motion.conf

Lo que va a modificar son los siguientes valores:

  • daemon: Este valor lo podremos en on. Al ponerlo en on comenzará a funcionar cada vez que iniciemos el sistema y no tendremos que activarlo de nuevo.
  • start_motion_daemon: Este valor lo pondremos en yes. Y lo cambiamos en el archivo /etc/default/motion en vez del resto que están en /etc/motion/motion.conf.
  • stream_localhost: Este valor lo podremos en off. Al ponerlo en off podremos acceder desde otros ordenadores de nuestra red al vídeo en directo. Si lo dejamos en on solo podríamos acceder desde esa máquina, desde la propia Raspberry pi.
  • output_pictures: Este valor lo podremos en off. Al ponerlo en off evitamos que se congele la imagen.
  • ffmpeg_output_movies: Este valor lo podremos en off. Al ponerlo en off evitamos que se congele el vídeo.
  • framerate: Este valor lo podremos en 100. Al ponerlo en 100 tendremos la máxima calidad de vídeo. Podemos regularlo desde 2 a 100 y variar la calidad.
  • width: El tamaño de vídeo, con ese comando cambiamos el por defecto de 320×240 a HD 640×480
  • height: El tamaño de vídeo, con ese comando cambiamos el por defecto de 320×240 a HD 640×480

También el vídeo lo podemos poner a FULL HD 1280×720 pero no todas los módulos ni las cámaras soportan este tipo. Podemos mirarlo en las características tecnicas de cada cámara.
Si preferimos que la resolución sea en FULL HD:

sudo sed -i 's/width 640/width 1280/g' /etc/motion/motion.conf && sudo sed -i 's/height 480/height 720/g' /etc/motion/motion.conf

Recordad comprobar el archivo de configuracion una vez hemos realizado los anteriores comandos.

sudo nano /etc/motion/motion.conf

Continuamos. Ahora vamos a activar Motion. Podemos cambiar en cualquier momento el start por stop (para pararlo) o por restart (para reiniciar) el servicio.

sudo service motion start
sudo service motion restart

Para finalizar, es posible que necesite un reinicio general. Lo hacemos con:

sudo reboot

Y ya tendríamos nuestro servidor de cámara web con una Raspberry Pi.
Podemos acceder desde cualquiera de los dispositivos de nuestra red, por ejemplo un teléfono o un ordenador. Escribimos la IP de la Raspberry Pi y el puerto 8081 en cualquier navegador. Por ejemplo:
192.168.1.123:8081

Para mayor seguridad, una contraseña

Poner contraseña. Para hacerlo seguro y que nadie pueda entrar. Me parece algo básico el tener una contraseña aunque solo lo usemos desde nuestra red. Más aun si abrimos los puertos y lo utilizamos desde cualquier parte en Internet.
Para activar la contraseña en Motion vamos a modificar de nuevo el archivo de configuración:

  • ; netcam_userpass value: Por defecto esta desactivado. Quitamos el ; para activarlo. Cambiamos el value con la contraseña.
sudo nano /etc/motion/motion.conf

Girar el Vídeo Stream

Esto lo vamos hacer cambiando en el archivo de configuración de Motion el valor:

  • rotate: Por defecto esta en 0. Nosotros lo pondremos en 180 o en el grado que queramos.
sudo nano /etc/motion/motion.conf