Table des matières:

Qui est à la porte, un système de caméra activé par Alexa : 3 étapes
Qui est à la porte, un système de caméra activé par Alexa : 3 étapes

Vidéo: Qui est à la porte, un système de caméra activé par Alexa : 3 étapes

Vidéo: Qui est à la porte, un système de caméra activé par Alexa : 3 étapes
Vidéo: L’INCROYABLE Ecran Pivotant d’Amazon (qui suit votre Visage) - Echo Show 10 2024, Juillet
Anonim
Qui est à la porte, un système de caméra activé par Alexa
Qui est à la porte, un système de caméra activé par Alexa
Qui est à la porte, un système de caméra activé par Alexa
Qui est à la porte, un système de caméra activé par Alexa
Qui est à la porte, un système de caméra activé par Alexa
Qui est à la porte, un système de caméra activé par Alexa

Parfois, en regardant la télévision, vous ne voulez pas répondre à la porte à moins que ce ne soit important. Ce projet vous permet de voir la personne à la porte en disant simplement à l'appareil Echo d'Amazon "Alexa, allume le moniteur de porte". Vous vérifiez qui apparaît sur l'écran du téléviseur, puis revenez à la programmation télévisée normale "Alexa, allumez le téléviseur". Le système pourrait également être utile aux personnes âgées ou aux enfants qui seraient susceptibles d'être exploités par des vendeurs, des voleurs, etc. Cela permet au téléviseur grand écran de votre système de divertissement d'être le moniteur d'affichage de la caméra non seulement pour la caméra de la porte d'entrée, mais pour toutes les autres caméras de sécurité que vous pourriez avoir; en fait, il pourrait même être étendu pour afficher la vidéo des caméras Internet, comme les caméras de plage, etc.

Les pièces:

Système de divertissement:

Téléviseur avec plusieurs entrées HDMI (la plupart des téléviseurs en ont)

Boîtier câble ou DVR

Routeur et connexion Internet via un décodeur (peut-être pas nécessaire si vous avez le WiFi)

Amazon Echo ("Alexa")

Centre d'harmonie

Appareils photo)

Caméra IP à la porte d'entrée (Power Over Ethernet -POE- type préféré)

Raspberry Pi3 dans une boîte de projet (le Pi d'origine peut fonctionner) avec un câble HDMI

Arduino Pro Mini 8 Mhz, 3.3v

Module IR (les types les plus courants fonctionneront)

Étape 1: configuration, programmation préliminaire (test)

Configuration, programmation préliminaire (test)
Configuration, programmation préliminaire (test)
Configuration, programmation préliminaire (test)
Configuration, programmation préliminaire (test)
Configuration, programmation préliminaire (test)
Configuration, programmation préliminaire (test)

Ce projet repose sur le Pi3 omxplayer qui décode la vidéo avec une accélération matérielle. Omxplayer peut être testé à partir d'une ligne de commande dans le terminal Pi en utilisant le format rtsp://user@password@ipaddress approprié requis par votre appareil photo. Le Pi doit être connecté à Ethernet (bien que le Pi3 puisse également être connecté via WiFi, mais pas testé) et physiquement situé au centre de divertissement afin que le câble de sortie HDMI du Pi puisse atteindre la prise d'entrée HDMI du téléviseur. L'Arduino et le module IR se connecteront au Pi et relayeront les informations obtenues en lisant les pressions sur les boutons de la télécommande du téléviseur. Le Pi pourrait effectuer ce décodage directement à partir du module IR, mais je suis meilleur en programmation Arduino qu'en programmation Python et en plus, il économise des ressources processeur pour la tâche principale du Pi de décoder le ou les flux vidéo.

Étant donné que mon système de sécurité comporte plusieurs caméras, j'ai utilisé l'écran de surveillance alimenté par Pi comme moyen d'afficher 4 caméras à la fois, ainsi que d'afficher des caméras individuelles en plein écran. Suivez ces instructions, mais vous aurez probablement beaucoup de problèmes pour que les caméras s'affichent de manière stable.

L'un des problèmes est que les 4 tailles de fenêtre répertoriées dans le programme peuvent ne pas correspondre à la résolution de votre téléviseur. Trouvez les résolutions prises en charge par votre moniteur tout en notant la résolution de vos caméras. La plupart des caméras IP ont un flux haute résolution (1080p) et un flux basse résolution (640x480), donc si vous voulez juste une vidéo haute résolution de la porte d'entrée, optez pour le format flux haute résolution rtsp://. Allez avec le flux basse résolution pour les caméras dans 4 quadrants, vous ne remarquerez pas beaucoup de différence avec les plus petites tailles d'image. Vous pouvez utiliser les tailles de fenêtre de mon script bash (test.sh) (en mode de résolution 1080p, affichant 4 caméras de taille égale 640x480 mises à l'échelle). Sinon, utilisez du papier quadrillé pour disposer les pixels de votre téléviseur, puis dessinez le nombre de rectangles que vous souhaitez dans cette zone. Ensuite, déterminez combien de vidéos 640x480 conviendront sans trop de changement d'aspect (l'étirement horizontal semble mieux que vertical). Je n'aime pas les frontières, donc je n'ai pas calculé pour elles. Numérotez les rectangles du haut à gauche au bas à droite 1, 2, 3..etc. Créez ensuite une colonne de numéros de fenêtre, pour chaque rangée de ces numéros, notez le pixel supérieur gauche x, y et le pixel inférieur droit x, y. Ces chiffres sont ensuite remplacés dans le script pour obtenir un affichage personnalisé, vous pouvez avoir un affichage 3 x 3 si vous le souhaitez. Si vous ne voulez qu'un seul affichage, commentez simplement les 3 autres caméras et définissez la taille de la fenêtre sur la résolution plein écran (et utilisez le flux rtsp haute résolution) et intitulez le script "test1.sh". Créez autant de scripts que vous le souhaitez, le programme Python btn.py les appellera au fur et à mesure que les broches GPIO seront modifiées par l'Arduino.

Un problème pour obtenir un affichage stable (le haut de l'image est bien, mais les stries verticales de l'image plus faibles) est que de nombreuses caméras diffusent beaucoup mieux en utilisant rtsp sur tcp (j'utilise des caméras IP Hikvision 2 à 5 Mp). Par conséquent, utilisez "--avdict rtsp_transport:tcp" dans omxplayer comme indiqué. D'autres commandes omxplayer utiles sont le volume (--vol -6000 pour mute) et le tampon (--video queue x) où x=1 ou plus.

Les paramètres de la caméra IP peuvent également causer des problèmes avec omxplayer. Toutes les caméras IP doivent être réglées sur les mêmes images par seconde ou l'image se brisera. Lorsqu'il est réglé sur des fréquences d'images radicalement différentes, l'heure affichée sur l'horodatage d'une caméra recule de quelques secondes, puis avance puis recule, etc. Assurez-vous que les fenêtres de votre omxplayer ne se chevauchent pas, sinon la partie qui se chevauche clignotera.

Étape 2: Assembler

Mettre ensemble
Mettre ensemble

Vous pouvez contrôler manuellement le décodeur et le téléviseur pour permettre au Pi d'afficher la caméra de la porte d'entrée. Cependant, cela nécessite plusieurs pressions sur les boutons, y compris le passage approprié de la télécommande universelle du mode câble au mode TV pour permettre de changer la source d'entrée HDMI vers le décodeur de la caméra Pi (HDMI 2). Si vous souhaitez pouvoir afficher des écrans de caméra supplémentaires, vous devez également basculer la télécommande universelle sur AUX pour contrôler l'Arduino et donc la sélection de la caméra Pi. Pour simplifier ce processus, utilisez un Harmony Hub et l'application pour smartphone Harmony associée, en lui apprenant à contrôler le téléviseur et le décodeur pour une visualisation normale de la télévision dans une activité, puis créez une autre activité pour contrôler le moniteur vidéo Pi. L'activité comprend l'allumage du téléviseur, l'entrée du téléviseur sur HDMI 2 et le contrôle des boutons virtuels NECx TV (c'est-à-dire les boutons Arduino et Pi) 0 à 5. Cela permet de tout contrôler via l'application pour smartphone Harmony. Pour rendre les choses encore plus faciles, associez l'application Amazon Echo Dot (Alexa) à l'application Harmony pour contrôler vocalement les fonctions de surveillance du téléviseur ou de la porte. Le site Web Harmony fournit des détails sur la façon d'activer ces nouvelles compétences Alexa. Nouvelles compétences. Une fois liés aux nouvelles compétences Alexa, des mots-clés tels que « Allumez le téléviseur » ou « Allumez le moniteur de porte » permettront les actions appropriées sans avoir besoin de l'IR de la télécommande universelle.

Le Pi est connecté via Ethernet à votre réseau local et via un câble HDMI au téléviseur. J'ai installé un Pro Mini de 3,3 volts via des fils au Pi en option pour ajouter une commutation de caméra supplémentaire. Le Pro Mini peut être alimenté par la broche 3,3 volts du Pi. Un module IR se connecte à la broche 2 de l'Arduino, et le croquis ci-joint décode le bouton appuyez sur 0 à 5 (en fait 0 à 9, mais certaines broches Arduino ne sont pas encore connectées). Les sorties Arduino se connectent aux broches GPIO d'entrée numérique du Pi, où une interruption de script bash détermine quel "bouton" a été enfoncé, puis arrête une option d'affichage et en démarre une autre.

Mon décodeur est de Spectrum (anciennement Time Warner Cable), qui est un Motorola DVR modèle DCX3510. Il utilise le protocole GI Cable pour IR. Le téléviseur Sony utilise le protocole Sony 2. Je pensais que l'un ou l'autre de ces codes conviendrait pour contrôler le récepteur IR Pi et l'un ou l'autre a fonctionné, même si cela s'est avéré peu pratique. La télécommande attendrait des commandes supplémentaires ou changerait automatiquement la source d'entrée lorsqu'un bouton 0 à 9 était enfoncé. Par conséquent, j'ai dû utiliser un code différent qui n'interagirait pas avec le tuner du câble ou la télévision. J'ai découvert que ma télécommande universelle avait un code préalablement programmé pour un appareil AUX (je ne sais pas ce qu'il contrôlait) et j'ai décidé de l'utiliser. Les codes produits indiquaient qu'il utilisait NECx, un code 32 bits, j'ai donc entré ces codes de bouton dans l'esquisse Arduino IR_Rev_Codes_Pi_Monitor. Modifiez le programme si vous avez un modèle différent en utilisant le programme de réception dans IRLib2 et notez le fabricant, le protocole et les valeurs hexadécimales des boutons enfoncés.

Étape 3: Conclusion

Conclusion
Conclusion
Conclusion
Conclusion
Conclusion
Conclusion

Le moniteur de porte est un projet de domotique pratique. C'était ma première expérience de programmation du Pi avec Python. Python permet de programmer une interruption, une fonctionnalité que je pensais réservée aux microcontrôleurs. L'interruption permet au programme de s'exécuter normalement, en exécutant omxplayer, sans vérifier constamment si une autre action est requise, comme changer l'affichage pour un nouveau flux de caméra. Cependant, si l'interruption se produit, le programme détermine alors quel nouveau flux vidéo doit être affiché. L'Arduino est configuré pour fournir une impulsion pour déclencher l'interruption Python. Si l'interruption se produit, le programme recherche quelle sortie Arduino particulière (correspondant au bouton de la télécommande IR enfoncé) est activée. Enfin, le programme tue tout affichage omxplayer actuel et démarre le nouvel affichage omxplayer.

J'ai appris que le Pi ne règle pas ses broches GPIO en entrée comme le fait l'Arduino par défaut - ce n'est pas une faute du Pi, mais c'est la façon dont le Broadcom BCM2837 est sorti d'usine. J'aime le processeur 4 cœurs, 1,2 Ghz, un ordinateur à faible consommation et à faible coût qui peut afficher de superbes vidéos HD. Le bouton IR 1 montre l'affichage quad, et les boutons 2 à 5 montrent chacun un seul grand écran d'une caméra en haute définition.

Appuyer sur le bouton de la télécommande IR 0 annule l'affichage vidéo et affiche la ligne de commande Pi. Si vous souhaitez regarder des vidéos Youtube ou similaires, utilisez un clavier Bluetooth, tapez "startx" et utilisez le navigateur Pi pour accéder à la vidéo Youtube et la lire en plein écran en haute définition.

Conseillé: