Usar uma Trust Mini Webcam WB-1200p como camera do Raspberry Pi

Trust WB 1200P webcam

Trust WB 1200P webcam

A Trus Mini WebCam era uma câmera portátil vendida há muito, muito tempo. Dava para capturar uns incríveis e espetaculares 352 x 288 pixeis.

Hoje há câmeras com muito mais capacidades que esta pequena câmera. Isso não significa que não possa ser aproveitada, nem que seja para umas experiências com o Homebridge.

Ter uma câmera dentro de casa permite criar um sistema de alarme com base na alteração do que a câmera capta. O resultado para mim foi passar a ver a última imagem capturada em caso de movimento e ter acesso ao vídeo do período do evento.

IMG_6385.jpg

Se têm um Homebridge no vosso Raspberry Pi, uma câmera e um iPhone, podem ter estas funcionalidades. Para isso terão de instalar e configurar o seguinte software:

Cada um destes componentes serve um propósito:

  • O Motion é um servidor de deteção de movimento com base em camêras compatíveis com Video for Linux (V4L2);
  • O v4l-util é o conjunto de utilitários que permite ao sistema utilizar câmeras e outros equipamentos de vídeo;
  • O Homebridge-Camera-motion é o módulo do Homebridge que permite configurar uma localização de um ficheiro especial de *nix e da última imagem capturada;
  • O fswebcam é um utilitário que permite testar a câmera.

A instalação dos componentes com através de um comando é trivial. Mais complicado é a configuração e os vários problemas que encontrei por ter um equipamento pouco recente e  algo instável.

Um dos problemas que encontrei foi quando a câmera falha, o device da câmera mudava de /dev/video0 para /dev/video1. Mesmo com regras em /etc/udev que criam um link simbólico de /dev/videoSpaceCam para /dev/video? .

Para combater isto, tive de criar um cão de guarda algo rudimentar que verifica qual o device no link simbólico e recria o link simbólico se não tiver vídeo no nome.

#!/bin/bash
SPACECAMDEV=$(ls -l /dev/videoSpaceCam | sed ‘s/.*> //’);

if [[ $SPACECAMDEV == *”video”* ]];
then
echo “SPACECAMDEV OK”
else
echo -e “$SPACECAMDEV NOK \n$(ls -la /dev/video*)”
DEVID=$(ls /dev/video? | sed ‘s/\/dev\/video//’)
rm /dev/videoSpaceCam;
ln -s /dev/video$DEVID /dev/videoSpaceCam;
fi

O script é depois chamado a cada minuto depois de configurado com o crontab.

Outro problema encontrado foi que a captura de imagem da câmera revertia sempre para um tamanho ainda mais pequeno que os incríveis e espetaculares 352 x 288 pixeis.

Para isso foi necessário configurar corretamente o motion para capturar na capacidade máxima da câmera. Isso é feito no motion.conf alterando o valor da variável v4l2_palette.

Para saber isso e outras coisas utilizei o comando v4l2-ctl:

v4l2-ctl –list-formats-ext — identificação do formato a configurar na variável v4l2_palette

v4l2-ctl –list-ctrls — lista de controles da câmera

Por último, para mostrar a imagem do último evento no iPhone, foi necessário criar um segundo cão de guarda.

O script procura a última imagem no diretório onde os eventos detetados são guardados e copia-a para o nome laspsnap.jpg para ser mostrado no iPhone.

#!/bin/bash
find /media/Media/Motion/ -maxdepth 1 -type f -name “*.jpg” -print0 | xargs -0r ls -tr  | tail -1 > lastjpeg
LASTJPEG=$(cat lastjpeg)
cp -f $LASTJPEG /media/Media/Motion/lastsnap.jpg

Guardo as imagens e filmes gerado pelo Motion num disco externo para evitar problemas de falta de espaço.

O Motion pode ser configurado para aceder remotamente a câmeras ip, o que facilita a configuração do sistema de controlo num sitio e de captura no outro.

Tags: ,

{ Comments are closed! }