Tabla de contenido:

Who's at the Door, un sistema de cámara accionado por Alexa: 3 pasos
Who's at the Door, un sistema de cámara accionado por Alexa: 3 pasos

Video: Who's at the Door, un sistema de cámara accionado por Alexa: 3 pasos

Video: Who's at the Door, un sistema de cámara accionado por Alexa: 3 pasos
Video: ¿Problemas con Alexa? Soluciones a los problemas para configurar Alexa. 2024, Mes de julio
Anonim
Who's at the Door, un sistema de cámara accionado por Alexa
Who's at the Door, un sistema de cámara accionado por Alexa
Who's at the Door, un sistema de cámara accionado por Alexa
Who's at the Door, un sistema de cámara accionado por Alexa
Who's at the Door, un sistema de cámara accionado por Alexa
Who's at the Door, un sistema de cámara accionado por Alexa

A veces, mientras ve la televisión, no quiere abrir la puerta a menos que sea importante. Este proyecto te permite ver a la persona en la puerta simplemente diciéndole al dispositivo Echo de Amazon "Alexa, enciende el monitor de la puerta". Verifica quién aparece en la pantalla de TV, luego vuelve a la programación normal de TV "Alexa, enciende la TV". El sistema también podría ser valioso para los adultos mayores o los niños que serían vulnerables a ser aprovechados por vendedores, ladrones y similares. Esto permite que el televisor de pantalla grande de su sistema de entretenimiento sea el monitor de visualización de la cámara no solo para la cámara de la puerta principal, sino también para cualquier otra cámara de seguridad que pueda tener; de hecho, incluso podría extenderse para mostrar videos de cámaras de Internet, como cámaras de playa, etc.

Partes:

Sistema de entretenimiento:

TV con varias entradas HDMI (la mayoría de los televisores las tienen)

Caja de cable o DVR

Enrutador y conexión a Internet a través de caja de cable (puede que no sea necesario si tiene WiFi)

Amazon Echo ("Alexa")

Harmony Hub

Cámara (s)

Cámara IP en la puerta principal (se prefiere el tipo Power Over Ethernet -POE-)

Raspberry Pi3 en una caja de proyecto (el Pi original puede funcionar) con cable HDMI

Arduino Pro Mini 8 Mhz, 3.3v

Módulo de infrarrojos (los tipos más comunes funcionarán)

Paso 1: Configuración, programación preliminar (prueba)

Configuración, programación preliminar (prueba)
Configuración, programación preliminar (prueba)
Configuración, programación preliminar (prueba)
Configuración, programación preliminar (prueba)
Configuración, programación preliminar (prueba)
Configuración, programación preliminar (prueba)

Este proyecto se basa en el Pi3 omxplayer que decodifica video con aceleración de hardware. Omxplayer se puede probar desde una línea de comando en la terminal Pi usando el formato rtsp: // usuario @ contraseña @ direcciónip apropiado que requiere su cámara. El Pi debe estar conectado a Ethernet (aunque Pi3 también podría conectarse a través de WiFi, pero no probado) y ubicado físicamente en el centro de entretenimiento para que el cable de salida HDMI del Pi pueda llegar al conector de entrada HDMI del televisor. El módulo Arduino e IR se conectará al Pi y transmitirá la información obtenida al leer las pulsaciones de los botones del control remoto del televisor. El Pi podría hacer esta decodificación directamente desde el módulo IR, pero soy mejor en la programación de Arduino que en la programación de Python y, además, ahorra recursos del procesador para la tarea principal del Pi de decodificar el flujo de video (s).

Dado que mi sistema de seguridad tiene varias cámaras, utilicé la pantalla de monitoreo alimentada por Pi como una forma de mostrar 4 cámaras a la vez, además de mostrar cámaras individuales en pantalla completa. Siga esas instrucciones, sin embargo, probablemente tendrá muchos problemas para que las cámaras se muestren de manera estable.

Uno de los problemas es que los 4 tamaños de ventana enumerados en el programa pueden no ajustarse a la resolución de su televisor en particular. Encuentre qué resoluciones admite su monitor y observe la resolución de la cámara que tienen sus cámaras. La mayoría de las cámaras IP tienen una transmisión de alta resolución (1080p) y una de baja resolución (640x480), por lo que si solo desea un video de alta resolución de la puerta principal, elija el formato de transmisión de alta resolución rtsp: //. Opte por la transmisión de baja resolución para cámaras en 4 cuadrantes, no notará mucha diferencia con los tamaños de imagen más pequeños. Puede elegir los tamaños de ventana de mi script bash (test.sh) (en modo de resolución de 1080p, mostrando 4 cámaras de 640x480 de igual tamaño escaladas para ajustarse). De lo contrario, use papel cuadriculado para diseñar los píxeles de su televisor y luego dibuje cuántos rectángulos desea en esa área. A continuación, busque cuántos videos de 640x480 encajarán sin demasiado cambio de aspecto (estirar horizontalmente se ve mejor que verticalmente). No me gustan las fronteras, así que no las calculé. Numere los rectángulos de arriba a la izquierda a abajo a la derecha 1, 2, 3, etc. Luego haga una columna de números de ventana, para cada fila de esos números escriba el píxel x, y superior izquierdo y el píxel x, y inferior derecho. Luego, esos números se sustituyen en la secuencia de comandos para obtener una pantalla personalizada, puede tener una pantalla de 3 x 3 si lo desea. Si solo desea una pantalla, simplemente comente las otras 3 cámaras y haga que el tamaño de la ventana tenga la resolución de pantalla completa (y use el flujo rtsp de alta resolución) y coloque el título de la secuencia de comandos "test1.sh". Cree tantos scripts como desee, el programa btn.py Python los llamará a medida que Arduino cambie los pines GPIO.

Un problema para obtener una pantalla estable (la parte superior de la imagen está bien, pero las rayas verticales de la imagen son más bajas) es que muchas cámaras transmiten mucho mejor usando rtsp sobre tcp (yo uso cámaras IP Hikvision de 2 a 5 Mp). Por lo tanto, use "--avdict rtsp_transport: tcp" en omxplayer como se muestra. Otros comandos útiles de omxplayer son volumen (--vol -6000 para silenciar) y búfer (- cola de video x) donde x = 1 o más.

La configuración de la cámara IP también puede causar problemas con omxplayer. Todas las cámaras IP deben configurarse a los mismos fotogramas por segundo o la imagen se romperá. Cuando se establece en velocidades de cuadro radicalmente diferentes, el tiempo que se muestra en la marca de tiempo de una cámara en realidad retrocede unos segundos, luego avanza y luego retrocede, etc. Asegúrese de que las ventanas de omxplayer no se superpongan, o la parte superpuesta parpadeará.

Paso 2: armarlo

Poniendo todo junto
Poniendo todo junto

Puede controlar manualmente la caja de cable y el televisor para permitir que el Pi muestre la cámara de la puerta delantera. Sin embargo, eso requiere bastantes pulsaciones de botones, incluido el cambio apropiado del control remoto universal del modo de cable al modo de TV para permitir cambiar la fuente de entrada HDMI al decodificador de la cámara Pi (HDMI 2). Si desea la capacidad de mostrar pantallas de cámara adicionales, también debe cambiar el control remoto universal a AUX para controlar el Arduino y, por lo tanto, la selección de la cámara Pi. Para simplificar este proceso, use un Harmony Hub y la aplicación de teléfono inteligente Harmony asociada, enseñándole a controlar la TV y el decodificador para ver la TV normal en una Actividad, luego cree otra Actividad para controlar el monitor de video Pi. La actividad incluye encender el televisor, la entrada del televisor a HDMI 2 y controlar los botones virtuales de NECx TV (es decir, Arduino y Pi) del 0 al 5. Esto permite controlar todo a través de la aplicación de teléfono inteligente Harmony. Para facilitar aún más las cosas, vincule la aplicación Amazon Echo Dot (Alexa) con la aplicación Harmony para controlar por voz el televisor o las funciones de monitoreo de puertas. El sitio web de Harmony proporciona detalles sobre cómo habilitar estas nuevas habilidades de Alexa. Nuevas habilidades. Una vez vinculado con las nuevas habilidades de Alexa, palabras clave como "Encienda el televisor" o "Encienda el monitor de la puerta" permitirán las acciones apropiadas sin necesidad de IR desde el control remoto universal.

El Pi está conectado a través de Ethernet a su LAN y mediante un cable HDMI al televisor. Instalé un Pro Mini de 3.3 voltios a través de cables al Pi como una opción para agregar conmutación de cámara adicional. El Pro Mini se puede alimentar desde el pin de 3.3 voltios del Pi. Un módulo IR se conecta al pin 2 del Arduino, y el boceto adjunto decodifica el botón, presione 0 a 5 (en realidad, 0 a 9, pero algunos pines de Arduino aún no están conectados). Las salidas de Arduino se conectan a los pines GPIO de entrada digital del Pi, donde una interrupción del script bash determina qué "botón" se presionó, luego detiene una opción de visualización de pantalla e inicia otra.

Mi decodificador de cable es de Spectrum (anteriormente Time Warner Cable), que es un DVR Motorola modelo DCX3510. Utiliza el protocolo GI Cable para IR. El televisor Sony usa el protocolo Sony 2. Pensé que uno u otro de esos códigos estaría bien para controlar el receptor de infrarrojos Pi y cualquiera de los dos funcionó, aunque resultó no ser práctico. El control remoto esperaría comandos adicionales, o cambiaría automáticamente la fuente de entrada también cuando se presionó un botón del 0 al 9. Por lo tanto, tuve que usar un código diferente que no interactuara con el sintonizador de cable o el televisor. Encontré que mi control remoto universal tenía un código previamente programado para un dispositivo AUX (no sé qué controlaba) y decidí usarlo. Los códigos producidos decían que usaba NECx, un código de 32 bits, así que ingresé esos códigos de botón en el boceto Arduino IR_Rev_Codes_Pi_Monitor. Cambie el programa si tiene un modelo diferente usando el programa de recepción en IRLib2 y anote el fabricante, el protocolo y los valores hexadecimales de los botones presionados.

Paso 3: Conclusión

Conclusión
Conclusión
Conclusión
Conclusión
Conclusión
Conclusión

El monitor de puerta es un proyecto práctico de domótica. Fue mi primera experiencia programando Pi con Python. Python permite programar una interrupción, una característica que pensé que estaba reservada para microcontroladores. La interrupción permite que el programa se ejecute normalmente, ejecutando omxplayer, sin verificar constantemente si se requiere otra acción, como cambiar la pantalla a una nueva alimentación de la cámara. Sin embargo, si se produce la interrupción, el programa determina qué nueva transmisión de video debe aparecer. El Arduino está configurado para proporcionar un pulso para activar la interrupción de Python. Si se produce la interrupción, el programa busca qué salida Arduino en particular (correspondiente al botón del control remoto IR presionado) está activada. Finalmente, el programa mata cualquier pantalla omxplayer actual e inicia la nueva pantalla omxplayer.

Aprendí que el Pi no configura sus pines GPIO para ingresar como lo hace el Arduino por defecto, no es una falla del Pi, pero es la forma en que el Broadcom BCM2837 es de fábrica. Me gusta el procesador de 4 núcleos y 1,2 Ghz, una computadora de bajo consumo y bajo costo que puede mostrar excelentes videos en alta definición. El botón IR 1 muestra la pantalla cuádruple, y los botones 2 a 5 muestran cada uno una sola pantalla grande de una cámara en alta definición.

Al presionar el botón 0 del control remoto IR se cancela la visualización de video y se muestra la línea de comando Pi. Si desea ver videos de Youtube o similares, use un teclado Bluetooth, escriba "startx" y use el navegador Pi para navegar hasta el video de Youtube y reproducirlo en pantalla completa en alta definición.

Recomendado: