Pages

Google Ads

Monday, June 23, 2014

Usando Motion para comandar um dispositivo externo através de uma camera


raspberry pi. Fonte: Flickr
Motion é um programa de monitoramento de câmeras no Linux em modo console com diversas opções que o torna poderoso. Foi feito primeiramente como um programa para detectar movimento e gravar os quadros quando o movimento ocorrer (dai o nome). Entre suas opções estão servidor web, envio remoto dos quadros, e um poderoso sistema de saída via comandos pré-configurados na ocorrência de eventos. E são estes comandos que iremos usar.

Instalação

A instalação será para uma instalação Debian pois torna este artigo quase que universal permitindo por exemplo rodar no Raspberry PI.
Faça a instalação normalmente com:
sudo apt-get install motion
Para Raspberry PI faça um update:
sudo apt-get install rpi-update
Seu arquivo de configuração esta em /etc/motion/motion.conf:
sudo nano /etc/motion/motion.conf
Altere as seguintes linhas que respectivamente faz o programa iniciar no boot e permite a visualização da camera fora do localhost:
daemon on

webcam_localhost off
Inicie o motion:
sudo services motion start
Veja se tudo esta correto acessando sua camera pelo browser (que deverá estar conectada) no endereço do raspberry pi na porta 8081. Pode-se controlar algumas câmeras e configurá-las na porta 8080.
Estando tudo ok vamos à ligação externa.

GPIOs

Há diversas formas de se comandar um aparelho externo usando as GPIOs do raspberry pi inclusive há um artigo aqui mesmo sobre o assunto.
Para comandar uma GPIO a forma mais rápida será usar o sistema de arquivos /sys. Antes é preciso configurar a porta e usaremos a GPIO 4 como nossa comunicação externa:
Exportar os arquivos GPIOs para /sys: 
echo "4" > /sys/class/gpio/export
Direcionar a porta para saida: 
echo "out" > /sys/class/gpio/gpio4/direction
E finalmente para testar comandar a porta:
echo "1" > /sys/class/gpio/gpio4/value

Unindo 

Para executar um comando quando um movimento for detectado use a seguinte opção no arquivo de configuração (e não esqueça de reiniciar o motion):
on_motion_detected COMANDO
Para a GPIO escolhida:
on_motion_detected echo "1" > /sys/class/gpio/gpio4/value

on_event_end  echo "0" > /sys/class/gpio/gpio4/value
Quando um movimento for detectado on_motion_detected ira ligar a gpio e quando a visão ficar estática por um tempo a gpio será desligada.

Conclusão

O comando motion é poderoso e flexível. Aqui foi dado um exemplo mais amplo que envolve hardware, mas usando as opções de eventos do motion pode-se facilmente fazer um sistema de vigilância que emita alertas por e-mail ou salve os quadros do evento em algum servidor remoto.
Usando Raspberry PI é uma opção barata para se comandar uma porta quando alguém chega em um local. O comando motion faz todo o serviço para nós e só precisamos configurar a porta usada e o que fazer com ela. Com os comandos on_*  e a possibilidade de executar scripts a criatividade é posta a prova.
Também é perfeitamente possível usar um computador normal para esta etapa, entretanto comandar um dispositivo externo é mais complicado. A vantagem de usar um computador desktop é que o Raspberry PI não tem poder de processamento suficiente para altas resoluções e alguns tipos de cameras. Usando computadores desktop podemos ainda visualizar mais cameras ao mesmo tempo.
Fonte:
http://www.protejaecontrole.com.br/usando-motion-para-comandar-um-dispositivo-externo-atraves-uma-camera

No comments: