Tutorial como criar câmera de time lapse no Raspberry Pi

Objetivos

Configurar o Raspberry Pi para funcionar como uma câmera de time lapse.

Neste exemplo utilizei a câmera module v2, mas também é funcional com a versão v1 e câmeras USB compatíveis. Outras versões do Raspberry Pi também são funcionais, neste teste optei pela versão Zero W por ser mais compacta e o case já permitir o acoplamento do módulo da câmera.

Raspberry Pi Zero W - Configurado como Câmera de Time Lapse

O que é um time lapse?

Neste contexto de utilizar o Raspberry Pi com uma câmera fotográfica, o time lapse é o processo de fotografar o mesmo local em janelas de tempo pré determinadas. Em seguida, é possível juntar estas imagens e formar um vídeo.

O efeito do time lapse é muito interessante, caso acople a câmera para captar uma paisagem, o vídeo gerado mostra evoluções ao longo do tempo. Existem vários vídeos interessantes de time lapse mostrando a evolução de uma paisagem diante as estações do ano. O time lapse também é utilizado para monitorar obras da construção civil e mostrar sua evolução. Na agricultura também pode ser utilizado acompanhando o crescimento da lavoura. O efeito é sempre o mesmo, captar toda a mudança que pode ter levado meses, em apenas alguns minutos.

Requisitos para criar câmera de time lapse com o Raspberry Pi

Raspberry Pi Zero W - Configurado como Câmera de Time Lapse e com suporte de energia por powerbank

Para seguir este tutorial, é necessário que tenha um Raspberry Pi e também um módulo de câmera fotográfica compatível. Lembrando que o Raspberry possui 3 módulos de câmeras oficiais o v1, v2 e v3 (além da HQ camera) disponíveis para serem adquiridos.

Também é possível utilizar câmeras, webcams e módulos de outros fabricantes (arducam, por exemplo).

Mas para seguir este passo a passo, estes módulos de câmera precisam ser compatíveis com o Raspberry Pi e com a biblioteca do raspistill.

Tutorial passo a passo para configurar um raspberry pi como uma câmera fotográfica de time lapse

Um resumo para configurar um raspberry como camera de time lapse:

  1. Instalar câmera no Raspberry
  2. Se conectar no Raspberry Pi: com teclado e monitor ou por SSH
  3. Executar o raspi-config e habilitar o módulo de câmera
  4. Criar um shell scrip configurado com o raspistill e timestamp para realizar as fotografias e inserir os nomes numéricos corretamente
  5. Criar um cron job para executar o shell script do item acima em intervalos de tempo pré-determinados (a cada 1 minutos por exemplo)

Passo 1 – Conexão ao Raspberry Pi

O primeiro passo é se conectar ao seu Raspberry por conexão SSH. Caso não tenha um nome de usuário e senha configurados, conecte pelo usuário padrão. Neste exemplo nosso raspberry está configurado no ip 192.168.1.52. Então o comando para conexão será:

 ssh pi@192.168.1.52

A senha padrão do Raspbian recém instalado é:

raspberry

Um alerta, por padrão o raspberry não vem com o servidor SSH habilitado. Na hora de salvar a imagem do sistema operacional no cartão SD pelo Raspberry Pi Imager é possível solicitar que o servidor SSH fique habilitado já no primeiro boot.

Passo 2 (Opcional) – Configurar servidor de arquivos

Este é um passo opcional, mas garante grande facilidade na utilização do seu raspberry como uma câmera de time lapse. Configurando a pasta onde guarda as fotografias como uma pasta compartilhada pela rede, permite facilmente acessar suas imagens e movê-las para seu computador.

Caso tenha interesse nesta feature, basta seguir este tutorial opcional:

Passo 3 – Habilitar o módulo de câmera

Caso esteja utilizando o Camera Module, é necessário verificar se o mesmo está ativado. Lembrando que estamos partindo do princípio que você já tem o sistema operacional Raspbian instalado no seu Raspberry Pi. Execute o comando para abrir o gerenciador do raspi-config:

sudo raspi-config

Raspberry Pi Time Lapse - Executar o raspi-config

Caso o comando acima não seja encontrado, é possível que esteja utilizando uma outra imagem do sistema operacional no Raspberry e não o Raspbian. Caso esteja utilizando o Ubuntu, é possível instalar o raspi-config com o comando:

sudo apt install raspi-config

Quando o menu no raspi-config abrir, caminhe no menu até a opção:

3 Interface Options

Em seguida selecione o item:

I1 Legacy Camera

Raspberry Pi Time Lapse - Executar o raspi-config - ir menu interface options
Raspberry Pi Time Lapse - Executar o raspi-config - habilitar legacy camera

Passo 4 – Testar a câmera

Após realizar os passos anteriores, é possível então realizar uma fotografia de teste.

Ao executar o comando abaixo, vamos solicitar que o Raspberry tire 1 fotografia e salve a mesma em arquivo. Se estiver conectado diretamente no raspberry (com teclado e monitor), sem ser por conexão SSH, a imagem da câmera irá aparecer na tela por alguns segundos.

raspistill -o fotografia.jpg

Para verificar se o arquivo foi criado, é possível pesquisar no diretório e verificar os arquivos presentes:

ls -l

Raspberry Pi Time Lapse - realizar uma fotografia para testar a camera

Caso tenha configurado o servidor de arquivos em rede (NAS) no seu raspberry, como descrito no Passo 2 deste tutorial, basta mover a imagem para sua pasta compartilhada, para que possa verificar a mesma em seu computador:

mv fotografia.jpg /home/fileserver/shared

Raspberry Pi Time Lapse - Mover foto criada para pasta compartilhada do NAS

Caso não tenha o servidor de arquivo e gostaria de verificar a imagem criada em seu pc, é possível enviar a mesma por ssh (scp). Em seu computador pessoal (com Windows, Linux ou Mac) abre o prompt de comando (caso windows) ou o terminal (caso linux ou Mac). Neste exemplo vamos conectar no Raspberry com o usuário padrão “pi” e o mesmo está configurado no IP “192.168.1.52”. Lembre-se de atualizar estas informações para as definidas em seu raspberry.

Caso utilize o windows, abra o prompt e digite o comando:

scp pi@192.168.1.52:/home/pi/fotografia.jpg "%userprofile%\Downloads"

O comando acima vai conectar no Raspberry, acessar o arquivo da imagem e copiar ela para a pasta Downloads no seu computador configurado com Windows.

Raspberry Pi Time Lapse - copiar foto do raspberry para windows utilizando ssh scpRaspberry Pi Time Lapse - verificar a foto copiada do raspberry

Caso utilize o Mac Os ou Linux, abra o terminal e digite o comando:

scp pi@192.168.1.52:/home/pi/fotografia.jpg ~/

O comando acima vai fazer uma cópia da fotografia na pasta pessoal do seu usuário.

Passo 4 – Criar shell script para padronizar nome das fotos

Como queremos criar um time lapse, é importante que as imagens estejam com nomes que indicam a sequência em que foram criadas. No bash, o código abaixo retorna a data no padrão: AAAA-MM-DD_HHMM

$(date +"%Y-%m-%d_%H%M")

Raspberry Pi Time Lapse - padrão timestamp a ser adotado

Ou seja, vamos pegar o dia 17 de junho de 2023 como exemplo, e o horário sendo 18 horas e 4 minutos; o código acima vai gerar uma data no formato: 2023-06-17_1804. Se pensarmos então no nome da imagem, ela vai ter o nome de 2023-06-17_1804.jpg

Vamos então agora criar o arquivo de shell script que basicamente vai informar qual shell vamos utilizar e o caminho dele (bash), definir o formato do nome da imagem que queremos (AAAA-MM-DD_HHMM.jpg) e o comando para efetivamente fotografar com o módulo de câmera e salvar o arquivo em disco em um diretório escolhido.

Primeiro crie o arquivo e abra para edição com o comando:

nano fotografar.sh

Raspberry Pi Time Lapse - criar arquivo shell script fotografar.sh

Agora copie o código abaixo para dentro do arquivo:

#!/bin/bash
DATA=$(date +"%Y-%m-%d_%H%M")
raspistill -o /home/pi/$DATA.jpg

Caso queira salvar as imagens em outra pasta, basta editar a última linha definindo o caminho “/home/pi/$DATA.jpg”. Neste exemplo estamos salvando as imagens dentro da pasta home do usuário pi (/home/pi).

Raspberry Pi Time Lapse - copiar código para dentro do arquivo

Caso tenha seguido o Passo 2 deste tutorial, você pode optar por salvar as imagens dentro da pasta compartilhada em rede do seu Raspberry (NAS). Mas primeiro crie uma pasta time lapse:

mkdir /home/fileserver/shared/timelapse

Raspberry Pi Time Lapse - criar pasta timelapse dentro da pasta compartilhada do NAS

E deixe seu shell script com o caminho atualizado:

#!/bin/bash
DATA=$(date +"%Y-%m-%d_%H%M")
raspistill -o /home/fileserver/shared/timelapse/$DATA.jpg

Raspberry Pi Time Lapse - copiar código para dentro do arquivo caso tenha seguido o PASSO 2 e tenha configurado o NAS

Agora precisamos conceder permissão de execução para o shell script criado:

sudo chmod +x fotografar.sh

Raspberry Pi Time Lapse - garantir permissão de execução ao arquivo de script criado

Para testar o shell script criado, é possível executá-lo uma vez com o comando:

./fotografar.sh

A fotografia será salva na pasta escolhida. Caso tenha algum erro, talvez tenha definido o nome da pasta incorretamente, ou a pasta não existe. Ou talvez não tenha permissão de escrita na pasta.

Raspberry Pi Time Lapse - executar o script fotografia.shRaspberry Pi Time Lapse - executar o script fotografia.sh e ver o resultado na pasta do NAS

Passo 5 – Criar um cron job para fotografar automaticamente em um intervalo de tempo definido (time lapse)

No passo anterior criamos um shell script que a cada vez que é executado, fotografa apenas 1 vez. Mas queremos que o Raspberry fique fotografando automaticamente em um intervalo de tempo definido.

Uma possível solução é criar um cron job, e definir de quanto em quanto tempo ele deve executar o shell script fotografar.sh.

Neste exemplo, vamos criar um cron job para executar o script criado a cada minuto. Ou seja, nosso time lapse terá um intervalo de 1 minuto entre cada fotografia.

Para criar o cron job, execute o comando:

sudo crontab -e

Raspberry Pi Time Lapse - criar crontabRaspberry Pi Time Lapse - editar arquivo crontab

Caso seja a primeira vez que está utilizando o crontab, o editor mais fácil de utilizar é o nano. Você será perguntado qual deseja escolher na primeira execução.

Agora caminhe até a última linha do arquivo e insira o código:

* * * * * sh /home/pi/fotografar.sh 2>&1

Agora salve e feche o arquivo (ctrl+o, Enter, Ctrl+x)

Repare o termo “2>&1” no fim da linha, esta parte do código indica para direcionar qualquer saída de erro que a execução possa ocasionar (stderr) para a saída padrão (stdout). Os caracteres “*” presente no início da linha são utilizados para definir a periodicidade de execução do código.

Caso queira uma periodicidade diferente de a cada minuto, basta verificar na documentação as variáveis que precisa substituir no local de “* * * * *”, para atender suas necessidades de time lapse.

Raspberry Pi Time Lapse - editar arquivo crontab

Caso esteja utilizando o raspberry como um NAS (Passo 2), lembre-se de atualizar o caminho do script no crontab:

* * * * * sh /home/fileserver/shared/fotografar.sh 2>&1

Raspberry Pi Time Lapse - editar arquivo crontab - modelo para setup como NAS

Se estiver utilizando o raspberry como NAS (Passo 2), mova seu arquivo fotografar.sh para dentro da pasta compartilhada:

mv fotografar.sh /home/fileserver/shared/

Raspberry Pi Time Lapse - mover script de fotografar.sh para a pasta compartilhada do NAS para facilitar gerenciamento

Ter um NAS configurado no Raspberry Pi é uma facilidade, pois para desligar a execução do time lapse é muito mais simples. Como o arquivo de shell (fotografar.sh) está dentro da pasta “/home/fileserver/shared”, caso queira desligar a criação das fotografias, basta comentar as linhas de código dentro do arquivo (inserir “#” no começo de cada linha). Desta forma não precisa conectar por SSH no Raspberry, acessar a crontab, e comentar a linha que executa o script.

Se chegou até aqui, tudo pronto! As fotos consecutivas foram criadas, mas como montar o time lapse em vídeo?

Como criar time lapse em vídeo com fotos consecutivas utilizando ffmpeg

Passo 1 – Instalando ffmpeg no Raspberry Pi

Vamos utilizar o ffmpeg para criar o vídeo de time lapse no formato mpeg. Mas primeiro precisamos instalar o ffmpeg no Raspberry Pi:

sudo apt install ffmpeg

Raspberry Pi Time Lapse - sudo apt install ffmpeg

Agora vamos organizar as imagens, o ffmpeg é meio chato, e usa uma sistemática numerada e ordenada para acessar as imagens. Mas podemos também criar uma lista dos arquivos e passar por parâmetro para que o ffmpeg siga esta ordem.

Partindo do pressuposto que suas fotos do time lapse estão dentro da pasta:

/home/fileserver/shared/timelapse/

Vamos criar um shell script para criar a lista:

nano criar_lista_arquivos_timelapse.sh

Raspberry Pi Time Lapse - criar shell script que cria a lista de arquivos que farão parte do time lapse

Agora insira o texto abaixo dentro do script:

#!/bin/bash
\ls /home/fileserver/shared/timelapse/*.jpg | sed "s/^/file '/;s/$/'/" > lista_timelapse.txt

Grave e feche o arquivo (ctrl +o, enter, ctrl+x).

Raspberry Pi Time Lapse - critando shell script para criar lista de fotos para timelapse

Garante permissão de execução para o shell:

sudo chmod +x criar_lista_arquivos_timelapse.sh

Raspberry Pi Time Lapse - permitiar permissão de execução no arquivo de shell script

Agora crie o arquivo de shell script para executar o ffmpeg, carregar a lista de arquivos e gerar o time lapse:

nano criar_timelapse.sh

Raspberry Pi Time Lapse - criar novo arquivo de shell script denominado criar_timelapse.sh

Insira o código dentro do arquivo:

#!/bin/bash
ffmpeg -f concat -safe 0 -i lista_timelapse.txt video_timelapse.mpeg

Grave e feche o nano (ctrl +o, enter, ctrl+x).

Raspberry Pi Time Lapse - editando o arquivo de shell script que realiza a criação do time lapse de vídeo com ffmpeg

Garante permissão de execução para o shell:

sudo chmod +x criar_timelapse.sh

Raspberry Pi Time Lapse - garantir permissão de execução script de criar time lapse

Com tudo pronto, primeiro crie a lista de arquivos que vão gerar o vídeo de time lapse com o comando:

./criar_lista_arquivos_timelapse.sh

Você pode abrir o arquivo criado para conferir se a lista está correta.

Raspberry Pi Time Lapse - criar lista de arquivos para o timelapse executando o script criado

O próximo passo é executar o shell script para criar o vídeo de time lapse:

./criar_timelapse.sh

Dependendo da sua versão do raspberry e do número de imagens, o procedimento acima pode demorar bastante. Sugiro começar com um teste mais rápido, com uma gravação de 60 imagens (1h de time lapse = 1 foto por min = 60 imagens)

Executei o procedimento acima em um Raspberry Pi Zero W, com o câmera module V2 e demorou poucos minutos para o arquivo de vídeo ficar pronto.

Dependendo do programa player de vídeo que for executar, ele pode reclamar do formato do time lapse criado (mpeg). É possível alterar alguns parâmetros na execução do ffmpeg a fim de mitigar estes problemas também e aumentar a compatibilidade.

Raspberry Pi Time Lapse - criar time lapse executando o scriptRaspberry Pi Time Lapse - arquivo de time-lapse criado com sucesso!

Conclusões

Neste passo a passo vimos como configurar o Raspberry Pi para que este funcione como uma câmera de time lapse. Foi possível também utilizar o próprio raspberry para gerar o vídeo de time lapse junto com o ffmpeg.

A etapa opcional de criar uma pasta compartilhada para transferência de arquivos (NAS) é muito útil, para gerenciar as imagens e vídeos criados, sendo uma etapa altamente recomendada.

O ffmpeg também permite customizações de formato de saída de vídeo, o que permite otimizar ainda mais o processo. É possível também desabilitar a criação do canal de áudio e aumentar a compatibilidade do arquivo para diversos players de vídeo.

Caso tenha alguma dúvida ou dificuldade em alguma etapa, basta informar nos comentários! Farei o possível para ajudar!

Vinicius Paes
Visão Geral sobre Privacidade (Privacy Overview)

Este site utuliza "cookies" para que possamos oferecer uma melhor experiência de usuário. As informações dos "cookies" são armazenadas em seu navegador e executam funções como reconhecê-lo quando você retorna ao nosso site e ajudar nossa equipe a entender quais seções do site você considera mais interessantes e úteis.