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:
Conteúdo
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.
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.
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:
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:
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!