PiNG Video Doorbell 由 Raspberry Pi 提供支持,當(dāng)訪客按下按鈕時(shí),它會(huì)使用 Google Duo 在您的手機(jī)上與您進(jìn)行視頻通話。
PiNG Video Doorbell 由 Raspberry Pi 提供動(dòng)力,復(fù)古風(fēng)格地裝在 1986 年對(duì)講機(jī)和老式 Sony 磁帶播放器中。
當(dāng)按下門鈴按鈕時(shí),Pi 會(huì)使用Google Duo進(jìn)行高質(zhì)量的視頻通話,可以在手機(jī)、平板電腦或電腦上接聽。讓您在出門在外時(shí)(或在家但被貓咪困住時(shí)),可以通過(guò) WiFi 和蜂窩網(wǎng)絡(luò)運(yùn)行,因此您甚至可以在外出散步時(shí)開門。
它還會(huì)在屋內(nèi)發(fā)出標(biāo)準(zhǔn)的無(wú)線門鈴作為故障保險(xiǎn),以防無(wú)法接聽電話。
設(shè)置和代碼非常簡(jiǎn)單,請(qǐng)繼續(xù)閱讀,我將展示如何在短短幾個(gè)小時(shí)內(nèi)以低于 50 英鎊的價(jià)格從頭開始制作自己的視頻門鈴(如果您已經(jīng)擁有 Pi 和一些組件,則幾乎不再需要任何額外的費(fèi)用)。
我一直想用 Raspberry Pi 制作視頻門鈴,但直到最近我還沒(méi)有找到一種簡(jiǎn)單的方法來(lái)進(jìn)行視頻通話。既可以在項(xiàng)目中使用,又可以讓其他人直接重新創(chuàng)建。然而,這一切在最近發(fā)生了變化,當(dāng)我讀到有關(guān)基于瀏覽器的 Google Duo 版本已經(jīng)發(fā)布的報(bào)道恍然大悟——這意味著它可以在不安裝專用應(yīng)用程序的情況下運(yùn)行。
我已經(jīng)研究過(guò)使用 Skype 和 WhatsApp 進(jìn)行 Pi 通話的挑戰(zhàn),之后我正準(zhǔn)備安裝 Android 以嘗試使用 Google Duo,但由于無(wú)法輕松集成 GPIO 接口而被推遲,直到上面那則振奮人心的消息。
閱讀完文章后,我首先在我的 Windows 筆記本電腦上測(cè)試了 Duo,然后迅速在我的車間機(jī)器 Pi 2 上嘗試使用 Chromium。這并不順利,出現(xiàn)了 Duo 網(wǎng)站并讓我登錄,但是沒(méi)有顯示我的聯(lián)系人列表或任何更改設(shè)置的選項(xiàng)。我決定考慮使用其他瀏覽器(文章說(shuō)它也適用于 Firefox 和 Safari),并在更強(qiáng)大的 Pi 3 上進(jìn)行測(cè)試。
我在 Pi 3 上連接了一個(gè)羅技網(wǎng)絡(luò)攝像頭,然后啟動(dòng)了 Chromium,令我驚訝的是,在調(diào)整了一些設(shè)置后,幾秒鐘后我就可以在客廳里給我妻子打電話了。我測(cè)試的網(wǎng)絡(luò)攝像頭有一個(gè)內(nèi)置麥克風(fēng),即使在第一次綜合測(cè)試通話中,質(zhì)量也很棒。這是一個(gè)非常激動(dòng)人心的時(shí)刻,釋放了可視門鈴項(xiàng)目的潛力以及許多其他可能性。
因此,使用鍵盤、鼠標(biāo)和屏幕進(jìn)行視頻通話無(wú)疑是一種選擇——但是如何使用無(wú)頭樹莓派和一些按鈕進(jìn)行這項(xiàng)工作呢?
應(yīng)用操作
讓 Duo 在 Chromium 中運(yùn)行很棒,我以為我只是全屏運(yùn)行它,但后來(lái)(實(shí)際上是偶然)我意識(shí)到它可能會(huì)“耗盡瀏覽器”運(yùn)行,就像您可以“安裝”網(wǎng)絡(luò)應(yīng)用程序一樣在 Windows PC 上 - 方法如下:
轉(zhuǎn)到 Pi 上 Chromium 中的 Google Duo 站點(diǎn) (https://duo.google.com/)
使用您要用來(lái)?yè)艽蜷T鈴的 Google 帳戶登錄
單擊三個(gè)點(diǎn)(漢堡包)》 安裝 Google Duo(如果您使用的不是最新的 Raspbian,則可能需要選擇更多工具 》 添加到桌面
在出現(xiàn)的對(duì)話框中點(diǎn)擊“添加”
- 桌面上會(huì)出現(xiàn)一個(gè) Google Duo 快捷方式
然后雙擊桌面上的圖標(biāo) Duo 打開,但就像一個(gè)應(yīng)用程序,沒(méi)有通常的 Chromium 家具。我不確定以這種方式運(yùn)行它是否使用更少的 Pi 資源(似乎有意義?)但它確實(shí)使界面更清晰。
經(jīng)過(guò)一些測(cè)試后,我為門鈴設(shè)置了一個(gè)單獨(dú)的谷歌帳戶并將其鏈接到安卓手機(jī)上的電話號(hào)碼,但如果你有一個(gè)現(xiàn)有的谷歌帳戶并且你很樂(lè)意將它用于門鈴,你可能不需要這樣做。
它不會(huì)在每次啟動(dòng)時(shí)記住您的登錄詳細(xì)信息,但是一旦您打開它就會(huì)保持登錄狀態(tài),我的已經(jīng)運(yùn)行了一個(gè)多星期而無(wú)需觸摸它。在進(jìn)行測(cè)試呼叫之前,您需要確保網(wǎng)絡(luò)攝像頭已插入并選擇音頻源,方法是單擊“cog”設(shè)置圖標(biāo)和“Manage Sources”??捎玫柠溈孙L(fēng)和揚(yáng)聲器選項(xiàng)很簡(jiǎn)單,您可以播放測(cè)試聲音以確保它們正確 - 您必須在第一次執(zhí)行此操作時(shí)在彈出窗口中授予權(quán)限,并且可能需要根據(jù)您的網(wǎng)絡(luò)攝像頭進(jìn)行試驗(yàn)/音頻設(shè)置。
保存源后,將視頻形狀設(shè)置為寬也是一個(gè)好主意,以便在門鈴呼叫您時(shí)盡可能多地看到。要執(zhí)行此操作,請(qǐng)單擊聯(lián)系人,就像您要撥打電話一樣,然后單擊視頻預(yù)覽右上角的“顯示寬視頻”矩形,然后按 X 返回。此設(shè)置將被記住,直到 Pi 重新啟動(dòng)。
鼠標(biāo)地圖
如果 Duo 是一個(gè)完整的應(yīng)用程序,那么命令行選項(xiàng)可能可用,例如啟動(dòng)應(yīng)用程序并立即呼叫特定聯(lián)系人。在沒(méi)有這個(gè)(現(xiàn)在?)的情況下,我需要找到一種通過(guò)按下 GPIO 按鈕自動(dòng)開始通話的方法。
為此,我使用了 Python 模塊PyUserInput ,它可以讓您對(duì)鼠標(biāo)移動(dòng)、點(diǎn)擊和鍵盤敲擊進(jìn)行編程。
我的想法是設(shè)置一個(gè)腳本來(lái)等待按鈕按下,然后將鼠標(biāo)移動(dòng)到“聯(lián)系人”文本框,輸入聯(lián)系人的姓名,按“Enter”并單擊“視頻通話”。Duo 記得最后聯(lián)系的人并將他們顯示在屏幕中央,但我不想依賴這個(gè),以防門鈴叫錯(cuò)人(因?yàn)檫@曾經(jīng)就在測(cè)試中發(fā)生過(guò))!
10讓鼠標(biāo)在正確的位置單擊(讓應(yīng)用程序全屏幫助)并找到正確的擊鍵來(lái)模擬“Enter”鍵需要一些試驗(yàn)和錯(cuò)誤,但它很有趣。在 GitHub 頁(yè)面上還有一個(gè)名為 Position.py 的小腳本,用于顯示鼠標(biāo)坐標(biāo),非常有用。
解決了這個(gè)問(wèn)題后,我添加了更多代碼來(lái)根據(jù) GPIO 按鈕單擊啟動(dòng)鼠標(biāo)移動(dòng)。這在測(cè)試中效果很好,一旦電話掛斷,樹莓派就會(huì)回到原來(lái)的屏幕,所以當(dāng)再次按下門鈴按鈕時(shí),它會(huì)重復(fù)同樣的動(dòng)作。
軟件設(shè)置
經(jīng)過(guò)大量試驗(yàn)后,我將設(shè)置過(guò)程改進(jìn)為以下步驟。
全新(完整)安裝 Raspbian 后,最好在連接顯示器的情況下完成以下大部分設(shè)置。首先啟用 VNC 服務(wù)器,最好登錄/創(chuàng)建一個(gè) VNC 帳戶,以盡可能簡(jiǎn)單地連接到 Pi。在 Pi 無(wú)頭運(yùn)行的情況下,您需要在啟動(dòng)后連接并登錄 Duo,這很簡(jiǎn)單,只需要幾秒鐘 - 我通常只使用手機(jī)來(lái)完成此操作。
VNC 可以在 Start 》 Preferences 》 Raspberry Pi Configuration(接口選項(xiàng)卡)下啟用。因?yàn)?Pi 將無(wú)頭運(yùn)行,我們還需要告訴它假設(shè)連接了 HDMI 顯示器,并手動(dòng)設(shè)置分辨率(系統(tǒng)選項(xiàng)卡),以便腳本中的鼠標(biāo)命令與 Web 應(yīng)用程序上的元素對(duì)齊。我選擇了選項(xiàng) 19,1280x720,如果您使用不同的分辨率,您可能需要在 PiNG.py 腳本中編輯鼠標(biāo)坐標(biāo)。
接下來(lái)我們需要從終端安裝PyUserInput :
pip3 install PyUserInput
。。。然后從GitHub將PiNG.py 腳本下載到 Pi 上,我只是將它彈出到主 Pi 文件夾中。為了避免在每次重新啟動(dòng)后啟動(dòng)腳本,值得通過(guò)編輯全局自動(dòng)啟動(dòng)文件將其設(shè)置為在桌面加載后自動(dòng)運(yùn)行:
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
并在底部添加以下行以指向腳本位置:
@python3 /home/pi/PiNG.py
重新啟動(dòng)后,腳本應(yīng)自動(dòng)運(yùn)行。
由于 Pi 可能會(huì)等待一段時(shí)間讓門鈴響起(除非你真的很受歡迎),所以最好禁用默認(rèn)的屏幕調(diào)光,因?yàn)檫@可能會(huì)干擾鼠標(biāo)點(diǎn)擊。與直覺(jué)相反,實(shí)現(xiàn)此目的的最佳方法是安裝 Xscreensaver:
sudo apt-get install xscreensaver
安裝后,您可以配置屏幕保護(hù)程序選項(xiàng)(開始 》 首選項(xiàng) 》 屏幕保護(hù)程序)并將其設(shè)置為禁用。
它本質(zhì)上只是對(duì)門鈴按鈕進(jìn)行編程,以執(zhí)行一系列鼠標(biāo)點(diǎn)擊來(lái)控制屏幕上的 Duo Web 應(yīng)用程序。除了它不是真的在屏幕上,因?yàn)?Pi 是無(wú)頭運(yùn)行的。
如果您已完成上述操作并且 Pi 已重新啟動(dòng),您應(yīng)該能夠斷開顯示器(如果您使用過(guò)顯示器),通過(guò) VNC 從手機(jī)或 PC 連接到 Pi 并登錄 Duo,將其設(shè)置為 full-屏幕,選擇音頻源并設(shè)置視頻寬度,如上所述。完成后,您可以斷開 VNC 連接,門鈴就可以使用了!
音頻
我知道音頻對(duì)于這個(gè)項(xiàng)目很重要,因?yàn)槿绻]遞員聽不到你的聲音,那么遠(yuǎn)程與他交談是沒(méi)有意義的!我決定使用Pimoroni pHAT BEAT ,因?yàn)槲矣幸粋€(gè)方便的——盡管在某些方面對(duì)于這個(gè)項(xiàng)目來(lái)說(shuō)有點(diǎn)矯枉過(guò)正。
我真的只需要一個(gè)門鈴單聲道輸出,但 pHAT BEAT 為兩個(gè)揚(yáng)聲器提供立體聲輸出,以及一個(gè)漂亮的 LED VU 表。
將 pHAT 用于音頻的唯一復(fù)雜之處在于它會(huì)位于 GPIO 接頭上的所有引腳上——我需要其中的一些來(lái)連接門鈴按鈕和 LED。為了解決這個(gè)問(wèn)題,我在去年的Raspberry Fields的派對(duì)包中添加了一頂 pico hat hack3r 。這是一個(gè)小巧但非常方便的電路板,基本上將 GPIO 輸出一分為二,讓您在連接 HAT 的同時(shí)仍然暴露一整套 GPIO 引腳。雖然這很好,但您必須小心不要與 HAT 已經(jīng)使用的引腳沖突,所以我仔細(xì)檢查了pinout.xyz并決定如下:
門鈴按鈕 - GPIO22(引腳 15)和隔壁的 3v3(引腳 17)
通知 LED - GPIO9 正極(引腳 21,通過(guò)電阻器),引腳 25 處負(fù)極
隨著網(wǎng)絡(luò)攝像頭、音頻、按鈕和 LED 連接并正常工作,我現(xiàn)在有了一個(gè)可以工作的視頻門鈴——盡管它分布在整個(gè)工作臺(tái)上。接下來(lái)我需要考慮如何使用它以及它會(huì)是什么樣子。
額外的鐘聲
設(shè)置在替補(bǔ)席上運(yùn)行良好,但 IRL 會(huì)發(fā)生什么?我想在外面只有一個(gè)門鈴來(lái)避免混亂的訪客,但同時(shí)想知道如果有人在我無(wú)法接聽電話的情況下按門鈴,或者如果有人在房子里沒(méi)有聽到會(huì)發(fā)生什么雙人電話打來(lái)。
這些擔(dān)憂的答案是在構(gòu)建中包括一個(gè)標(biāo)準(zhǔn)的無(wú)線門鈴發(fā)射器,它可以與我們現(xiàn)有的房子里的鈴聲配對(duì)。這樣,即使構(gòu)建的 Pi 部分由于某種原因停止工作,“正常”的門鈴也會(huì)響起。
案例邏輯
一旦我證明了代碼可以工作,接下來(lái)的事情就是決定該項(xiàng)目的案例。我希望它顯然是一個(gè)門鈴,但出于明顯的安全原因,我不喜歡將一個(gè)完全連接的 Pi 掛在我家外面的想法。
我決定將項(xiàng)目一分為二——在屋外安裝一個(gè)門鈴單元,連接到屋內(nèi)的 Pi 基站。朝這個(gè)方向發(fā)展有幾個(gè)很好的理由:
更少的組件可以擠入外殼并暴露在元素中
屋內(nèi)更好的 WiFi 信號(hào),增加了以太網(wǎng)選項(xiàng)
更容易執(zhí)行維護(hù)和升級(jí)
將我珍貴的 Pi 3B+ 固定在鎖著的門后面
在網(wǎng)絡(luò)攝像頭上做出決定很容易——我的一個(gè)MotionEye安全攝像頭已經(jīng)使用 Microsoft Lifecam HD 3000 和 Pi Zero 24/7 運(yùn)行了兩年多,所以這是一個(gè)合乎邏輯的選擇——尤其是因?yàn)樗幸粋€(gè)集成的麥克風(fēng)。許多其他網(wǎng)絡(luò)攝像頭與 Pi 配合得很好,你甚至可以使用標(biāo)準(zhǔn)的 Pi 攝像頭——不過(guò)你需要一個(gè)單獨(dú)的麥克風(fēng)來(lái)捕捉音頻。
外部設(shè)備也很簡(jiǎn)單,1986 年的對(duì)講機(jī)!前段時(shí)間我買了 3 件這樣的復(fù)古設(shè)備,并且在 2017 年只在Google Pi Intercom項(xiàng)目中使用了一個(gè),所以備件很方便——而且我已經(jīng)熟悉它的內(nèi)部結(jié)構(gòu),并且相信我可以讓所有東西都適合。
對(duì)于內(nèi)部基本單元,我考慮只使用標(biāo)準(zhǔn)塑料項(xiàng)目盒,但由于當(dāng)?shù)?Maplin 已關(guān)閉,選擇合適的匹配并不容易 - 所以我決定重新使用一些更舊的技術(shù)并安裝 Pi在一個(gè)舊的磁帶播放器里面。由于有足夠的空間,所以效果非常好 - 這意味著 VU 表 LED 可以通過(guò)磁帶窗口顯示,這是一種方便的額外觸摸。我還能夠?qū)⒑惺酱艓Рシ牌鞯脑紦P(yáng)聲器連接到 Phat Beat 上的備用輸出 - 這意味著鈴聲和語(yǔ)音將在屋內(nèi)和室外播放。
要將兩個(gè)單元連接在一起,我決定使用 6 芯報(bào)警電纜,因?yàn)樗浅1∏乙子谑褂?,可以在每端添加一個(gè)連接塊。
與往常一樣,這些箱子在準(zhǔn)備好使用之前需要進(jìn)行一些拆卸和修改,所以一旦我剝離了原始電路,我就開始使用旋轉(zhuǎn)工具清理內(nèi)部。
對(duì)講機(jī)是第一個(gè),我不得不砍掉一個(gè)塑料柱為網(wǎng)絡(luò)攝像頭騰出空間,為廣角鏡頭切出一個(gè)孔,并打磨掉許多突出物,以使揚(yáng)聲器之類的東西更容易安裝。一旦我有了一塊空白畫布,我就會(huì)考慮如何適應(yīng)各種組件。我需要騰出空間:
一個(gè)新的揚(yáng)聲器
兩個(gè)杠桿微動(dòng)開關(guān)
無(wú)線門鈴電路
網(wǎng)絡(luò)攝像頭
電纜連接塊
LED的小型原型板電路
以及最初的開關(guān)和機(jī)制 - 起初看起來(lái)很寬敞,但現(xiàn)在我開始懷疑了。
為了使這個(gè)過(guò)程更容易,我使用了Hitachi Pi TV Conversion 的一個(gè)方便的技巧,并首先構(gòu)建了一個(gè)有機(jī)玻璃底盤來(lái)容納所有組件。有機(jī)玻璃絕對(duì)是最理想的,因?yàn)槟梢栽跇?biāo)記在哪里切割孔時(shí)看到它。首先,我將它粗略地切割成合適的尺寸,然后鉆孔,這樣它就可以安裝在對(duì)講機(jī)現(xiàn)有的螺絲柱上。從這里我一個(gè)一個(gè)地添加組件,鉆孔和切割孔以適合它們或?yàn)樗鼈凃v出空間。這樣做的另一個(gè)好處是我能夠在最終組裝之前測(cè)試一切是否正常!
為了使網(wǎng)絡(luò)攝像頭適合,我必須小心地切掉它的很多塑料外殼,這樣它就可以直接粘在廣角鏡頭后面 - 如果你需要這樣做,首先要撬開它的前面,不要砍掉像我一樣用剪線鉗和鉗子在后面!
我對(duì)盒式磁帶播放器不那么挑剔,并且無(wú)情地剝離了所有電路和組件,只留下一個(gè)空盒子。像大按鈕這樣的化妝品部件只是熱粘合到位,我用一個(gè)紅色的按鈕填充了一個(gè)破碎的小燈窗孔。
為了讓 pi 放在磁帶窗口后面的正確位置,我首先將一個(gè)樂(lè)高板熱粘到一個(gè)舊的Pi 盒的底部。然后,我在磁帶播放器內(nèi)的正確位置熱粘合了一個(gè)匹配的板,以制作一個(gè)很好的半永久性配件 - GPIO 引腳可以在磁帶門打開的情況下使用,但我想確保我可以將 Pi 取出來(lái)更換SD卡等沒(méi)有任何麻煩。我已經(jīng)學(xué)會(huì)了提前計(jì)劃未來(lái)拆卸和維護(hù)的艱難方法!最后,我在磁帶播放器的外部切掉了一些插槽,以便在組裝后仍然可以使用 USB 和 HDMI 端口,以防萬(wàn)一。
組裝和繪畫
將有機(jī)玻璃底盤試裝到對(duì)講機(jī)中后,我給它涂了一層油漆 - 我為顏色苦惱了一段時(shí)間,試圖在白色、亞光黑色和棕色之間進(jìn)行選擇,但選擇了“Claret Red”進(jìn)行更改。
最終組裝非常簡(jiǎn)單,我將對(duì)講機(jī)底盤熱粘合到最后的外殼上,還將無(wú)線門鈴電路安裝在設(shè)備背面,以便于更換電池。最后一項(xiàng)工作是添加一個(gè)銘牌,我只是用不同的字體大小打印出來(lái)的——但是當(dāng)我開始添加這個(gè)時(shí),我意識(shí)到一些熱膠從表殼上的一個(gè)小孔中滲出,蔓延到整個(gè)新鮮的油漆并堵塞銘牌槽。
-
樹莓派
+關(guān)注
關(guān)注
116文章
1697瀏覽量
105461
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論