Mục lục:

Who's at the Door, Hệ thống Camera do Alexa kích hoạt: 3 bước
Who's at the Door, Hệ thống Camera do Alexa kích hoạt: 3 bước

Video: Who's at the Door, Hệ thống Camera do Alexa kích hoạt: 3 bước

Video: Who's at the Door, Hệ thống Camera do Alexa kích hoạt: 3 bước
Video: INSTANTLY Know Who’s at your Door!! (without leaving the couch) 2024, Tháng mười một
Anonim
Who's at the Door, một hệ thống camera do Alexa kích hoạt
Who's at the Door, một hệ thống camera do Alexa kích hoạt
Who's at the Door, một hệ thống camera do Alexa kích hoạt
Who's at the Door, một hệ thống camera do Alexa kích hoạt
Who's at the Door, một hệ thống camera do Alexa kích hoạt
Who's at the Door, một hệ thống camera do Alexa kích hoạt

Đôi khi trong khi xem TV, bạn không muốn trả lời cửa trừ khi điều đó là quan trọng. Dự án này cho phép bạn xem người ở cửa bằng cách chỉ cần nói với thiết bị Echo của Amazon "Alexa, bật màn hình cửa". Bạn kiểm tra xem ai xuất hiện trên màn hình TV, sau đó quay lại chương trình TV bình thường "Alexa, bật TV". Hệ thống cũng có thể có giá trị đối với người lớn tuổi hoặc trẻ em, những hệ thống này sẽ dễ bị lợi dụng bởi những người bán hàng, kẻ trộm và những thứ tương tự. Điều này cho phép TV màn hình lớn của hệ thống giải trí của bạn trở thành màn hình hiển thị camera cho không chỉ camera cửa trước mà còn cho bất kỳ camera an ninh nào khác mà bạn có thể có; trên thực tế, nó thậm chí có thể được mở rộng để hiển thị video từ camera internet, như camera bãi biển, v.v.

Các bộ phận:

Hệ thống giải trí:

TV có một số đầu vào HDMI (hầu hết các TV đều có chúng)

Hộp cáp hoặc DVR

Bộ định tuyến và kết nối internet qua hộp cáp (có thể không cần thiết nếu bạn có WiFi)

Amazon Echo ("Alexa")

Trung tâm hài hòa

Máy ảnh

Camera IP ở cửa trước (Ưu tiên loại Power Over Ethernet -POE-)

Raspberry Pi3 trong hộp dự án (Pi gốc có thể hoạt động) với cáp HDMI

Arduino Pro Mini 8 Mhz, 3.3v

Mô-đun IR (hầu hết các loại phổ biến sẽ hoạt động)

Bước 1: Thiết lập, lập trình sơ bộ (thử nghiệm)

Thiết lập, lập trình sơ bộ (thử nghiệm)
Thiết lập, lập trình sơ bộ (thử nghiệm)
Thiết lập, lập trình sơ bộ (thử nghiệm)
Thiết lập, lập trình sơ bộ (thử nghiệm)
Thiết lập, lập trình sơ bộ (thử nghiệm)
Thiết lập, lập trình sơ bộ (thử nghiệm)

Dự án này dựa trên omxplayer Pi3 giúp giải mã video với khả năng tăng tốc phần cứng. Omxplayer có thể được chạy thử nghiệm từ một dòng lệnh trong thiết bị đầu cuối Pi bằng định dạng rtsp: // user @ password @ ipaddress thích hợp mà máy ảnh của bạn yêu cầu. Pi phải được kết nối với Ethernet (mặc dù Pi3 cũng có thể được kết nối qua WiFi, nhưng chưa được thử nghiệm) và được đặt tại trung tâm giải trí để cáp đầu ra HDMI của Pi có thể tiếp cận với giắc đầu vào HDMI của TV. Mô-đun Arduino và IR sẽ kết nối với Pi và chuyển tiếp thông tin thu được từ việc đọc các lần nhấn nút điều khiển từ xa của TV. Pi có thể thực hiện việc giải mã này trực tiếp từ mô-đun IR, nhưng tôi giỏi lập trình Arduino hơn lập trình Python và ngoài ra nó còn tiết kiệm tài nguyên bộ xử lý cho nhiệm vụ chính của Pi là giải mã (các) luồng video.

Vì hệ thống an ninh của tôi có nhiều camera, nên tôi đã sử dụng màn hình giám sát do Pi hỗ trợ như một cách để hiển thị 4 camera cùng một lúc, cộng với hiển thị từng camera trên toàn màn hình. Hãy làm theo các hướng dẫn đó, tuy nhiên, bạn có thể sẽ gặp rất nhiều vấn đề để máy ảnh hiển thị ổn định.

Một trong những vấn đề là 4 kích thước cửa sổ được liệt kê trong chương trình có thể không phù hợp với độ phân giải TV cụ thể của bạn. Tìm độ phân giải mà màn hình của bạn hỗ trợ trong khi lưu ý độ phân giải máy ảnh mà máy ảnh của bạn có. Hầu hết các camera IP có độ phân giải cao (1080p) và luồng có độ phân giải thấp (640x480), vì vậy nếu bạn chỉ muốn một video có độ phân giải cao của cửa trước, hãy sử dụng luồng có độ phân giải cao rtsp: // format. Đi với dòng độ phân giải thấp cho máy ảnh ở 4 góc phần tư, bạn sẽ không nhận thấy nhiều sự khác biệt với kích thước hình ảnh nhỏ hơn. Bạn có thể sử dụng kích thước cửa sổ bash script (test.sh) của tôi (ở chế độ độ phân giải 1080p, hiển thị 4 máy ảnh có kích thước bằng nhau 640x480 được chia tỷ lệ cho vừa vặn). Nếu không, hãy sử dụng giấy kẻ ô vuông để bố trí các pixel TV của bạn, sau đó phác thảo số lượng hình chữ nhật bạn muốn trong khu vực đó. Tiếp theo, tìm xem có bao nhiêu video 640x480 sẽ phù hợp mà không thay đổi quá nhiều khía cạnh (kéo dài theo chiều ngang sẽ đẹp hơn chiều dọc). Tôi không thích biên giới, vì vậy đã không tính toán cho chúng. Đánh số các hình chữ nhật từ trên cùng bên trái xuống dưới bên phải 1, 2, 3..vv. Sau đó, tạo một cột số cửa sổ, đối với mỗi hàng của những số đó, hãy viết x, y pixel phía trên bên trái và pixel phía dưới bên phải x, y. Những con số đó sau đó được thay thế vào tập lệnh để có được màn hình tùy chỉnh, bạn có thể có màn hình 3 x 3 nếu muốn. Nếu bạn chỉ muốn một màn hình, chỉ cần nhận xét 3 camera còn lại và đặt kích thước cửa sổ thành độ phân giải toàn màn hình (và sử dụng luồng rtsp độ phân giải cao) và đặt tiêu đề cho tập lệnh là "test1.sh". Tạo bao nhiêu tập lệnh tùy thích, chương trình Python btn.py sẽ gọi chúng lên khi các chân GPIO được Arduino thay đổi.

Một vấn đề trong việc có được màn hình ổn định (đầu hình ảnh đẹp, nhưng vệt dọc hình ảnh thấp hơn) là nhiều camera truyền trực tuyến tốt hơn nhiều bằng cách sử dụng rtsp qua tcp (tôi sử dụng camera IP Hikvision 2 đến 5 Mp). Do đó, hãy sử dụng "--avdict rtsp_transport: tcp" trong omxplayer như được hiển thị. Các lệnh omxplayer hữu ích khác là âm lượng (--vol -6000 để tắt tiếng) và bộ đệm (- hàng đợi video x) trong đó x = 1 hoặc nhiều hơn.

Cài đặt camera IP cũng có thể gây ra sự cố với omxplayer. Tất cả các camera IP phải được đặt ở cùng khung hình trên giây nếu không hình ảnh sẽ bị vỡ. Khi được đặt thành tốc độ khung hình hoàn toàn khác nhau, thời gian hiển thị trên một dấu thời gian của máy ảnh thực sự lùi lại trong vài giây, sau đó chuyển tiếp rồi quay lại, v.v. Hãy đảm bảo cửa sổ omxplayer của bạn không chồng chéo, nếu không phần chồng chéo sẽ nhấp nháy.

Bước 2: Kết hợp nó lại với nhau

Kết hợp nó lại với nhau
Kết hợp nó lại với nhau

Bạn có thể điều khiển hộp cáp và TV theo cách thủ công để cho phép Pi hiển thị camera phía trước. Tuy nhiên, điều đó đòi hỏi khá nhiều lần nhấn nút, bao gồm cả việc chuyển điều khiển từ xa đa năng thích hợp từ chế độ cáp sang chế độ TV để cho phép thay đổi nguồn đầu vào HDMI sang bộ giải mã máy ảnh Pi (HDMI 2). Nếu bạn muốn khả năng hiển thị màn hình máy ảnh bổ sung, thì bạn cũng phải chuyển điều khiển từ xa đa năng sang AUX để điều khiển Arduino và do đó lựa chọn máy ảnh Pi. Để đơn giản hóa quy trình này, hãy sử dụng Harmony Hub và ứng dụng Harmony trên điện thoại thông minh được liên kết, dạy nó điều khiển TV và hộp cáp để xem TV bình thường trong một Hoạt động, sau đó tạo một Hoạt động khác để điều khiển màn hình video Pi. Hoạt động bao gồm bật TV, đầu vào TV sang HDMI 2 và điều khiển TV NECx ảo (ví dụ: các nút Arduino và Pi) từ 0 đến 5. Điều này cho phép điều khiển mọi thứ thông qua ứng dụng Harmony trên điện thoại thông minh. Để mọi thứ trở nên dễ dàng hơn, hãy liên kết ứng dụng Amazon Echo Dot (Alexa) với ứng dụng Harmony để điều khiển bằng giọng nói TV hoặc các chức năng giám sát cửa ra vào. Trang web Harmony cung cấp thông tin chi tiết về cách kích hoạt các kỹ năng Alexa mới này. Kĩ năng mới. Sau khi được liên kết với các kỹ năng Alexa mới, các từ khóa như "Bật TV" hoặc "Bật màn hình cửa" sẽ cho phép các hành động thích hợp mà không cần IR từ điều khiển từ xa đa năng.

Pi được kết nối qua Ethernet với mạng LAN của bạn và qua cáp HDMI với TV. Tôi đã cài đặt một Pro Mini 3,3 volt qua dây đến Pi như một tùy chọn để thêm chuyển đổi máy ảnh bổ sung. Pro Mini có thể được cấp nguồn từ chân 3,3 volt của Pi. Một mô-đun IR kết nối với chân 2 của Arduino và bản phác thảo đính kèm giải mã nút nhấn từ 0 đến 5 (thực tế là 0 đến 9, nhưng một số chân Arduino chưa được kết nối). Các đầu ra Arduino kết nối với các chân GPIO đầu vào kỹ thuật số của Pi, nơi ngắt tập lệnh bash xác định "nút" nào được nhấn, sau đó dừng một tùy chọn chế độ xem hiển thị và bắt đầu một tùy chọn khác.

Hộp cáp của tôi là của Spectrum (trước đây là Time Warner Cable), là loại DVR của Motorola DCX3510. Nó sử dụng giao thức GI Cable cho IR. TV Sony sử dụng giao thức Sony 2. Tôi nghĩ rằng một trong hai mã đó sẽ ổn để điều khiển bộ thu Pi IR và một trong hai mã này đã hoạt động, mặc dù hóa ra nó không thực tế. Điều khiển từ xa sẽ yêu cầu các lệnh bổ sung hoặc tự động thay đổi nguồn đầu vào khi nhấn nút 0 đến 9. Do đó, tôi phải sử dụng một mã khác sẽ không tương tác với bộ dò cáp hoặc TV. Tôi thấy điều khiển từ xa đa năng của mình có mã được lập trình trước đó cho thiết bị AUX (không biết nó điều khiển bằng gì) và quyết định sử dụng nó. Các mã được tạo cho biết nó sử dụng NECx, một mã 32 bit, vì vậy tôi đã nhập các mã nút đó vào bản phác thảo Arduino IR_Rev_Codes_Pi_Monitor. Thay đổi chương trình nếu bạn có kiểu máy khác bằng cách sử dụng chương trình nhận trong IRLib2 và lưu ý trình tạo, giao thức và giá trị hex cho các nút được nhấn.

Bước 3: Kết luận

Phần kết luận
Phần kết luận
Phần kết luận
Phần kết luận
Phần kết luận
Phần kết luận

Màn hình cửa là dự án tự động hóa nhà thực tế. Đó là trải nghiệm đầu tiên của tôi khi lập trình Pi với Python. Python cho phép lập trình ngắt, một tính năng mà tôi nghĩ là dành riêng cho vi điều khiển. Việc ngắt cho phép chương trình chạy bình thường, chạy omxplayer mà không cần liên tục kiểm tra xem có cần phải thực hiện thêm hành động nào không như thay đổi màn hình thành nguồn cấp dữ liệu máy ảnh mới. Tuy nhiên, nếu xảy ra gián đoạn, chương trình sẽ xác định nguồn cấp dữ liệu video mới nào sẽ được hiển thị. Arduino được thiết lập để cung cấp một xung để kích hoạt ngắt Python. Nếu ngắt xảy ra, thì chương trình sẽ tìm kiếm đầu ra Arduino cụ thể nào (tương ứng với nút điều khiển từ xa IR được nhấn) được kích hoạt. Cuối cùng, chương trình sẽ giết mọi màn hình omxplayer hiện tại và bắt đầu hiển thị omxplayer mới.

Tôi được biết rằng Pi không đặt các chân GPIO của nó để đầu vào giống như Arduino làm theo mặc định - không phải lỗi của Pi, nhưng đó là cách Broadcom BCM2837 từ nhà máy. Tôi thích bộ vi xử lý 4 nhân, 1,2 Ghz, một máy tính giá rẻ, năng lượng thấp có thể hiển thị video HD tuyệt vời. Nút IR 1 hiển thị màn hình bốn và các nút từ 2 đến 5 hiển thị một màn hình lớn duy nhất của máy ảnh ở Độ nét cao.

Nhấn nút điều khiển từ xa IR 0 sẽ hủy hiển thị video và hiển thị dòng lệnh Pi. Nếu bạn muốn xem video Youtube hoặc những thứ tương tự, hãy sử dụng bàn phím Bluetooth, gõ "startx" và sử dụng trình duyệt Pi để điều hướng đến video Youtube và phát nó toàn màn hình ở Độ nét cao.

Đề xuất: