Cuprins:

Cine este la ușă, un sistem de acționare a camerei Alexa: 3 pași
Cine este la ușă, un sistem de acționare a camerei Alexa: 3 pași

Video: Cine este la ușă, un sistem de acționare a camerei Alexa: 3 pași

Video: Cine este la ușă, un sistem de acționare a camerei Alexa: 3 pași
Video: Ce înseamna semnul tau din nastere 2024, Iulie
Anonim
Cine este la ușă, un sistem de camere cu acționare Alexa
Cine este la ușă, un sistem de camere cu acționare Alexa
Cine este la ușă, un sistem de camere cu acționare Alexa
Cine este la ușă, un sistem de camere cu acționare Alexa
Cine este la ușă, un sistem de camere cu acționare Alexa
Cine este la ușă, un sistem de camere cu acționare Alexa

Uneori, când te uiți la televizor, nu vrei să răspunzi la ușă decât dacă este important. Acest proiect vă permite să vizualizați persoana de la ușă spunând pur și simplu dispozitivului Amazon Echo „Alexa, porniți monitorul ușii”. Verificați cine apare pe ecranul televizorului, apoi reveniți la programarea TV normală „Alexa, porniți televizorul”. Sistemul ar putea fi, de asemenea, de valoare pentru adulții mai în vârstă sau pentru copiii care ar fi vulnerabili la avantajul vânzătorilor, hoților și alții asemenea. Acest lucru permite televizorului cu ecran mare al sistemului dvs. de divertisment să fie monitorul afișajului camerei nu numai pentru camera din față, ci și pentru orice alte camere de securitate pe care le-ați putea avea; de fapt, ar putea fi extins chiar și pentru a afișa videoclipuri de pe camerele de internet, cum ar fi camele de plajă etc.

Părți:

Sistem de divertisment:

Televizor cu mai multe intrări HDMI (majoritatea televizoarelor le au)

Cablu sau cutie DVR

Router și conexiune la internet prin cablu (s-ar putea să nu fie necesară dacă aveți WiFi)

Amazon Echo („Alexa”)

Harmony Hub

Camere foto

Cameră IP la ușa din față (tip Power Over Ethernet -POE- preferat)

Raspberry Pi3 într-o cutie de proiect (originalul Pi poate funcționa) cu cablu HDMI

Arduino Pro Mini 8 Mhz, 3.3v

Modul IR (cele mai frecvente tipuri vor funcționa)

Pasul 1: Configurare, programare preliminară (testare)

Configurare, programare preliminară (testare)
Configurare, programare preliminară (testare)
Configurare, programare preliminară (testare)
Configurare, programare preliminară (testare)
Configurare, programare preliminară (testare)
Configurare, programare preliminară (testare)

Acest proiect se bazează pe Pi3 omxplayer care decodează video cu accelerare hardware. Omxplayer poate fi rulat de test de pe o linie de comandă în terminalul Pi utilizând formatul rtsp: // user @ password @ ipaddress adecvat pe care camera dvs. îl necesită. Pi ar trebui să fie conectat la Ethernet (deși Pi3 ar putea fi conectat și prin WiFi, dar nu testat) și amplasat fizic la centrul de divertisment, astfel încât cablul de ieșire HDMI al Pi să poată ajunge la mufa TV de intrare HDMI. Modulul Arduino și IR se vor conecta la Pi și vor transmite informațiile obținute din citirea apăsării butonului telecomenzii TV. Pi ar putea face această decodare direct din modulul IR, dar eu sunt mai bun la programarea Arduino decât la programarea Python și, în plus, economisește resursele procesorului pentru sarcina principală a lui Pi de decodare a fluxului (fluxurilor) video.

Deoarece sistemul meu de securitate are mai multe camere, am folosit afișajul de monitorizare alimentat cu Pi ca o modalitate de a afișa 4 camere simultan, plus afișarea camerelor individuale pe ecran complet. Urmați aceste instrucțiuni, cu toate acestea, probabil că veți avea o mulțime de probleme pentru ca camerele să se afișeze într-un mod stabil.

Una dintre probleme este că este posibil ca cele 4 dimensiuni ale ferestrelor enumerate în program să nu se potrivească rezoluției dvs. TV specifice. Găsiți ce rezoluții acceptă monitorul dvs., observând în același timp rezoluția camerei pe care o au camerele dvs. Majoritatea camerelor IP au un flux de rezoluție înaltă (1080p) și un rezoluție redusă (640x480), deci, dacă doriți doar un videoclip de înaltă rezoluție al ușii din față, mergeți cu formatul rtsp: // de înaltă rezoluție. Mergeți cu fluxul de rezoluție redusă pentru camerele din 4 cadrane, nu veți observa prea multe diferențe cu dimensiunile mai mici ale imaginii. Puteți merge cu scripturile mele bash (test.sh) dimensiunile ferestrelor (în modul de rezoluție 1080p, afișând 4 camere de dimensiuni egale 640x480 dimensionate pentru a se potrivi). În caz contrar, utilizați hârtie grafică pentru a dispune pixelii televizorului, apoi schițați câte dreptunghiuri doriți în acea zonă. În continuare, aflați câte videoclipuri de 640x480 se vor potrivi fără a se schimba prea mult aspectul (întinderea pe orizontală arată mai bine decât pe verticală). Nu-mi plac granițele, așa că nu am calculat pentru ele. Numerați dreptunghiurile de la stânga sus la dreapta jos 1, 2, 3..etc. Apoi faceți o coloană cu numere de fereastră, pentru fiecare rând al acelor numere scrieți x, y pixel stânga sus și pixelul dreapta jos x, y. Aceste numere sunt apoi înlocuite în script pentru a obține un afișaj personalizat, puteți avea un afișaj 3 x 3, dacă doriți. Dacă doriți doar un afișaj, trebuie doar să comentați celelalte 3 camere și să faceți dimensiunea ferestrei la rezoluția ecranului complet (și să utilizați fluxul rtsp de înaltă rezoluție) și să titlați scriptul „test1.sh”. Faceți câte scripturi doriți, programul btn.py Python le va apela pe măsură ce pinii GPIO vor fi schimbați de Arduino.

O problemă în obținerea unui afișaj stabil (partea superioară a imaginii este fină, dar imaginea este mai mică) este că multe camere difuzează mult mai bine folosind rtsp peste tcp (eu folosesc camere IP Hikvision de 2 până la 5 Mp). Prin urmare, utilizați „--avdict rtsp_transport: tcp” în omxplayer așa cum se arată. Alte comenzi utile omxplayer sunt volume (--vol -6000 pentru mut) și buffer (--video queue x) unde x = 1 sau mai mult.

Setările camerei IP pot provoca, de asemenea, probleme cu omxplayer. Toate camerele IP ar trebui să fie setate la aceleași cadre pe secundă, altfel imaginea se va rupe. Când este setat la rate de cadru radical diferite, timpul afișat pe o oră a camerei a mers de fapt înapoi pentru câteva secunde, apoi înainte și înapoi etc.

Pasul 2: Puneți-l împreună

Punând laolaltă
Punând laolaltă

Puteți controla manual cutia de cablu și televizorul pentru a permite dispozitivului Pi să arate camera de pe ușa din față. Cu toate acestea, acest lucru necesită câteva apăsări de butoane, inclusiv schimbarea corespunzătoare a telecomenzii universale din modul cablu în modul TV pentru a permite schimbarea sursei de intrare HDMI pe decodorul camerei Pi (HDMI 2). Dacă doriți posibilitatea de a afișa ecrane suplimentare ale camerei, atunci trebuie să comutați telecomanda universală pe AUX pentru a controla Arduino și, astfel, selecția camerei Pi. Pentru a simplifica acest proces, utilizați un Hub Harmony și aplicația de smartphone-uri Harmony asociată, învățându-l să controleze televizorul și cablul pentru vizionarea normală a televizorului într-o activitate, apoi creați o altă activitate pentru a controla monitorul video Pi. Activitatea include pornirea televizorului, intrarea TV la HDMI 2 și controlul butoanelor virtuale NECx TV (de exemplu, Arduino și Pi) de la 0 la 5. Acest lucru permite controlul tuturor prin intermediul aplicației smartphone Harmony. Pentru a face lucrurile și mai ușoare, conectați aplicația Amazon Echo Dot (Alexa) cu aplicația Harmony pentru a controla prin voce funcțiile TV sau de monitorizare a ușilor. Site-ul Harmony oferă detalii despre cum să activați aceste noi abilități Alexa. Abilități noi. Odată conectate cu noi abilități Alexa, cuvinte cheie precum „Porniți televizorul” sau „Porniți monitorul ușii” vor permite acțiunile corespunzătoare fără a avea nevoie de IR de la telecomanda universală.

Pi este conectat prin Ethernet la rețeaua LAN și prin cablu HDMI la televizor. Am instalat un Pro Mini de 3,3 volți prin cabluri pe Pi ca opțiune pentru a adăuga comutare suplimentară a camerei. Pro Mini poate fi alimentat de la pinul de 3,3 volți al Pi. Un modul IR se conectează la pinul 2 al Arduino, iar schița atașată decodează apăsarea butonului de la 0 la 5 (de fapt de la 0 la 9, dar unele pini Arduino nu sunt încă conectate). Ieșirile Arduino se conectează la pinii GPIO de intrare digitală ai Pi-ului, unde o întrerupere de script bash determină care „buton” a fost apăsat, apoi oprește o opțiune de vizualizare a afișajului și pornește alta.

Cutia mea de cablu este de la Spectrum (fost Time Time Warner Cable), care este un model Motorola DVR DCX3510. Folosește protocolul GI Cable pentru IR. Televizorul Sony folosește protocolul Sony 2. Am crezut că unul sau altul dintre aceste coduri ar fi bine să controleze receptorul IR Pi și fie că a funcționat, deși sa dovedit a nu fi practic. Telecomanda s-ar aștepta la comenzi suplimentare sau va schimba automat sursa de intrare și atunci când a fost apăsat un buton de la 0 la 9. Prin urmare, a trebuit să folosesc un alt cod care să nu interacționeze cu tunerul de cablu sau televizorul. Am descoperit că telecomanda mea universală avea un cod programat anterior pentru un dispozitiv AUX (nu știu ce controlează) și am decis să îl folosesc. Codurile produse spuneau că utilizează NECx, un cod pe 32 de biți, așa că am introdus acele coduri de butoane în schița Arduino IR_Rev_Codes_Pi_Monitor. Schimbați programul dacă aveți un model diferit utilizând programul de primire în IRLib2 și notați valorile producătorului, protocolului și hexagonal pentru butoanele apăsate.

Pasul 3: Concluzie

Concluzie
Concluzie
Concluzie
Concluzie
Concluzie
Concluzie

Monitorul ușii este un proiect practic de automatizare a casei. A fost prima mea experiență programând Pi cu Python. Python permite programarea unei întreruperi, o caracteristică pe care am crezut-o că este rezervată microcontrolerelor. Întreruperea permite programului să ruleze normal, rulând omxplayer, fără a verifica în mod constant dacă este necesară o altă acțiune, cum ar fi schimbarea afișajului într-un nou flux de cameră. Cu toate acestea, dacă are loc întreruperea, programul determină apoi ce flux video nou ar trebui să apară. Arduino este configurat pentru a oferi un impuls pentru a declanșa întreruperea Python. Dacă are loc întreruperea, atunci programul caută ce ieșire specială Arduino (corespunzătoare butonului IR de la distanță apăsat) este activată. În cele din urmă, programul ucide orice afișaj omxplayer actual și pornește noul afișaj omxplayer.

Am aflat că Pi nu își setează pinii GPIO la intrare, așa cum face Arduino în mod implicit - nu este o eroare a Pi, dar este modul în care Broadcom BCM2837 este din fabrică. Îmi place procesorul de 4 nuclee, 1.2 Ghz, un computer cu putere redusă, cu cost redus, care poate afișa videoclipuri HD grozave. Butonul IR 1 afișează afișajul quad, iar butoanele de la 2 la 5 arată fiecare un singur afișaj mare al unei camere în High Definition.

Apăsarea butonului de la distanță IR 0 anulează afișajul video și afișează linia de comandă Pi. Dacă doriți să vizionați videoclipuri Youtube sau altele asemenea, utilizați o tastatură Bluetooth, tastați „startx” și utilizați browserul Pi pentru a naviga la videoclipul Youtube și redați-l pe ecran complet în High Definition.

Recomandat: