quinta-feira, abril 09, 2015

Conectando uma Webcam ao Raspberry Pi

A conexão de uma webcam ao Raspberry Pi abre as portas para várias aplicações. Neste post vou repassar o básico para a conexão (com o Raspbian) e dar algumas ideias de aplicação.


Preparando o Raspberry Pi

É importante estar com o firmware do Rasp Pi e as bibliotecas do Raspbian atualizadas. Dependendo de quão desatualizado estiverem, uma quantidade razoável de arquivos pode precisar ser baixada. Portanto, tenha uma boa conexão internet no Raspberry e garanta um bom espaço no cartão SD antes de executar os comandos abaixo:

sudo apt-get install rpi-update
sudo rpi-update
sudo apt-get update
sudo apt-get upgrade 

No meu caso foi solicitado o reboot após o rpi-update, para ativar o novo firmware.

Antes de conectar a webcam, execute lsusb para conhecer os dispositivos USB já reconhecidos.

Conectando a Webcam

Neste ponto você já pode conectar a webcam a uma porta USB do Rasp Pi. Dependendo do modelo do Raspberry e da webcam, e do que mais você tiver conectado na USB, você pode precisar de um hub com alimentação externa. No meu caso, usei um modelo B+ sem mais nada ligado na USB (toda a operação foi remota via SSH) e não tive problemas para alimentar a minha webcam.

Execute lsusb novamente e confira se sua webcam foi reconhecida. Se não tiver sido reconhecida, dê uma olhada nesta página para ver ser existe alguma sugestão. A minha velha Microsoft LifeCam VX-2000 funcionou sem problemas.

fswebcam

fswebcam é uma aplicação simples para tirar fotos; é a sugerida na documentação no site oficial. A instalação é rápida e pode ser feita através de

sudo apt-get install fswebcam

A documentação pode ser vista no próprio Raspberry Pi através de man fswebcam. Partindo do mais simples:

fswebcam imagem.jpg

Isto captura uma imagem e grava em imagem.jpg. A resolução padrão é baixa (mesmo para a minha câmera "VGA"). Na parte inferior da imagem tem uma barra com a data e hora. Para aumentar a resolução para 640x480 e tirar a barra com a data e hora podemos usar

fswebcam -r 640x480 --no-banner imagem.jpg

O fswebcam é capaz de tirar fotos continuamente, através da opção --loop. Neste caso é importante usar o fato do nome ser formato por strftime e incluir alguma informação variável para cada foto não sobrescrever a anterior. Por exemplo, para capturar fotos de 5 em 5 segundos e colocar a hora no final do nome podemos usar

fswebcam --loop 5 imagem_%T.jpg

Se você fizer isto no console, você vai precisar digitar Control C para encerrar o programa.

Você pode fazer scripts ou usar o cron para automatizar a execução, mas claramente o fswebcam é bastante limitado.

motion

motion é uma aplicação bem mais sofisticada, que permite capturar fotos e vídeos, com a possibilidade disto ser disparado pela detecção de movimento (mais exatamente de uma mudança significativa na imagem).

A instalação (que também é grande) é disparada por

sudo apt-get install motion

A operação do motion é controlada pelo arquivo /etc/motion/motion.conf.  Começando pelo mínimo, edite (usando o nano, vi ou outro editor) as seguintes linhas:

DAEMON = ON
Webcam_localhost = OFF

Em seguida é preciso editar um outro arquivo de configuração, /etc/default/motion:

start_motion_deamon = yes

Por último, coloque o serviço em execução, digitando no console ou terminal:

sudo service motion start

Abra um browser no seu PC e navegue para a porta 8081 do Raspberry (http://192.168.0.100:8081, por exemplo). As imagens capturadas pela câmera serão apresentadas. A porta 8080 dá acesso a uma página tosca para mudança das configurações.

A quantidade de configurações disponíveis em motion.conf é grande, dê uma olhada na documentação oficial. Uma característica importante é poder definir um comando a ser executado sempre que movimento for detectado.

Futuramente farei um post falando mais sobre algumas opções.

Ideias de Aplicações

O conjunto Raspberry Pi + webcam é compacto, inteligente e pode ter ligação à internet (inclusive via WiFi). Isto permite aplicações como:
  • Sistema de Alarme. Foi deste artigo que peguei o básico da configuração de motion. Você pode ter um sistema de monitoramento simples, tirando fotos quando é detectado movimento (inclusive podendo fazer um upload destas fotos para um local remoto). Você pode também conectar sirenes, luzes e acionadores diversos. Ou mesmo enviar um email, SMS ou tweet.
  • Registro periódico de fotos (time-lapse). Você pode fazer algo básico com o fswebcam e o cron, ou usar o motion para tirar fotos periodicamente.
  • Montar uma cabine de fotos. Este exemplo usa uma câmera tradicional, mas a ideia pode ser adaptada para uma webcam. Pontos extras para colocar botões ou alguma outra interface para selecionar efeitos (o fswebcam tem alguns recursos básicos para isto).

2 comentários:

Gabriel Aiúde disse...

Bom dia, pode me responder se eu tenho algum problema de incompatibilidade com alguma webcam que possa não funcionar no raspberry?

Daniel Quadros disse...

Gabriel, não tenho mais informações sobre compatibilidade além das que as que estão no post.