Spisu treści:

Kto jest przy drzwiach, system kamer uruchamiany Alexa: 3 kroki
Kto jest przy drzwiach, system kamer uruchamiany Alexa: 3 kroki

Wideo: Kto jest przy drzwiach, system kamer uruchamiany Alexa: 3 kroki

Wideo: Kto jest przy drzwiach, system kamer uruchamiany Alexa: 3 kroki
Wideo: 🤯 Bullish ShibaDoge Burn Hangout Lunched by Shiba Inu Shibarium Doge Coin Multi Millionaires Whales 2024, Listopad
Anonim
Kto jest przy drzwiach, system kamer uruchamiany przez Alexa
Kto jest przy drzwiach, system kamer uruchamiany przez Alexa
Kto jest przy drzwiach, system kamer uruchamiany przez Alexa
Kto jest przy drzwiach, system kamer uruchamiany przez Alexa
Kto jest przy drzwiach, system kamer uruchamiany przez Alexa
Kto jest przy drzwiach, system kamer uruchamiany przez Alexa

Czasami podczas oglądania telewizji nie chcesz otwierać drzwi, chyba że jest to ważne. Ten projekt pozwala zobaczyć osobę przy drzwiach, po prostu mówiąc urządzeniu Amazon Echo „Alexa, włącz monitor drzwi”. Sprawdzasz, kto pojawia się na ekranie telewizora, a następnie wracasz do normalnego programu telewizyjnego „Alexa, włącz telewizor”. System może być również przydatny dla osób starszych lub dzieci, które byłyby narażone na wykorzystywanie przez sprzedawców, złodziei i tym podobne. Dzięki temu telewizor z dużym ekranem systemu rozrywki może być monitorem nie tylko kamery przy drzwiach wejściowych, ale także innych kamer bezpieczeństwa, które możesz mieć; w rzeczywistości można go nawet rozszerzyć o wyświetlanie wideo z kamer internetowych, takich jak kamery plażowe itp.

Części:

System rozrywki:

Telewizor z kilkoma wejściami HDMI (większość telewizorów je posiada)

Kabel lub pudełko DVR

Router i połączenie internetowe przez dekoder kablowy (może nie być potrzebne, jeśli masz WiFi)

Amazon Echo ("Alexa")

Centrum harmonii

Aparat(y)

Kamera IP przy drzwiach wejściowych (preferowany typ Power Over Ethernet -POE-)

Raspberry Pi3 w pudełku projektowym (może działać oryginalne Pi) z kablem HDMI

Arduino Pro Mini 8 MHz, 3,3 V

Moduł IR (działa większość popularnych typów)

Krok 1: Konfiguracja, programowanie wstępne (testowanie)

Konfiguracja, programowanie wstępne (testowanie)
Konfiguracja, programowanie wstępne (testowanie)
Konfiguracja, programowanie wstępne (testowanie)
Konfiguracja, programowanie wstępne (testowanie)
Konfiguracja, programowanie wstępne (testowanie)
Konfiguracja, programowanie wstępne (testowanie)

Ten projekt opiera się na omxplayerze Pi3, który dekoduje wideo z akceleracją sprzętową. Omxplayer można uruchomić testowo z wiersza poleceń w terminalu Pi przy użyciu odpowiedniego formatu rtsp://user@password@ipaddress, którego wymaga kamera. Pi powinno być podłączone do Ethernetu (chociaż Pi3 może być również podłączone przez Wi-Fi, ale nie testowane) i fizycznie zlokalizowane w centrum rozrywki, aby kabel wyjściowy HDMI Pi mógł dotrzeć do gniazda wejściowego HDMI telewizora. Moduł Arduino i IR połączy się z Pi i przekaże informacje uzyskane z odczytania naciśnięć przycisków pilota telewizora. Pi może wykonać to dekodowanie bezpośrednio z modułu IR, ale jestem lepszy w programowaniu Arduino niż programowaniu w Pythonie, a poza tym oszczędza zasoby procesora dla głównego zadania Pi, jakim jest dekodowanie strumienia wideo.

Ponieważ mój system bezpieczeństwa ma wiele kamer, użyłem wyświetlacza monitorowania zasilanego przez Pi jako sposobu na wyświetlanie 4 kamer jednocześnie, a także wyświetlanie poszczególnych kamer na pełnym ekranie. Postępuj zgodnie z tymi instrukcjami, jednak prawdopodobnie będziesz mieć wiele problemów ze stabilnym wyświetlaniem kamer.

Jednym z problemów jest to, że 4 rozmiary okien wymienione w programie mogą nie pasować do określonej rozdzielczości telewizora. Sprawdź, jakie rozdzielczości obsługuje Twój monitor, jednocześnie zwracając uwagę na rozdzielczość aparatu. Większość kamer IP ma strumień o wysokiej rozdzielczości (1080p) i niskiej rozdzielczości (640x480), więc jeśli potrzebujesz tylko jednego wideo o wysokiej rozdzielczości z drzwi wejściowych, wybierz format strumienia o wysokiej rozdzielczości rtsp://. Wybierz strumień o niskiej rozdzielczości dla kamer w 4 ćwiartkach, nie zauważysz dużej różnicy przy mniejszych rozmiarach obrazu. Możesz przejść z moim skryptem bash (test.sh) rozmiarami okna (w trybie rozdzielczości 1080p, wyświetlając 4 kamery o równych rozmiarach 640x480 skalowane do dopasowania). W przeciwnym razie użyj papieru milimetrowego do rozmieszczenia pikseli telewizora, a następnie naszkicuj, ile prostokątów chcesz w tym obszarze. Następnie sprawdź, ile filmów w rozdzielczości 640x480 zmieści się bez zbytniej zmiany proporcji (rozciąganie w poziomie wygląda lepiej niż w pionie). Nie lubię granic, więc nie kalkulowałem dla nich. Ponumeruj prostokąty od lewego górnego rogu do prawego dolnego 1, 2, 3..itd. Następnie utwórz kolumnę liczb okien, dla każdego rzędu tych liczb zapisz lewy górny piksel x, y i prawy dolny piksel x, y. Te liczby są następnie podstawiane do skryptu, aby uzyskać niestandardowy wyświetlacz, w razie potrzeby możesz mieć wyświetlacz 3 x 3. Jeśli chcesz tylko jeden wyświetlacz, po prostu skomentuj pozostałe 3 kamery i ustaw rozmiar okna na rozdzielczość pełnego ekranu (i użyj strumienia rtsp o wysokiej rozdzielczości) i zatytułuj skrypt "test1.sh". Twórz tyle skryptów, ile chcesz, program btn.py Python wywoła je, gdy piny GPIO zostaną zmienione przez Arduino.

Jednym z problemów z uzyskaniem stabilnego wyświetlacza (góra obrazu w porządku, ale niższe pionowe smugi obrazu) jest to, że wiele kamer strumieniuje znacznie lepiej za pomocą rtsp przez tcp (używam kamer IP Hikvision 2 do 5 Mp). Dlatego użyj "--avdict rtsp_transport:tcp" w omxplayer, jak pokazano. Inne przydatne polecenia omxplayer to głośność (--vol -6000 dla wyciszenia) i bufor (--video queue x), gdzie x=1 lub więcej.

Ustawienia kamery IP mogą również powodować problemy z omxplayerem. Wszystkie kamery IP powinny być ustawione na te same klatki na sekundę, w przeciwnym razie obraz się rozpadnie. Po ustawieniu na radykalnie różne szybkości klatek, czas wyświetlany na jednym znaczniku czasu kamery faktycznie cofał się o kilka sekund, a następnie do przodu, do tyłu itd. Upewnij się, że okna omxplayer nie nachodzą na siebie, w przeciwnym razie nakładające się części będą migotać.

Krok 2: Łączenie w całość

Składanie tego razem
Składanie tego razem

Możesz ręcznie sterować dekoderem telewizji kablowej i telewizorem, aby umożliwić Pi pokazanie kamery w drzwiach przednich. Wymaga to jednak kilku naciśnięć przycisków, w tym odpowiedniego przełączenia uniwersalnego pilota z trybu kablowego na tryb TV, aby umożliwić zmianę źródła wejścia HDMI na dekoder kamery Pi (HDMI 2). Jeśli chcesz mieć możliwość wyświetlania dodatkowych ekranów kamer, to musisz również przełączyć pilota uniwersalnego na AUX, aby sterować Arduino, a tym samym wyborem kamery Pi. Aby uprościć ten proces, użyj Harmony Hub i powiązanej aplikacji Harmony na smartfona, ucząc go kontrolować telewizor i dekoder telewizji kablowej w celu normalnego oglądania telewizji w jednym działaniu, a następnie utwórz kolejne działanie, aby sterować monitorem wideo Pi. Działanie obejmuje włączanie telewizora, wejście telewizora do HDMI 2 i sterowanie wirtualnymi przyciskami NECx TV (tj. Arduino i Pi) od 0 do 5. Pozwala to kontrolować wszystko za pomocą aplikacji na smartfona Harmony. Aby było jeszcze łatwiej, połącz aplikację Amazon Echo Dot (Alexa) z aplikacją Harmony, aby sterować głosowo funkcjami monitorowania telewizora lub drzwi. Witryna Harmony zawiera szczegółowe informacje na temat włączania tych nowych umiejętności Alexa. Nowe umiejętności. Po połączeniu z nowymi umiejętnościami Alexa słowa kluczowe, takie jak „Włącz telewizor” lub „Włącz monitor drzwi”, umożliwią odpowiednie działania bez konieczności korzystania z podczerwieni z uniwersalnego pilota.

Pi jest podłączony przez Ethernet do sieci LAN i kablem HDMI do telewizora. Zainstalowałem 3,3 V Pro Mini przez przewody do Pi jako opcję dodania dodatkowego przełączania kamer. Pro Mini może być zasilany z 3,3 V pinu Pi. Moduł IR łączy się z pinem 2 Arduino, a załączony szkic dekoduje naciśnięcie przycisku od 0 do 5 (w rzeczywistości od 0 do 9, ale niektóre piny Arduino nie są jeszcze podłączone). Wyjścia Arduino łączą się z pinami wejścia cyfrowego GPIO Pi, gdzie przerwanie skryptu bash określa, który „przycisk” został naciśnięty, a następnie zatrzymuje jedną opcję widoku wyświetlacza i uruchamia inną.

Mój dekoder pochodzi od Spectrum (dawniej Time Warner Cable), czyli rejestratora DVR Motorola DCX3510. Wykorzystuje protokół GI Cable dla IR. Telewizor Sony korzysta z protokołu Sony 2. Pomyślałem, że jeden lub drugi z tych kodów będzie odpowiedni do sterowania odbiornikiem Pi IR i albo zadziałał, chociaż okazało się to niepraktyczne. Pilot oczekiwałby dodatkowych poleceń lub automatycznie zmieniał źródło sygnału wejściowego po naciśnięciu przycisku od 0 do 9. Dlatego musiałem użyć innego kodu, który nie współdziałałby z tunerem kablowym lub telewizorem. Stwierdziłem, że mój pilot uniwersalny miał wcześniej zaprogramowany kod do urządzenia AUX (nie wiem, czym sterował) i postanowiłem go użyć. Wyprodukowane kody mówiły, że używały 32-bitowego kodu NECx, więc wprowadziłem te kody przycisków do szkicu Arduino IR_Rev_Codes_Pi_Monitor. Zmień program, jeśli masz inny model, używając programu odbierającego w IRLib2 i zanotuj producenta, protokół i wartości szesnastkowe dla naciśniętych przycisków.

Krok 3: Wniosek

Wniosek
Wniosek
Wniosek
Wniosek
Wniosek
Wniosek

Monitor drzwi to praktyczny projekt automatyki domowej. To było moje pierwsze doświadczenie w programowaniu Pi w Pythonie. Python pozwala na programowanie przerwań, co moim zdaniem było zarezerwowane dla mikrokontrolerów. Przerwanie pozwala programowi działać normalnie, z uruchomionym omxplayerem, bez ciągłego sprawdzania, czy wymagana jest inna akcja, np. zmiana obrazu na nowy obraz z kamery. Jeśli jednak wystąpi przerwanie, program określa, który nowy kanał wideo powinien zostać przywrócony. Arduino jest skonfigurowane tak, aby dostarczać impuls wyzwalający przerwanie Pythona. W przypadku wystąpienia przerwania program wyszukuje, które konkretne wyjście Arduino (odpowiadające wciśniętemu przyciskowi pilota IR) jest aktywowane. Na koniec program zabija dowolny bieżący wyświetlacz omxplayer i uruchamia nowy wyświetlacz omxplayer.

Dowiedziałem się, że Pi nie ustawia swoich pinów GPIO na wejście, tak jak domyślnie robi to Arduino - nie jest to wina Pi, ale jest to sposób, w jaki Broadcom BCM2837 jest z fabryki. Podoba mi się 4-rdzeniowy procesor 1,2 Ghz, komputer o niskim poborze mocy i niskim koszcie, który może wyświetlać świetne wideo HD. Przycisk IR 1 pokazuje poczwórny wyświetlacz, a każdy z przycisków od 2 do 5 pokazuje pojedynczy duży wyświetlacz kamery w wysokiej rozdzielczości.

Naciśnięcie przycisku 0 pilota na podczerwień anuluje wyświetlanie wideo i pokazuje wiersz poleceń Pi. Jeśli chcesz oglądać filmy z YouTube lub tym podobne, użyj klawiatury Bluetooth, wpisz „startx” i użyj przeglądarki Pi, aby przejść do wideo z YouTube i odtwarzać go na pełnym ekranie w wysokiej rozdzielczości.

Zalecana: