Diy câmera de segurança pan e tilt rede com pi framboesa

Saiba como fazer um pan remotamente visível e inclinação câmera de segurança com um Raspberry Pi. Este projeto pode ser concluído em uma manhã com apenas a mais simples das partes. Aqui está o resultado final:

O que você precisa

  • Raspberry Pi 2 ou 3 com cartão Micro SD
  • Arduino UNO ou semelhante
  • 2 x micro ou mini servos passatempo
  • na webcam USB
  • Macho para Fios de montagem do sexo masculino
  • Macho para Fios de montagem do sexo feminino
  • laços zip Assorted

Construindo a câmera de segurança

Anexar um chifre servo (as pequenas de plástico “formas”) para cada servo usando o parafuso fornecido. A forma particular realmente não importa, embora a maior, melhor. Não aperte demais o parafuso.

Agora usar laços zip para anexar um servo para o outro em um ângulo direito. Uma delas será pan (esquerda para a direita), enquanto o outro será de inclinação (para cima e para baixo). Não importa qual deles faz o quê, ele pode ser ajustado no código.

Servo-Hardware

Por último, coloque a sua webcam para um dos servos. Você poderia usar zip-dades para isso, embora minha webcam veio com um clipe aparafusada ao fundo - Tirei isso e usado o parafuso para segurá-la para a buzina. Para a estabilidade, você pode querer montar todo o equipamento a um caso ou caixa. Uma caixa de papelão simples faz o truque muito bem. Você poderia cortar um buraco quadrado limpo e montar um servo flush para a superfície, no entanto, um empate zip será suficiente.

Pi-Pan-Tilt-Camera

Uma palavra sobre Webcams

Nem todas as câmeras USB são criados iguais. Conecte sua webcam à porta USB do seu Pi e execute este comando:

lsusb

Este comando exibe informações sobre todos os dispositivos USB conectados ao Pi. Se a sua webcam não está aqui, você pode querer tentar um hub USB e repetir o comando. Se a webcam ainda não é reconhecido você pode ter que comprar uma webcam compatível.

Setup servo

Enquanto servos pode parecer assustador e complexo, eles são realmente muito simples para se conectar. Servos operar em Largura de Pulso de Modulação (PWM), que é um caminho para sistemas digitais para imitar os sinais analógicos. sinais PWM são essencialmente uma rápida ON - sinal OFF. Um sinal que é ON ou alto é descrita usando ciclo de trabalho. O ciclo de serviço é expressa como uma percentagem, e descreve o tempo que o sinal está ligada por. Um sinal PWM de ciclo de trabalho de 25% será acesa durante 25% do tempo, e DESLIGADO para os restantes 75%. O sinal não é ON no início e, em seguida, para sempre, que é pulsada regularmente durante um período muito curto de tempo.

Servos ouvir para estes impulsos e agir em conformidade. Usando um ciclo de trabalho de 100% seria o mesmo que 5v “regular”, e 0% seria o mesmo que solo. Não se preocupe se você não entender completamente como funciona o PWM, você ainda pode controlar servos (Extreme Electronics é um bom lugar para saber mais).

Há duas principais maneiras de usar PWM - hardware ou software. PWM hardware proporciona muitas vezes menor latência (o tempo entre o servo receber o comando e em movimento) de PWM de software, no entanto, o Pi tem apenas um pino de PWM hardware capazes. circuitos externos estão disponíveis para fornecer múltiplos canais de PWM hardware, no entanto, uma simples Arduino também pode lidar com a tarefa, pois eles têm vários pinos PWM hardware.

Aqui é o circuito:

Pi-Servo-Connection

Verifique a pinagem de seu Pi, eles variam um pouco entre os modelos. Você precisa descobrir como seus servos são conectados. Servos requerem três fios para controlá-los, no entanto as cores variar um pouco:

  • O vermelho é positivo, ligue a Pi + 5V
  • Marrom ou preto é negativo, conecte isso para GND na Pi
  • Laranja ou branco é sinal, ligue a Arduino pinos 9 e 10

Setup Arduino

Novo para Arduino? Comece aqui.Começando com o Arduino: Guia de um novatoComeçando com o Arduino: Guia de um novatoArduino é uma plataforma electrónica de prototipagem de código aberto baseado em flexível e fácil de usar hardware e software. É destinado a artistas, designers, entusiastas e qualquer pessoa interessada em criar objetos ou ambientes interativos.consulte Mais informação

Uma vez que os servos são conectados, abra o Arduino IDE no seu computador e carregar este código de teste. Não se esqueça de selecionar a placa correta e a porta do Ferramentas gt; Borda e Ferramentas gt; Porta menus

#incluir  // importar a bibliotecaservo servoPan, servoTilt- // cria objetos servoint servoMin = 20, servoMax = 160- // Definir limites de servosvazio configuração() {// servos de configuração na PWM pinos capazesservoPan.anexar(9)-servoTilt.anexar(10)-}vazio laço() {para(int Eu = servoMin- Eu lt; servoMax- ++Eu) { 1// Move servos do mínimo ao máximo servoPan.Escreva(Eu)-servoTilt.Escreva(Eu)-demora(100)- // Espera 100ms }para(int Eu = servoMax- Eu gt; servoMin- --Eu) {// Move servos do máximo para o mínimoservoPan.Escreva(Eu)-servoTilt.Escreva(Eu)-demora(100)- // Espera 100ms}}

Se tudo correr bem, você deve ver os dois servos lentamente frente e para trás. Observe como “servoMin” e servoMax”são definidas como os 20 e 160 graus (em vez de 0 e 180). Isto é em parte porque estes servos baratos são incapazes de se mover de forma precisa os 180 graus, e também por causa do tamanho físico da webcam impede a gama completa que está sendo usado. Você pode precisar de ajustar estes para sua configuração.

Se eles não estão trabalhando em tudo verifique o circuito está conectado corretamente. Breadboards às vezes pode variar em qualidade, bem, então considerar investir em um multímetro para verificar.

Os servos são quase demasiado poderoso para o Arduino ao poder, então eles vão ser alimentado pelo Pi. O trilho 5v na Pi é limitada a 750mA fornecido para todo o Pi, eo Pi atrai cerca de 500mA, deixando 250mA para os servos. Estes micro servos chamar a aproximadamente 80 mA, ou seja, o Pi deve ser capaz de lidar com dois deles. Se você quiser usar mais servos ou modelos maiores, maior powered você pode precisar usar uma fonte de alimentação externa.

Agora carregar o seguinte código para o Arduino. Isto irá ouvir dados seriais de entrada (serial como no Universal Serial Bus, ou USB). O Pi irá enviar esses dados através de USB para o Arduino, dizendo-lhe para onde mover os servos.

#incluir  // importar a bibliotecaservo servoPan, servoTilt- // cria objeto servodados de cadeia = ""- // armazena os comandos de entrada (tampão)vazio configuração() {// servos de configuração na PWM pinos capazesservoPan.anexar(9)-servoTilt.anexar(10)-Serial.início(9600)- // Iniciar série em 9600 bps (velocidade)}vazio laço() {enquanto (Serial.acessível() gt; 0){// Se houver dadosCaracteres singleChar = Serial.ler()- // Leia cada personagemE se (singleChar == `P`) {// movimento pan servoservoPan.Escreva(dados.toInt())-dados = ""- // Limpar tampão}outro E se (singleChar == `T`) {// servo inclinação caminhoservoTilt.Escreva(dados.toInt())-dados = ""- // Limpar tampão}outro {dados += singleChar- // Acrescentando novos dados}}}

Você pode testar esse código, abrindo o monitor serial (canto superior direito gt; Serial monitor) E enviar alguns dados de teste:

  • 90P
  • 0P
  • 20T
  • 100T

Observe o formato dos comandos - um valor e, em seguida, uma carta. O valor representa a posição do servo, e a letra (em letras maiúsculas) especifica a panela ou inclinação do servo. Como estes dados são transmitidos a partir do Pi em série, cada carácter vem através de um de cada vez. O Arduino tem de “loja” estes até que todo o comando foi transmitido. A carta final não só especifica o servo, ele também permite que o Arduino sabem que não há mais dados neste comando.

Finalmente, desligue o Arduino a partir do computador, e ligá-lo na Pi framboesa através da conexão da porta USB habitual.

Setup Pi

Agora é hora de configurar o Pi. Primeiro, instalar um sistema operacional. Ligar a webcam e o Arduino para o USB Pi.Como instalar um sistema operacional para seu Raspberry PiComo instalar um sistema operacional para seu Raspberry PiAqui está como se um novo sistema operacional instalado e funcionando em seu Pi - e como clonar sua configuração perfeita para recuperação de desastres rápida.consulte Mais informação

Atualizar o Pi:

sudo apt-get atualizarsudo apt-get atualizar

Instale movimento:

sudo apt-get instalar movimento

Movimento é um programa feito para lidar com webcam em streaming. Ele lida com todo o trabalho pesado, e pode até mesmo executar a gravação e detecção de movimento (tente a construção de um sistema de segurança de captura de movimento). Abra o arquivo de configuração de movimento:Construir um sistema de segurança Captura de Movimento Usando um Raspberry PiConstruir um sistema de segurança Captura de Movimento Usando um Raspberry PiDos muitos projetos que você pode construir com o Raspberry Pi, um dos mais interessantes e permanentemente útil é o sistema de segurança de captura de movimento.consulte Mais informação

sudo nano /etc/motion/motion.conf


Este arquivo fornece muitas opções para configurar Motion. Instalação como segue:

  • daemon on - Execute o programa
  • framerate: 100 - Quantos quadros ou imagens / segundo para transmitir
  • stream_localhost off - Permitir o acesso através da rede
  • Largura 640 - Largura de vídeo, ajuste para a sua webcam
  • altura 320 - Altura do vídeo, ajuste para a sua webcam
  • stream_port 8081 - A porta de saída de vídeo para
  • output_picture off - Não guarde quaisquer imagens

Isto é bastante um arquivo grande, então você pode querer usar CTRL + W para procurar linhas. Uma vez terminado, pressione CTRL + X e depois confirmar para salvar e sair.

Agora editar mais um arquivo:

sudo nano / Etc / default / movimento

Definir “start_motion_daemon = yes”. Isso é necessário para garantir movimento executado.

Agora descobrir o seu endereço IP:

ifconfig

Este comando irá mostrar os detalhes de conexão de rede para o Pi. Olhe para a segunda linha, inet addr. Você pode querer definir um endereço IP estático (o que é um IP estático?), Mas por agora fazer uma nota deste número.O que é um endereço IP estático, Como faço para obter um & Suas vantagens / desvantagensO que é um endereço IP estático, Como faço para obter um & Suas vantagens / desvantagensEm redes domésticas, endereços IP não são normalmente fixo, mas eles caem dentro de intervalos específicos. Um endereço IP estático não muda. Quais são as vantagens para isso, e por que você quer um?consulte Mais informação

Agora iniciar o Motion:

sudo serviço início de movimento

Você pode parar ou reiniciar Movimento mudando “start” para “parar” ou “restart”.

Passar para o computador e navegar para o Pi partir de um navegador web:

http: //xxx.xxx.x.xx: 8081

Onde xxx.xxx.x.xx é o endereço IP Pi. O cólon seguido de um número é a porta que foi configuração anterior. Se tudo correr bem, você deve ver o fluxo de sua webcam! Tente mover ao redor e ver como estão as coisas. Pode ser necessário ajustar as configurações de brilho e contraste no arquivo de configuração. Pode ser necessário concentrar o webcam - alguns modelos têm um pequeno anel de foco ao redor da lente. Transformar este até que a imagem é a imagem mais nítida.

Voltar no Pi, crie uma pasta e navegar nele:

mkdir segurança-camCD segurança-cam /

Agora instale Twisted:

sudo apt-get instalar torcido-pitão

Torcido é um servidor web escrito em Python, que irá ouvir para os comandos e, em seguida, agir em conformidade.

Uma vez instalado, crie um script Python para executar comandos (mover o servos).

sudo nano servos.rpy

Observe como a extensão do arquivo é “.rpy” em vez de “py”. Aqui está o código:

arquivos necessários # importaçãoimportar seriala partir de torcido.rede.recurso importar Recurso# Arduino Setup na velocidade corretaexperimentar:arduino = serial.Serial(`/ Dev / ttyUSB0`, 9600)exceto:arduino = serial.Serial(`/ Dev / ttyUSB1`, 9600)classe MoveServo(Recurso):isLeaf = Verdadedef render_GET(auto,pedido):experimentar:# Enviar valor ao longo de série para o Arduinoarduino.Escreva(pedido.args[`valor`][0])Retorna `Sucesso`exceto:Retorna `Falha`recurso = MoveServo()

Agora inicie o servidor web:

sudo twistd web -n -p 80 --path / home / pi / security-cam /

Deixa decompô-lo - “-p 80” especifica a porta (80). Esta é a porta padrão para páginas web. “-caminho / home / pi / security-cam /” conta torcida para iniciar o servidor no diretório especificado. Se você fazer qualquer alteração para os scripts dentro da pasta “segurança-cam” você precisará reiniciar o servidor (CTRL + X para fechar, em seguida, execute o comando novamente).

Agora crie a página da Web:

sudo nano index.html

Aqui está o código página:

lt;htmlgt;lt;cabeçagt;lt;títulogt;Fazer uso de câmera DIY Segurançatítulogt;lt;estilo tipo="text / css"gt;#recipiente {/ * Centro de conteúdo * /margem: 0 auto-alinhamento de texto: centro-}estilogt;cabeçagt;lt;corpogt;lt;div identidade="recipiente"gt;lt;img src="http: // PI_IP_ADDRESS: 8081" / Gt;lt;roteiro src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"gt;roteirogt;lt;br / Gt;lt;botão onclick="servos.move (`P`, 10)"gt;Esquerdabotãogt;lt;botão onclick="servos.move (`P`, -10)"gt;Certobotãogt;lt;botão onclick="servos.move (`T`, -10)"gt;Acimabotãogt;lt;botão onclick="servos.move (`T`, 10)"gt;Baixabotãogt;divgt;corpogt;lt;roteirogt;var servos-$( documento ).pronto(função() {servos = moveServos()-})-função moveServos() {// armazenar algumas configurações, ajuste para se adequarvar panPos = 70,tiltPos = 90,tiltMax = 170,tiltMin = 45,panMax = 170,panMin = 20-Retorna {mover:função(servo, ajustamento) {var valor-E se(servo == `P`) {E se(!((panPos gt; = panMax && ajustamento gt; 0) || (panPos lt; = panMin && ajustamento lt; 0))) {// Ainda dentro do alcance permitido, "cronograma" o movimentopanPos += ajustamento-}valor = panPos + `P`-}outro E se(servo == `T`) {E se(!((tiltPos gt; = tiltMax && ajustamento gt; 0) || (tiltPos lt; = tiltMin && ajustamento lt; 0))) {// Ainda dentro do alcance permitido, "cronograma" o movimentotiltPos += ajustamento-}valor = tiltPos + `T`-}// Use AJAX para realmente mover os servos$.obter(`Http: valor //PI_IP_ADDRESS/servos.rpy =` + valor)-},}}roteirogt;htmlgt;

Change “PI_IP_ADDRESS” (usado duas vezes) para o endereço IP real do seu Pi (raspberrypi.local também deve funcionar se você está rodando a última Raspian). Reinicie o servidor web e, em seguida, navegue até o Pi do seu computador, não há necessidade de especificar a porta. Você deve ser capaz de deslocar esquerda e direita, e vê o fluxo de vídeo:

Pi-Pan-Tilt-Camera-Web-View

Lá você tem. Seu próprio Camera Pan e Tilt de rede. Se você deseja expor sua webcam para a internet, lembre-se considerar os perigos - em seguida, olhar para encaminhamento de porta, para que o seu router sabe para onde enviar as solicitações de entrada. Você pode adicionar uma fonte de alimentação externa e um adaptador Wi-Fi para um equipamento realmente portátil.5 perigos a considerar ao Apontando sua casa Câmeras de Segurança5 perigos a considerar ao Apontando sua casa Câmeras de SegurançaÉ importante considerar com cuidado onde posicionar suas câmeras, e que partes da sua casa você apontá-los no. Manter as coisas seguro é importante, mas assim é manter a sua privacidade.consulte Mais informação

Você fez algo legal com uma webcam e um Pi? Deixe-me saber nos comentários, eu adoraria ver!


Artigos relacionados