Vamos a crear Time Lapses (vídeo a partir de muchas fotos tomadas durante un tiempo largo) con Python usando una Raspberry.

  • Usaremos un bot de Telegram como sistema de control y de comunicaciones
  • Capturaremos imágenes con la cámara controlando los parámetros para poder hacer fotos de día y de noche
  • Como no necesitamos mucho procesamiento utilizaremos una Rasperry Pi Zero W (el modelo más pequño) conectada vía wifi y no tendrá conectado ningún períférico, sólo la alimentación que vendrá de adaptador USB (también podemos alimentarlo desde los pines de GPIO )

Por ello vamos a instalar Raspberry Pi OS Lite en nuestra Raspberry Pi Zero W.

Si interesa este proyecto, hay muchos más así en el curso sobre Raspberry Pi https://cursoraspberrypi.es/

Montaje

Para conectar la cámara a la Rasperry Zero, necesitamos un cable especial que suele venir incluido con el kit.

Cable Camara Zero vs Normal

Lo conectamos de esta forma (ojo a la posición del cable )

Camara Raspi Zero

Y lo integramos en la caja con la tapa que tiene el hueco para la cámara.

Raspi Zero Caja

Que queda perfectamente integrada y muy compacta

Ahora sólo nos falta conectar la alimentación al usb marcado como «Power»

Puertos de conexión

Y nos queda un equipo muy, muy compacto

Alimantacion Raspi Zero
Vídeo: Montaje de una Raspberry Pi Zero W para realizar timeLapses

Vídeo: Montaje de una Raspberry Pi Zero W para realizar timeLapses

Instalación

Ahora vamos a instalar los módulos necesarios de python

sudo apt install python3-picamera
sudo apt install python3-pip

pip3 install python-telegram
pip3 install python-telegram-bot

Usaremos un código basado en los anteriores ejemplos al que le hemos añadido:

  • Medida de la temperatura de la CPU /temp
  • Medida del espacio en disco /df
  • Creamos un time lapse con el comando /TTiempoEntreImagenes, con /T0 se termina el time lapse
  • Podemos establecer un modo noche /night y día /day
  • Podemos tomar una foto con /foto
  • Recuperar la última foto con /last
  1. Descargamos el código del ejemplo RaspiZeroLapse
  2. Lo descomprimimos
  3. Ponemos el TOKEN que vamos a usar con este Bot en el fichero config.py
  4. Añadimos el chat_id de usario como ADMIN
  5. Cambiamos el directorio donde queremos guardar las imágenes
  6. Ejecutamos el bot con:
python3 timeLapseBot.py

Nos conectamos desde cualquier App de Telegram y lo probamos.

Puesta en marcha de un time lapse

Una vez que lo tenemos todo listo llega el momento de conseguir un buen enfoque del objetivo que queremos fotografiar

  • Si lo vamos a tener un tiempo largo, hay que conseguir que el sistema esté estable (cuidado con colocarlo en el borde la venana).
Montaje timelapse
Otro montaje timelapse
  • Normalmente fijo la cámara con gomas o similar para evitar movimientos debidos al viento. También uso una carcasa impresa en 3D para la cámara con unos imanes que me permite fijarlo fácilmente
  • Si el montaje es en el exterior hay que proteger a los equipos del sol y por supuesto de posibles lluvias.
  • A veces uso cables extralargos para la cámara, de esta manera puedo separar más de la Raspberry.
  • Una vez preparado el montaje, para ajustar el enfoque utilizo una tableta y con la app de Telegram, voy pidiéndole al bot que haga y envíe una imagen con /foto
  • Cuando tenemos el enfoque deseado programamos el tiempo entre imágenes con /Ttiempo. Para el crecimiento de plantas suelo poner 120 segundos, para las capturas de amaneceres o atardeceres 30 segundos.

Cómo recuperar las fotos

Desde el bot de telegram podemos recuperar las imágenes, pero una a una. Para descargar varias de golpe podemos usar el comando scp pensado para copiar ficheros entre equipos que están conectados por ssh.

Para copiar al directorio local todas las imágenes del día 7 podemos hacer:

scp pi@raspiLapse:~/proyectos/RaspiZeroLapse/code/images/image20200707-* .

Después de copiarlas habrá que borrarlas de la Raspberry

Cuidados

  • Cuidado con la alimentación, al usa una batería que daba poca potencia fallaba al encender/apagar la cámara.
  • Si vamos a usar sólo baterías hay que medir el tiempo que estas aguantan.
  • Se puede utilizar un panel solar para que recargue las baterías, pero tenemos que asegurarnos de que proporciona la energía necesaria 
  • Cuidado con llenar el alamecanamiento, debemos tener en cuenta el espacio libre, el tamaño de cada foto y sobre todo el número de imágenes que vamos a tomar.
  • Utilizar un almacenamiento externo (pendrive o similar) o una partición distinta para guardar las imágenes. Así si se llena no se impedirá el correcto funcionamiento del sistema.

Creación del vídeo

Ya vimos anteriormente cómo generar un vídeo a partir de nuestras imágenes. En los ejemplos que os muestro he usado este comando.

ffmpeg -framerate 30 -r 30 -pattern_type glob -i 'image*.jpg' -c:v libx264 ajo.mp4

También hay en el código un ejemplo de como generar gif a partir de las imágenes. En un futuro añadiré esa funcionalidad al bot.

Ejemplos de time lapse

Todos estos time lapses los he creado con este sistema:

Vídeo: TimeLapse de un atardecer de tormenta
Vídeo: Timelapse de una tarde de tormenta
Vídeo: TimeLapse de una tarde de verano con algunas nubes
Vídeo: TimeLapse del crecimiento de una planta de ajo
Vídeo: TimeLapse del crecimiento de una planta de ajo II
Vídeo: Time lapse del crecimiento de una planta de patata

Recursos

Este proyecto está inspirado por este otro creado por la Fundación Raspberry

Creando Time Lapse ⏳ con Raspberry Pi 🍓 y Python 🐍
Etiquetado en: