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).

Nenhum comentário: