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.
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:
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).
Una vez le demos a Conectar, pulsamos el icono de la terminal que está en la esquina izquierda.
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