Inhoudsopgave:

Wie staat er voor de deur, een door Alexa geactiveerd camerasysteem - Ajarnpa
Wie staat er voor de deur, een door Alexa geactiveerd camerasysteem - Ajarnpa

Video: Wie staat er voor de deur, een door Alexa geactiveerd camerasysteem - Ajarnpa

Video: Wie staat er voor de deur, een door Alexa geactiveerd camerasysteem - Ajarnpa
Video: Ons advies: hoe krijg je geen spijt van je (internet) camera deurbel aankoop? Volg deze tips! 2024, November
Anonim
Wie staat er voor de deur, een door Alexa geactiveerd camerasysteem
Wie staat er voor de deur, een door Alexa geactiveerd camerasysteem
Wie staat er voor de deur, een door Alexa geactiveerd camerasysteem
Wie staat er voor de deur, een door Alexa geactiveerd camerasysteem
Wie staat er voor de deur, een door Alexa geactiveerd camerasysteem
Wie staat er voor de deur, een door Alexa geactiveerd camerasysteem

Soms wil je tijdens het tv-kijken de deur niet opendoen, tenzij het belangrijk is. Met dit project kun je de persoon aan de deur zien door simpelweg tegen Amazon's Echo-apparaat te zeggen "Alexa, zet de deurmonitor aan". Je kijkt wie er op het tv-scherm verschijnt en gaat dan terug naar de normale tv-programmering "Alexa, zet de tv aan". Het systeem kan ook waardevol zijn voor oudere volwassenen of kinderen die kwetsbaar zijn voor misbruik door verkopers, dieven en dergelijke. Hierdoor kan de grootbeeld-tv van uw entertainmentsysteem de cameraweergavemonitor zijn voor niet alleen de camera aan de voordeur, maar voor alle andere beveiligingscamera's die u mogelijk heeft; in feite zou het zelfs kunnen worden uitgebreid om video weer te geven van internetcamera's, zoals strandcamera's, enz.

Onderdelen:

Entertainment systeem:

TV met meerdere HDMI-ingangen (de meeste tv-toestellen hebben ze)

Kabel- of DVR-box

Router en internetverbinding via kabelbox (misschien niet nodig als je wifi hebt)

Amazon-echo ("Alexa")

Harmony Hub

camera('s)

IP-camera bij voordeur (voorkeur Power Over Ethernet -POE-type)

Raspberry Pi3 in een projectdoos (originele Pi werkt mogelijk) met HDMI-kabel

Arduino Pro Mini 8 Mhz, 3.3v

IR-module (de meest voorkomende typen werken)

Stap 1: Setup, voorlopige programmering (testen)

Setup, voorlopige programmering (testen)
Setup, voorlopige programmering (testen)
Setup, voorlopige programmering (testen)
Setup, voorlopige programmering (testen)
Setup, voorlopige programmering (testen)
Setup, voorlopige programmering (testen)

Dit project is gebaseerd op de Pi3 omxplayer die video decodeert met hardwareversnelling. Omxplayer kan worden getest vanaf een opdrachtregel in de Pi-terminal met behulp van het juiste rtsp://user@password@ipaddress-formaat dat uw camera vereist. De Pi moet zijn aangesloten op Ethernet (hoewel Pi3 ook via wifi kan worden aangesloten, maar niet is getest) en zich fysiek in het entertainmentcentrum moet bevinden, zodat de HDMI-uitgangskabel van de Pi de HDMI-ingang van de tv kan bereiken. De Arduino- en IR-module maken verbinding met de Pi en geven de informatie door die is verkregen door het indrukken van de afstandsbedieningsknop van de tv. De Pi zou deze decodering rechtstreeks vanuit de IR-module kunnen doen, maar ik ben beter in Arduino-programmering dan in Python-programmering en bovendien bespaart het processorbronnen voor de hoofdtaak van de Pi, namelijk het decoderen van de videostream(s).

Omdat mijn beveiligingssysteem meerdere camera's heeft, heb ik het Pi-aangedreven bewakingsdisplay gebruikt om 4 camera's tegelijk weer te geven, plus individuele camera's op volledig scherm weer te geven. Volg die instructies, maar u zult waarschijnlijk veel problemen hebben om de camera's op een stabiele manier weer te geven.

Een van de problemen is dat de 4 vensterformaten die in het programma worden vermeld, mogelijk niet passen bij uw specifieke tv-resolutie. Zoek uit welke resoluties uw monitor ondersteunt en let daarbij op de cameraresolutie die uw camera's hebben. De meeste IP-camera's hebben een stream met een hoge resolutie (1080p) en een stream met een lage resolutie (640x480), dus als je slechts één video met hoge resolutie van de voordeur wilt, ga dan voor het rtsp://-formaat voor streams met hoge resolutie. Ga voor de lage resolutie stream voor camera's in 4 kwadranten, je zult niet veel verschil merken met de kleinere beeldformaten. Je kunt kiezen voor mijn bash-script (test.sh) vensterformaten (in 1080p resolutie-modus, met 4 gelijke 640x480 camera's geschaald om te passen). Gebruik anders ruitjespapier om uw tv-pixels in te delen en schets vervolgens hoeveel rechthoeken u in dat gebied wilt. Zoek vervolgens hoeveel video's van 640 x 480 passen zonder al te veel aspect te veranderen (horizontaal uitrekken ziet er beter uit dan verticaal). Ik hou niet van grenzen, dus heb er niet voor gerekend. Nummer de rechthoeken van linksboven naar rechtsonder 1, 2, 3..etc. Maak vervolgens een kolom met vensternummers, noteer voor elke rij van die nummers de linkerbovenhoek x, y pixel en rechtsonder pixel x, y. Die nummers worden vervolgens in het script vervangen om een aangepaste weergave te krijgen, indien gewenst kunt u een weergave van 3 x 3 hebben. Als je maar één scherm wilt, becommentarieer dan de andere 3 camera's en maak de venstergrootte de volledige schermresolutie (en gebruik de rtsp-stream met hoge resolutie) en noem het script "test1.sh". Maak zoveel scripts als je wilt, het btn.py Python-programma roept ze op als de GPIO-pinnen worden gewijzigd door de Arduino.

Een probleem bij het verkrijgen van een stabiele weergave (bovenaan beeld prima, maar lagere beeldverticale strepen) is dat veel camera's veel beter streamen met rtsp over tcp (ik gebruik Hikvision 2 tot 5 Mp IP-camera's). Gebruik daarom "--avdict rtsp_transport:tcp" in omxplayer zoals weergegeven. Andere handige omxplayer-commando's zijn volume (--vol -6000 voor mute) en buffer (--video queue x) waarbij x=1 of meer.

IP-camera-instellingen kunnen ook problemen veroorzaken met omxplayer. Alle IP-camera's moeten op dezelfde frames per seconde worden ingesteld, anders valt het beeld uiteen. Wanneer ingesteld op radicaal verschillende framesnelheden, ging de tijd die op één cameratijdstempel werd weergegeven een paar seconden achteruit, dan vooruit en dan terug enz. Zorg ervoor dat uw omxplayer-vensters elkaar niet overlappen, anders zal het overlappende deel flikkeren.

Stap 2: Samenvoegen

Samenvoegen
Samenvoegen

U kunt de kabelbox en de tv handmatig bedienen, zodat de Pi de camera aan de voordeur kan laten zien. Dat vereist echter nogal wat druk op de knop, inclusief het correct schakelen van de universele afstandsbediening van kabelmodus naar tv-modus om de HDMI-ingangsbron te kunnen wijzigen naar de Pi-cameradecoder (HDMI 2). Als je de mogelijkheid wilt hebben om extra cameraschermen weer te geven, dan moet je ook de universele afstandsbediening naar AUX schakelen om de Arduino en dus de Pi-cameraselectie te bedienen. Om dit proces te vereenvoudigen, gebruikt u een Harmony Hub en de bijbehorende Harmony-smartphone-app, leert u deze de tv en kabelbox te bedienen voor normaal tv-kijken in één activiteit, en maakt u vervolgens een andere activiteit om de Pi-videomonitor te bedienen. De activiteit omvat het aanzetten van de tv, de tv-ingang naar HDMI 2 en het bedienen van de virtuele NECx TV (dwz de Arduino en Pi)-knoppen 0 tot en met 5. Hiermee kun je alles bedienen via de Harmony-smartphone-app. Om het nog gemakkelijker te maken, koppel je de Amazon Echo Dot (Alexa)-app aan de Harmony-app om de tv of deurbewakingsfuncties met je stem te bedienen. Op de Harmony-website vindt u informatie over het inschakelen van deze nieuwe Alexa-vaardigheden. Nieuwe vaardigheden. Eenmaal gekoppeld aan nieuwe Alexa-vaardigheden, zullen trefwoorden als "Turn On the TV" of "Turn on the Door Monitor" de juiste acties mogelijk maken zonder dat IR van de universele afstandsbediening nodig is.

De Pi is via Ethernet verbonden met je LAN en via HDMI-kabel met de tv. Ik heb een 3,3 volt Pro Mini via draden op de Pi geïnstalleerd als een optie om extra camerawisseling toe te voegen. De Pro Mini kan worden gevoed via de 3,3 volt-pin van de Pi. Een IR-module wordt aangesloten op pin 2 van de Arduino, en de bijgevoegde schets decodeert de knop druk op 0 tot 5 (eigenlijk 0 tot 9, maar sommige Arduino-pinnen zijn nog niet aangesloten). De Arduino-uitgangen maken verbinding met de GPIO-pinnen van de Pi met digitale ingang, waar een bash-scriptonderbreking bepaalt welke "knop" werd ingedrukt, vervolgens de ene weergaveoptie stopt en een andere start.

Mijn kabelbox is van Spectrum (voorheen Time Warner Cable), een Motorola DVR-model DCX3510. Het maakt gebruik van het GI Cable-protocol voor IR. De Sony TV maakt gebruik van Sony-protocol 2. Ik dacht dat de ene of de andere van die codes prima zou zijn om de Pi IR-ontvanger te bedienen en beide werkten, hoewel het niet praktisch bleek te zijn. De afstandsbediening zou extra commando's verwachten, of automatisch ook de ingangsbron veranderen wanneer een knop 0 tot 9 werd ingedrukt. Daarom moest ik een andere code gebruiken die geen interactie zou hebben met de kabeltuner of tv. Ik ontdekte dat mijn universele afstandsbediening een eerder geprogrammeerde code had voor een AUX-apparaat (ik weet niet wat het bestuurde) en besloot het te gebruiken. De geproduceerde codes zeiden dat het NECx gebruikte, een 32-bits code, dus ik heb die knopcodes ingevoerd in de Arduino IR_Rev_Codes_Pi_Monitor-schets. Wijzig het programma als u een ander model heeft door het ontvangstprogramma in IRLib2 te gebruiken en noteer de maker, het protocol en de hexadecimale waarden voor de ingedrukte knoppen.

Stap 3: Conclusie

Conclusie
Conclusie
Conclusie
Conclusie
Conclusie
Conclusie

De deurmonitor is een praktisch domotica-project. Het was mijn eerste ervaring met het programmeren van de Pi met Python. Python maakt het programmeren van een interrupt mogelijk, een functie waarvan ik dacht dat deze was gereserveerd voor microcontrollers. De interrupt zorgt ervoor dat het programma normaal kan draaien, met omxplayer, zonder constant te controleren of er een andere actie nodig is, zoals het veranderen van het scherm naar een nieuwe camerafeed. Als de interrupt optreedt, bepaalt het programma vervolgens welke nieuwe videofeed moet worden geopend. De Arduino is ingesteld om een puls te geven om de Python-interrupt te activeren. Als de interrupt optreedt, zoekt het programma naar welke bepaalde Arduino-uitgang (overeenkomend met de ingedrukte IR-afstandsbedieningsknop) is geactiveerd. Ten slotte doodt het programma alle huidige omxplayer-displays en start de nieuwe omxplayer-display.

Ik heb geleerd dat de Pi zijn GPIO-pinnen niet instelt op invoer zoals de Arduino standaard doet - geen fout van de Pi, maar het is de manier waarop de Broadcom BCM2837 uit de fabriek komt. Ik hou van de 4-core, 1,2 Ghz-processor, een energiezuinige, goedkope computer die geweldige HD-video kan weergeven. IR-knop 1 toont het quad-display en de knoppen 2 tot en met 5 tonen elk een enkel groot display van een camera in High Definition.

Als u op de IR-afstandsbedieningsknop 0 drukt, wordt de videoweergave geannuleerd en wordt de Pi-opdrachtregel weergegeven. Als je YouTube-video's of iets dergelijks wilt bekijken, gebruik dan een Bluetooth-toetsenbord, typ "startx" en gebruik de Pi-browser om naar de YouTube-video te navigeren en deze op volledig scherm in High Definition af te spelen.

Aanbevolen: