Índice:

Quem está na porta, um sistema de câmera com acionamento Alexa: 3 etapas
Quem está na porta, um sistema de câmera com acionamento Alexa: 3 etapas

Vídeo: Quem está na porta, um sistema de câmera com acionamento Alexa: 3 etapas

Vídeo: Quem está na porta, um sistema de câmera com acionamento Alexa: 3 etapas
Vídeo: Acessando as CÂMERAS do ECHO SHOW - Monitoramento Residencial da Amazon Alexa 2024, Julho
Anonim
Quem está na porta, um sistema de câmera com atuação Alexa
Quem está na porta, um sistema de câmera com atuação Alexa
Quem está na porta, um sistema de câmera com atuação Alexa
Quem está na porta, um sistema de câmera com atuação Alexa
Quem está na porta, um sistema de câmera com atuação Alexa
Quem está na porta, um sistema de câmera com atuação Alexa

Às vezes, enquanto assiste à TV, você não quer atender a porta, a menos que seja importante. Este projeto permite que você visualize a pessoa na porta simplesmente dizendo ao dispositivo Echo da Amazon "Alexa, ligue o monitor da porta". Você verifica quem aparece na tela da TV e, em seguida, volta à programação normal da TV "Alexa, liga a TV". O sistema também pode ser valioso para adultos mais velhos ou crianças que estariam vulneráveis a serem explorados por vendedores, ladrões e semelhantes. Isso permite que a TV de tela grande do seu sistema de entretenimento seja o monitor da câmera não apenas para a câmera da porta da frente, mas para qualquer outra câmera de segurança que você possa ter; na verdade, pode até ser estendido para exibir vídeos de câmeras de internet, como câmeras de praia, etc.

Partes:

Sistema de entretenimento:

TV com várias entradas HDMI (a maioria dos aparelhos de TV tem)

Caixa de cabo ou DVR

Roteador e conexão à Internet via decodificador (pode não ser necessário se você tiver Wi-Fi)

Amazon Echo ("Alexa")

Harmony Hub

Máquinas fotográficas)

Câmera IP na porta da frente (tipo Power Over Ethernet -POE- preferido)

Raspberry Pi3 em uma caixa de projeto (Pi original pode funcionar) com cabo HDMI

Arduino Pro Mini 8 Mhz, 3.3v

Módulo IR (os tipos mais comuns funcionam)

Etapa 1: configuração, programação preliminar (teste)

Configuração, programação preliminar (teste)
Configuração, programação preliminar (teste)
Configuração, programação preliminar (teste)
Configuração, programação preliminar (teste)
Configuração, programação preliminar (teste)
Configuração, programação preliminar (teste)

Este projeto conta com o omxplayer Pi3 que decodifica vídeo com aceleração de hardware. O Omxplayer pode ser testado a partir de uma linha de comando no terminal Pi usando o formato rtsp: // user @ password @ ipaddress apropriado que sua câmera requer. O Pi deve ser conectado à Ethernet (embora o Pi3 também possa ser conectado via WiFi, mas não testado) e fisicamente localizado no centro de entretenimento para que o cabo de saída HDMI do Pi possa alcançar a entrada HDMI da TV. O módulo Arduino e IR se conectará ao Pi e transmitirá as informações obtidas ao ler os botões do controle remoto da TV pressionados. O Pi poderia fazer essa decodificação diretamente do módulo IR, mas sou melhor em programação em Arduino do que em programação em Python e, além disso, economiza recursos do processador para a tarefa principal do Pi de decodificar o (s) stream (s) de vídeo.

Como meu sistema de segurança tem várias câmeras, usei o visor de monitoramento alimentado por Pi como uma forma de exibir 4 câmeras ao mesmo tempo, além de exibir câmeras individuais em tela inteira. Siga essas instruções; no entanto, você provavelmente terá muitos problemas para fazer com que as câmeras sejam exibidas de maneira estável.

Um dos problemas é que os 4 tamanhos de janela listados no programa podem não se ajustar à resolução de sua TV. Descubra quais resoluções o seu monitor suporta, observando a resolução da câmera. A maioria das câmeras IP tem um stream de alta resolução (1080p) e um stream de baixa resolução (640x480), então se você quiser apenas um vídeo de alta resolução da porta da frente, escolha o formato de stream rtsp: // de alta resolução. Use o stream de baixa resolução para câmeras em 4 quadrantes, você não notará muita diferença com os tamanhos de imagem menores. Você pode ir com os tamanhos de janela do meu script bash (test.sh) (no modo de resolução 1080p, exibindo 4 câmeras de 640x480 de mesmo tamanho dimensionadas para caber). Caso contrário, use papel milimetrado para fazer o layout dos pixels da TV e, em seguida, esboce quantos retângulos deseja naquela área. Em seguida, descubra quantos vídeos de 640x480 caberão sem muita mudança de aspecto (esticar horizontalmente parece melhor do que verticalmente). Não gosto de fronteiras, então não calculei para elas. Numere os retângulos do canto superior esquerdo ao inferior direito 1, 2, 3.. etc. Em seguida, faça uma coluna de números de janela, para cada linha desses números escreva o pixel superior esquerdo x, y e o pixel inferior direito x, y. Esses números são então substituídos no script para obter uma exibição personalizada, você pode ter uma exibição 3 x 3, se desejar. Se você quiser apenas um monitor, basta comentar as outras 3 câmeras e definir o tamanho da janela para a resolução de tela inteira (e usar o stream rtsp de alta resolução) e intitular o script "test1.sh". Faça quantos scripts quiser, o programa btn.py Python os chamará conforme os pinos GPIO forem alterados pelo Arduino.

Um problema em obter uma exibição estável (parte superior da imagem boa, mas faixas verticais de imagem mais baixas) é que muitas câmeras transmitem muito melhor usando rtsp em vez de tcp (eu uso câmeras IP Hikvision de 2 a 5 Mp). Portanto, use "--avdict rtsp_transport: tcp" no omxplayer como mostrado. Outros comandos omxplayer úteis são volume (--vol -6000 para mudo) e buffer (--video queue x) onde x = 1 ou mais.

As configurações da câmera IP também podem causar problemas com o omxplayer. Todas as câmeras IP devem ser configuradas para os mesmos quadros por segundo ou a imagem será interrompida. Quando definido para taxas de quadro radicalmente diferentes, o tempo exibido em um carimbo de hora da câmera retrocedeu alguns segundos, depois avançou e retrocedeu etc. Certifique-se de que as janelas do omxplayer não se sobreponham ou a parte sobreposta piscará.

Etapa 2: juntando tudo

Juntar as peças
Juntar as peças

Você pode controlar manualmente a caixa de cabo e a TV para permitir que o Pi mostre a câmera da porta da frente. No entanto, isso requer alguns pressionamentos de botão, incluindo a mudança apropriada do controle remoto universal do modo de cabo para o modo de TV para permitir a mudança da fonte de entrada HDMI para o decodificador de câmera Pi (HDMI 2). Se você quiser a capacidade de mostrar telas de câmera adicionais, também terá que mudar o controle remoto universal para AUX para controlar o Arduino e, portanto, a seleção da câmera Pi. Para simplificar esse processo, use um Harmony Hub e o aplicativo Harmony associado para smartphone, ensinando-o a controlar a TV e o decodificador para visualização normal de TV em uma atividade e, em seguida, crie outra atividade para controlar o monitor de vídeo Pi. A atividade inclui ligar a TV, a entrada da TV para HDMI 2 e controlar os botões de 0 a 5 da TV NECx virtual (ou seja, o Arduino e o Pi). Isso permite controlar tudo por meio do aplicativo Harmony para smartphone. Para tornar as coisas ainda mais fáceis, vincule o aplicativo Amazon Echo Dot (Alexa) ao aplicativo Harmony para controlar por voz as funções de TV ou monitoramento de portas. O site do Harmony fornece detalhes sobre como habilitar essas novas habilidades do Alexa. Novas habilidades. Uma vez vinculadas às novas habilidades do Alexa, palavras-chave como "Ligar a TV" ou "Ligar o monitor da porta" permitirão as ações apropriadas sem a necessidade de infravermelho do controle remoto universal.

O Pi é conectado via Ethernet à sua LAN e via cabo HDMI à TV. Instalei um Pro Mini de 3,3 volts por meio de fios para o Pi como uma opção para adicionar troca de câmera adicional. O Pro Mini pode ser alimentado pelo pino de 3,3 volts do Pi. Um módulo IR se conecta ao pino 2 do Arduino e o esboço anexado decodifica a pressão do botão de 0 a 5 (na verdade, de 0 a 9, mas alguns pinos do Arduino ainda não estão conectados). As saídas do Arduino se conectam aos pinos GPIO de entrada digital do Pi, onde uma interrupção do script bash determina qual "botão" foi pressionado e, em seguida, interrompe uma opção de exibição de exibição e inicia outra.

Meu decodificador é da Spectrum (anteriormente Time Warner Cable), que é um DVR da Motorola modelo DCX3510. Ele usa o protocolo GI Cable para IR. A TV Sony usa o protocolo 2 da Sony. Achei que um ou outro desses códigos seria adequado para controlar o receptor Pi IR e funcionou, embora não fosse prático. O controle remoto esperaria comandos adicionais ou mudaria automaticamente a fonte de entrada também quando um botão de 0 a 9 fosse pressionado. Portanto, tive que usar um código diferente que não interagiria com o sintonizador de cabo ou TV. Descobri que meu controle remoto universal tinha um código previamente programado para um dispositivo AUX (não sei o que ele controlava) e decidi usá-lo. Os códigos produzidos disseram que ele usava NECx, um código de 32 bits, então eu inseri esses códigos de botão no esboço do Arduino IR_Rev_Codes_Pi_Monitor. Altere o programa se você tiver um modelo diferente usando o programa de recepção em IRLib2 e observe o fabricante, protocolo e valores hexadecimais para os botões pressionados.

Etapa 3: Conclusão

Conclusão
Conclusão
Conclusão
Conclusão
Conclusão
Conclusão

O monitor de porta é um projeto prático de automação residencial. Foi minha primeira experiência programando Pi com Python. Python permite programar uma interrupção, um recurso que pensei ser reservado para microcontroladores. A interrupção permite que o programa seja executado normalmente, executando o omxplayer, sem verificar constantemente se outra ação é necessária, como alterar a exibição para uma nova câmera. No entanto, se a interrupção ocorrer, o programa determina qual novo feed de vídeo deve ser ativado. O Arduino é configurado para fornecer um pulso para acionar a interrupção do Python. Se a interrupção ocorrer, o programa procura por qual saída particular do Arduino (correspondente ao botão remoto IR pressionado) está ativada. Finalmente, o programa elimina qualquer tela do omxplayer atual e inicia a nova tela do omxplayer.

Aprendi que o Pi não configura seus pinos GPIO para entrada como o Arduino faz por padrão - não é uma falha do Pi, mas é a forma como o Broadcom BCM2837 vem de fábrica. Eu gosto do processador de 4 núcleos e 1,2 Ghz, um computador de baixo custo e baixo consumo de energia que pode exibir ótimos vídeos em HD. O botão IR 1 mostra a tela quádrupla e os botões 2 a 5 mostram, cada um, uma única tela grande de uma câmera em alta definição.

Pressionar o botão remoto IR 0 cancela a exibição do vídeo e mostra a linha de comando Pi. Se você quiser assistir a vídeos do Youtube ou similares, use um teclado Bluetooth, digite "startx" e use o navegador Pi para navegar até o vídeo do Youtube e reproduzi-lo em tela inteira em alta definição.

Recomendado: