Utilizando Raspberry Pi como servidor de (web) câmera.

webcam2

Nada como ter à mão um Raspberry Pi pra chamar de seu, não é mesmo? Além das possibilidades comuns a um sistema operacional (estou falando de Linux obviamente) ainda você conta com recursos de GPIO, característico de plataformas embarcadas. Mas esse post não é pra falar de GPIO (apesar de que o recurso será agregado em outro post). Dessa vez, vamos fazer um servidor de câmera com o Raspberry e uma webcam – e o propósito não é só provar conceito, esse post é um ensaio para um projeto no mínimo interessante, também em andamento.

Todos os comandos precisarão de acesso de root, então faça:

E digite sua senha. Assim ficará com um console de root e facilitará a vida um pouquinho para fazer as configurações. Depois é só apertar Ctrl+D ou digitar ‘exit’ e tudo se acaba.

/var/log/messages não existe

É, não existe mais por padrão. Eu sequer sei qual o comando relativo ao ‘tail -f’, mas não me preocupo com isso porque eu gosto do messages, o utilizava desde 1998. Não sou resistente a mudanças, mas não estou interessado nesse momento estudar a mudança do arquivo de log. Vamos utilizá-lo?

Ou se preferir, use nano, midnight commander, pico, kate, gedit…

Com ‘vi’ você pode procurar o alvo assim:

Aperte enter e então você verá um bloco de comentários com isto:

Descomente essas linhas e reinicie o rsyslog:




O próximo passo é reconhecer a webcam. Espero que não a tenha conectado previamente. Inicie o monitoramento do log.

Cada câmera é um caso. No meu caso, o resultado ao conectar a webcam foi esse:

Instale o programa cheese (usando Emdebian):

Agora você já poderá fazer o primeiro teste da webcam. Pode dar Ctrl+C no terminal, interromper o tail no log e sair de root por um momento:

Ou o usuário que porventura tenha criado. Depois para voltar pra root, não será necessário digitar a senha novamente. Desse modo, bastará um Ctrl+C, Ctrl+D e ele volta pro usuário que chamou ‘su pi’.

Precisamos agora testar a velocidade de captura da webcam, mas antes disso, vamos a uma dica preciosa.

Utilizar o Raspberry como servidor de qualquer coisa que faça I/O no cartão SD é predição de morte da midia. Cartão SD é sensível como uma moça. Então, o que fazer? – Você tem duas opções (ou talvez não):

– Se estiver utilizando um Raspberry Pi 2, poderá fazer persistência dos dados em um disco SATA (conectado à USB via HUB com alimentação externa).

– Em qualquer outro caso, pode utilizar um espaço de memória RAM como se fosse um diretório local e assim você exponencía a velocidade de gravação, elimina gargalos e poupa a vida de qualquer midia que seja.

Em contrapartida (é assim no novo português?), não haverá persistência das gravações utilizando o segundo método. Para o projeto pretendido (que será contemplado em um próximo post) não há necessidade de persistência, portanto particularmente não vejo melhor opção do que utilizar um pouquinho da RAM. Esse processo simples e interessantíssimo pode ser feito de duas maneiras diferentes e simples, descrito nesse outro post.

Monte uma área de memória e então vamos fazer um teste com o fswebcam

fswebcam-teste

Já faço teste com careta porque ser feio é minha especialidade. De longe sou feio, de perto parece que tou longe.

Como você pode ver, a captura padrão gera um banner com data e hora. É fantástico para log e nesse caso, muito bom se você resolver fazer persistência, gravando-o (ou movendo-o) para o disco. Claro que você pode também definir a resolução. Dê uma lida no manual se lhe interessar ver mais recursos:

Servir câmera via página web com Motion

Tal qual os programas anteriores, instale o Motion e siga com a edição de seu arquivo de configuração:

Alguns parâmetros devem ser modificados neste arquivo. Dos quais:

Diversos ajustes podem ser feitos nesse arquivo, incluindo autenticação. Sugiro que comece pelo básico exposto aqui e depois de ver funcionando, faça a mudança que desejar.

Tem configurações pra motion detection, faremos testes com isso em outro post, agora o foco é por pra funcionar o básico.

Em relação ao diretório na memória; pode ser qualquer mount point, qualquer nome, como preferir, mas recomendo que crie algo como /media/motion ou /mnt/motion.




Continuando no arquivo de configuração do Motion, indique esse diretório para escrita:

Por fim, resta habilitar o daemon noutro canto.

Então troque o valor para ‘yes’, como abaixo:

Inicie o serviço:

E agora é hora de quebrar a garrafa de champagne nesse barco (teste local):

webcam
webcam

Troubleshooting

Se aparecer uma tela cinza no browser, não desanime ainda. Instale o pacote libv4l-0 (apt-get install libv4l) e posteriormente:

Ou ainda:

E se não rolar, que pena.

Espero que tenha gostado e, se gostou, espere até ver o projeto que me motivou a escrever esse post.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Próximo post a caminho!

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta