Pan DIY e Tilt Network Segurança Cam com Raspberry Pi

Aprenda a tornar a câmera de segurança panorâmica e inclinada remotamente visível com um Raspberry Pi. Este projeto pode ser concluído em uma manhã com apenas a mais simples das partes.

Aprenda a tornar a câmera de segurança panorâmica e inclinada remotamente visível com um Raspberry Pi.  Este projeto pode ser concluído em uma manhã com apenas a mais simples das partes.
Propaganda

Aprenda a fazer uma câmera de segurança panorâmica e inclinada remotamente 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 similar
  • 2 x micro ou mini passatempo servos
  • Webcam USB
  • Macho para fios de conexão masculinos
  • Fios de conexão macho-fêmea
  • Laços zip Assorted

Construindo a Câmera de Segurança

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

Agora use gravatas com zíper para prender um servo ao outro em um ângulo reto. Um deles será pan (da esquerda para a direita), enquanto o outro será inclinado (para cima e para baixo). Não importa qual deles faz o quê, ele pode ser ajustado no código.

Servo-Hardware

Por fim, conecte sua webcam a um dos servos. Você poderia usar zip-ties para isso, embora minha webcam veio com um clipe aparafusado na parte inferior - eu removi isso e usei o parafuso para segurá-lo para o chifre. Para estabilidade, você pode montar o equipamento inteiro em um estojo ou caixa. Uma caixa de papelão simples faz o truque muito bem. Você pode cortar um buraco quadrado e montar um servo até a superfície, no entanto, um zíper será suficiente.

Pi-Pan-Tilt-Camera

Uma palavra sobre webcams

Nem todas as webcams USB são criadas igualmente. 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 sua webcam não estiver listada aqui, experimente usar um hub USB com energia e repetir o comando. Se a webcam ainda não for reconhecida, você pode ter que comprar uma webcam compatível.

Servo Setup

Embora os servos possam parecer assustadores e complexos, eles são realmente muito simples de se conectar. Os servos operam com modulação por largura de pulso (PWM), que é uma maneira de os sistemas digitais imitarem sinais analógicos. Os sinais PWM são essencialmente um sinal ON-OFF rápido. Um sinal que está ligado ou alto é descrito usando o ciclo de serviço. O ciclo de trabalho é expresso como uma porcentagem e descreve por quanto tempo o sinal está LIGADO. Um sinal PWM de 25% do ciclo de trabalho ficará ligado por 25% do tempo e OFF pelos 75% restantes. O sinal não está ligado no início e, em seguida, desligado para sempre, é pulsado regularmente durante um período muito curto de tempo.

Os servos ouvem esses pulsos e agem de acordo. Usando um ciclo de trabalho de 100% seria o mesmo que "regular" 5v, e 0% seria o mesmo que terra. Não se preocupe se você não entender completamente como o PWM funciona, você ainda pode controlar os servos (a Extreme Electronics é um bom lugar para aprender mais).

Existem duas maneiras principais de usar o hardware ou software PWM. O hardware PWM geralmente fornece menor latência (quanto tempo entre o servo de receber o comando e o movimento) do que o software PWM, no entanto, o Pi tem apenas um pino com capacidade de PWM de hardware. Circuitos externos estão disponíveis para fornecer múltiplos canais de hardware PWM, porém um simples Arduino também pode manipular a tarefa, já que eles possuem múltiplos pinos PWM de hardware.

Aqui está o circuito:

Conexão Pi-Servo

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

  • Vermelho é positivo, conecte isso a Pi + 5v
  • Marrom ou preto é negativo, conecte isso ao GND no Pi
  • Laranja ou branco é sinal, conecte isso aos pinos 9 e 10 do Arduino

Configuração do Arduino

Novo no Arduino? Introdução ao Arduino: um guia para principiantes Introdução ao Arduino: um guia para principiantes O Arduino é uma plataforma de prototipagem electrónica de código aberto baseada em hardware e software flexíveis e fáceis de utilizar. É destinado a artistas, designers, amadores e qualquer pessoa interessada em criar objetos ou ambientes interativos. Consulte Mais informação .

Quando os servos estiverem conectados, abra o Arduino IDE no seu computador e faça o upload desse código de teste. Não se esqueça de selecionar a placa e a porta corretas nos menus Ferramentas> Placa e Ferramentas> Porta

 #include // Import the library Servo servoPan, servoTilt; // Create servo objects int servoMin = 20, servoMax = 160; // Define limits of servos void setup() { // Setup servos on PWM capable pins servoPan.attach(9); servoTilt.attach(10); } void loop() { for(int i = servoMin; i servoMin; --i) { // Move servos from maximum to minimum servoPan.write(i); servoTilt.write(i); delay(100); // Wait 100ms } }  #include // Import the library Servo servoPan, servoTilt; // Create servo objects int servoMin = 20, servoMax = 160; // Define limits of servos void setup() { // Setup servos on PWM capable pins servoPan.attach(9); servoTilt.attach(10); } void loop() { for(int i = servoMin; i servoMin; --i) { // Move servos from maximum to minimum servoPan.write(i); servoTilt.write(i); delay(100); // Wait 100ms } } 

Tudo bem, você deve ver ambos os servos se movendo lentamente para frente e para trás. Observe como “servoMin” e servoMax ”são definidos como 20 e 160 graus (em vez de 0 e 180). Isto é parcialmente porque esses servos baratos são incapazes de mover com precisão os 180 graus, e também por causa do tamanho físico da webcam impede o alcance total sendo usado. Você pode precisar ajustá-los para sua configuração.

Se eles não estiverem funcionando, verifique se o circuito está conectado corretamente. As tábuas de pão às vezes também variam em qualidade, portanto, considere investir em um multímetro para verificar.

Os servos são quase poderosos demais para o Arduino poder, então eles serão alimentados pelo Pi. O trilho de 5v no Pi é limitado a 750mA fornecido para todo o Pi, e o Pi retira aproximadamente 500mA, deixando 250mA para os servos. Esses micro servos desenham aproximadamente 80mA, o que significa que o Pi deve ser capaz de lidar com dois deles. Se você deseja usar mais servos ou modelos maiores e mais potentes, pode ser necessário usar uma fonte de alimentação externa.

Agora envie o seguinte código para o Arduino. Isso escutará os dados seriais recebidos (serial como em Universal Serial Bus ou USB). O Pi enviará esses dados via USB para o Arduino, informando onde mover os servos.

 #include // Import the library Servo servoPan, servoTilt; // Create servo object String data = ""; // Store incoming commands (buffer) void setup() { // Setup servos on PWM capable pins servoPan.attach(9); servoTilt.attach(10); Serial.begin(9600); // Start serial at 9600 bps (speed) } void loop() { while (Serial.available()>0) { // If there is data char singleChar = Serial.read(); // Read each character if (singleChar == 'P') { // Move pan servo servoPan.write(data.toInt()); data = ""; // Clear buffer } else if (singleChar == 'T') { // Move tilt servo servoTilt.write(data.toInt()); data = ""; // Clear buffer } else { data += singleChar; // Append new data } } } 

Você pode testar este código abrindo o monitor serial ( superior direito> Monitor serial ) e enviando alguns dados de teste:

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

Observe o formato dos comandos - um valor e depois uma letra. O valor é a posição do servo e a letra (em maiúsculas) especifica o servo panorâmico ou inclinado. Como esses dados são transmitidos do Pi serialmente, cada caractere passa por um de cada vez. O Arduino precisa “armazená-los” até que todo o comando seja transmitido. A letra final não apenas especifica o servo, como também permite que o Arduino saiba que não há mais dados nesse comando.

Finalmente, desconecte seu Arduino do computador e conecte-o ao Raspberry Pi através da conexão usual da porta USB .

Configuração Pi

Agora é hora de configurar o Pi. Primeiro, instale um sistema operacional Como instalar um sistema operacional para o seu Raspberry Pi Como instalar um sistema operacional para o seu Raspberry Pi Veja como obter um novo sistema operacional instalado e em execução no seu Pi - e como clonar sua configuração perfeita para um desastre rápido recuperação. Consulte Mais informação . Conecte a webcam e o Arduino ao Pi USB.

Atualize o Pi:

 sudo apt-get update sudo apt-get upgrade 

Instale o movimento:

 sudo apt-get install motion 

Motion é um programa feito para lidar com streaming de webcam. Ele lida com todo o trabalho pesado, e pode até mesmo realizar gravação e detecção de movimento (tente construir um sistema de segurança de captura de movimento) Como usar um Raspberry Pi? construir com o Raspberry Pi, um dos mais interessantes e permanentemente útil é o sistema de segurança de captura de movimento. Abra o arquivo de configuração de movimento:

 sudo nano /etc/motion/motion.conf 

Este arquivo fornece muitas opções para configurar o Motion. Configure da seguinte maneira:

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

Este é um arquivo muito grande, então você pode querer usar CTRL + W para procurar por linhas. Uma vez terminado, pressione CTRL + X e confirme para salvar e sair.

Agora edite mais um arquivo:

 sudo nano /etc/default/motion 

Defina "start_motion_daemon = yes". Isso é necessário para garantir que o movimento seja executado.

Agora descubra o seu endereço IP:

 ifconfig 

Este comando mostrará os detalhes da 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? O que é um endereço IP estático, como obtenho um & suas vantagens / desvantagens o que é um endereço IP estático, como faço para obter um & suas vantagens / desvantagens Em redes domésticas, os endereços IP geralmente não são fixos, mas se enquadram em intervalos específicos. Um endereço IP estático não muda. Quais são as vantagens disso, e por que você quer um? Leia Mais), mas por enquanto Anote esse número.

Agora comece o movimento:

 sudo service motion start 

Você pode parar ou reiniciar o movimento alterando “start” para “stop” ou “restart”.

Alterne para o seu computador e navegue até o Pi em um navegador da Web:

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

Onde xxx.xxx.x.xx é o endereço IP Pi. Os dois pontos seguidos por um número é a porta que foi configurada anteriormente. Estando tudo bem você deve ver o fluxo da sua webcam! Tente se movimentar e ver como as coisas estão. Talvez seja necessário ajustar as configurações de brilho e contraste no arquivo de configuração. Talvez seja necessário focar a webcam - alguns modelos têm um pequeno anel de foco ao redor da lente. Gire isso até a imagem ficar mais nítida.

De volta ao Pi, crie uma pasta e navegue para ela:

 mkdir security-cam cd security-cam/ 

Agora instale o Twisted:

 sudo apt-get install python-twisted 

Twisted é um servidor web escrito em Python, que irá escutar os comandos e então agir de acordo.

Uma vez instalado, crie um script Python para executar comandos (mova os servos).

 sudo nano servos.rpy 

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

 # Import necessary files import serial from twisted.web.resource import Resource # Setup Arduino at correct speed try: arduino = serial.Serial('/dev/ttyUSB0', 9600) except: arduino = serial.Serial('/dev/ttyUSB1', 9600) class MoveServo(Resource): isLeaf = True def render_GET(self, request): try: # Send value over serial to the Arduino arduino.write(request.args['value'][0]) return 'Success' except: return 'Failure' resource = MoveServo() 

Agora inicie o servidor:

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

Vamos dividi-lo - “-p 80” especifica a porta (80). Esta é a porta padrão para páginas da web. “–path / home / pi / security-cam /” diz ao Twisted para iniciar o servidor no diretório especificado. Se você fizer qualquer alteração nos scripts dentro da pasta “security-cam”, será necessário reiniciar o servidor ( CTRL + X para fechar e executar o comando novamente).

Agora crie a página da web:

 sudo nano index.html 

Aqui está o código da página:

 Make Use Of DIY Security Camera #container { /* center the content */ margin: 0 auto; text-align: center; } Pi-Pan-Tilt-Camera-Web-View

Lá você tem isso. A sua própria câmera de rede Pan and Tilt. Se você deseja expor sua webcam à Internet, lembre-se de considerar os perigos 5 Perigos a considerar ao apontar suas câmeras de segurança doméstica 5 Perigos a considerar ao apontar suas câmeras de segurança em casa É importante considerar cuidadosamente onde você posiciona suas câmeras e partes da sua casa em que você as aponta. Manter as coisas seguras é importante, mas também é manter sua privacidade. Leia mais - em seguida, olhar para o encaminhamento de porta O que é o encaminhamento de porta e como ele pode me ajudar? [MakeUseOf Explains] O que é o encaminhamento de porta e como ele pode me ajudar? [MakeUseOf Explains] Você chora um pouco por dentro quando alguém lhe diz que há um problema de redirecionamento de porta e é por isso que seu novo aplicativo não funciona? Seu Xbox não permite que você jogue, seus downloads de torrent recusam ... Leia mais, para que seu roteador saiba para onde enviar solicitações de entrada. Você poderia adicionar uma fonte de alimentação externa Pi to Go? 3 maneiras de alimentar um Raspberry Pi para projetos portáteis Pi to Go? 3 maneiras de alimentar um Raspberry Pi para projetos portáteis Quer tirar seu Raspberry Pi de casa e participar de alguns projetos móveis? Você precisará de uma bateria - mas há várias opções disponíveis. Leia mais e adaptador Wi-Fi para um equipamento realmente portátil.

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

In this article