PiNG Video Doorbell 由 Raspberry Pi 提供支持,当访客按下按钮时,它会使用 Google Duo 在您的手机上与您进行视频通话。
PiNG Video Doorbell 由 Raspberry Pi 提供动力,复古风格地装在 1986 年对讲机和老式 Sony 磁带播放器中。
当按下门铃按钮时,Pi 会使用Google Duo进行高质量的视频通话,可以在手机、平板电脑或电脑上接听。让您在出门在外时(或在家但被猫咪困住时),可以通过 WiFi 和蜂窝网络运行,因此您甚至可以在外出散步时开门。
它还会在屋内发出标准的无线门铃作为故障保险,以防无法接听电话。
设置和代码非常简单,请继续阅读,我将展示如何在短短几个小时内以低于 50 英镑的价格从头开始制作自己的视频门铃(如果您已经拥有 Pi 和一些组件,则几乎不再需要任何额外的费用)。
我一直想用 Raspberry Pi 制作视频门铃,但直到最近我还没有找到一种简单的方法来进行视频通话。既可以在项目中使用,又可以让其他人直接重新创建。然而,这一切在最近发生了变化,当我读到有关基于浏览器的 Google Duo 版本已经发布的报道恍然大悟——这意味着它可以在不安装专用应用程序的情况下运行。
我已经研究过使用 Skype 和 WhatsApp 进行 Pi 通话的挑战,之后我正准备安装 Android 以尝试使用 Google Duo,但由于无法轻松集成 GPIO 接口而被推迟,直到上面那则振奋人心的消息。
阅读完文章后,我首先在我的 Windows 笔记本电脑上测试了 Duo,然后迅速在我的车间机器 Pi 2 上尝试使用 Chromium。这并不顺利,出现了 Duo 网站并让我登录,但是没有显示我的联系人列表或任何更改设置的选项。我决定考虑使用其他浏览器(文章说它也适用于 Firefox 和 Safari),并在更强大的 Pi 3 上进行测试。
我在 Pi 3 上连接了一个罗技网络摄像头,然后启动了 Chromium,令我惊讶的是,在调整了一些设置后,几秒钟后我就可以在客厅里给我妻子打电话了。我测试的网络摄像头有一个内置麦克风,即使在第一次综合测试通话中,质量也很棒。这是一个非常激动人心的时刻,释放了可视门铃项目的潜力以及许多其他可能性。
因此,使用键盘、鼠标和屏幕进行视频通话无疑是一种选择——但是如何使用无头树莓派和一些按钮进行这项工作呢?
应用操作
让 Duo 在 Chromium 中运行很棒,我以为我只是全屏运行它,但后来(实际上是偶然)我意识到它可能会“耗尽浏览器”运行,就像您可以“安装”网络应用程序一样在 Windows PC 上 - 方法如下:
转到 Pi 上 Chromium 中的 Google Duo 站点 (https://duo.google.com/)
使用您要用来拨打门铃的 Google 帐户登录
单击三个点(汉堡包)》 安装 Google Duo(如果您使用的不是最新的 Raspbian,则可能需要选择更多工具 》 添加到桌面
在出现的对话框中点击“添加”
- 桌面上会出现一个 Google Duo 快捷方式
然后双击桌面上的图标 Duo 打开,但就像一个应用程序,没有通常的 Chromium 家具。我不确定以这种方式运行它是否使用更少的 Pi 资源(似乎有意义?)但它确实使界面更清晰。
经过一些测试后,我为门铃设置了一个单独的谷歌帐户并将其链接到安卓手机上的电话号码,但如果你有一个现有的谷歌帐户并且你很乐意将它用于门铃,你可能不需要这样做。
它不会在每次启动时记住您的登录详细信息,但是一旦您打开它就会保持登录状态,我的已经运行了一个多星期而无需触摸它。在进行测试呼叫之前,您需要确保网络摄像头已插入并选择音频源,方法是单击“cog”设置图标和“Manage Sources”。可用的麦克风和扬声器选项很简单,您可以播放测试声音以确保它们正确 - 您必须在第一次执行此操作时在弹出窗口中授予权限,并且可能需要根据您的网络摄像头进行试验/音频设置。
保存源后,将视频形状设置为宽也是一个好主意,以便在门铃呼叫您时尽可能多地看到。要执行此操作,请单击联系人,就像您要拨打电话一样,然后单击视频预览右上角的“显示宽视频”矩形,然后按 X 返回。此设置将被记住,直到 Pi 重新启动。
鼠标地图
如果 Duo 是一个完整的应用程序,那么命令行选项可能可用,例如启动应用程序并立即呼叫特定联系人。在没有这个(现在?)的情况下,我需要找到一种通过按下 GPIO 按钮自动开始通话的方法。
为此,我使用了 Python 模块PyUserInput ,它可以让您对鼠标移动、点击和键盘敲击进行编程。
我的想法是设置一个脚本来等待按钮按下,然后将鼠标移动到“联系人”文本框,输入联系人的姓名,按“Enter”并单击“视频通话”。Duo 记得最后联系的人并将他们显示在屏幕中央,但我不想依赖这个,以防门铃叫错人(因为这曾经就在测试中发生过)!
10让鼠标在正确的位置单击(让应用程序全屏帮助)并找到正确的击键来模拟“Enter”键需要一些试验和错误,但它很有趣。在 GitHub 页面上还有一个名为 Position.py 的小脚本,用于显示鼠标坐标,非常有用。
解决了这个问题后,我添加了更多代码来根据 GPIO 按钮单击启动鼠标移动。这在测试中效果很好,一旦电话挂断,树莓派就会回到原来的屏幕,所以当再次按下门铃按钮时,它会重复同样的动作。
软件设置
经过大量试验后,我将设置过程改进为以下步骤。
全新(完整)安装 Raspbian 后,最好在连接显示器的情况下完成以下大部分设置。首先启用 VNC 服务器,最好登录/创建一个 VNC 帐户,以尽可能简单地连接到 Pi。在 Pi 无头运行的情况下,您需要在启动后连接并登录 Duo,这很简单,只需要几秒钟 - 我通常只使用手机来完成此操作。
VNC 可以在 Start 》 Preferences 》 Raspberry Pi Configuration(接口选项卡)下启用。因为 Pi 将无头运行,我们还需要告诉它假设连接了 HDMI 显示器,并手动设置分辨率(系统选项卡),以便脚本中的鼠标命令与 Web 应用程序上的元素对齐。我选择了选项 19,1280x720,如果您使用不同的分辨率,您可能需要在 PiNG.py 脚本中编辑鼠标坐标。
接下来我们需要从终端安装PyUserInput :
pip3 install PyUserInput
。。。然后从GitHub将PiNG.py 脚本下载到 Pi 上,我只是将它弹出到主 Pi 文件夹中。为了避免在每次重新启动后启动脚本,值得通过编辑全局自动启动文件将其设置为在桌面加载后自动运行:
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
并在底部添加以下行以指向脚本位置:
@python3 /home/pi/PiNG.py
重新启动后,脚本应自动运行。
由于 Pi 可能会等待一段时间让门铃响起(除非你真的很受欢迎),所以最好禁用默认的屏幕调光,因为这可能会干扰鼠标点击。与直觉相反,实现此目的的最佳方法是安装 Xscreensaver:
sudo apt-get install xscreensaver
安装后,您可以配置屏幕保护程序选项(开始 》 首选项 》 屏幕保护程序)并将其设置为禁用。
它本质上只是对门铃按钮进行编程,以执行一系列鼠标点击来控制屏幕上的 Duo Web 应用程序。除了它不是真的在屏幕上,因为 Pi 是无头运行的。
如果您已完成上述操作并且 Pi 已重新启动,您应该能够断开显示器(如果您使用过显示器),通过 VNC 从手机或 PC 连接到 Pi 并登录 Duo,将其设置为 full-屏幕,选择音频源并设置视频宽度,如上所述。完成后,您可以断开 VNC 连接,门铃就可以使用了!
音频
我知道音频对于这个项目很重要,因为如果邮递员听不到你的声音,那么远程与他交谈是没有意义的!我决定使用Pimoroni pHAT BEAT ,因为我有一个方便的——尽管在某些方面对于这个项目来说有点矫枉过正。
我真的只需要一个门铃单声道输出,但 pHAT BEAT 为两个扬声器提供立体声输出,以及一个漂亮的 LED VU 表。
将 pHAT 用于音频的唯一复杂之处在于它会位于 GPIO 接头上的所有引脚上——我需要其中的一些来连接门铃按钮和 LED。为了解决这个问题,我在去年的Raspberry Fields的派对包中添加了一顶 pico hat hack3r 。这是一个小巧但非常方便的电路板,基本上将 GPIO 输出一分为二,让您在连接 HAT 的同时仍然暴露一整套 GPIO 引脚。虽然这很好,但您必须小心不要与 HAT 已经使用的引脚冲突,所以我仔细检查了pinout.xyz并决定如下:
门铃按钮 - GPIO22(引脚 15)和隔壁的 3v3(引脚 17)
通知 LED - GPIO9 正极(引脚 21,通过电阻器),引脚 25 处负极
随着网络摄像头、音频、按钮和 LED 连接并正常工作,我现在有了一个可以工作的视频门铃——尽管它分布在整个工作台上。接下来我需要考虑如何使用它以及它会是什么样子。
额外的钟声
设置在替补席上运行良好,但 IRL 会发生什么?我想在外面只有一个门铃来避免混乱的访客,但同时想知道如果有人在我无法接听电话的情况下按门铃,或者如果有人在房子里没有听到会发生什么双人电话打来。
这些担忧的答案是在构建中包括一个标准的无线门铃发射器,它可以与我们现有的房子里的铃声配对。这样,即使构建的 Pi 部分由于某种原因停止工作,“正常”的门铃也会响起。
案例逻辑
一旦我证明了代码可以工作,接下来的事情就是决定该项目的案例。我希望它显然是一个门铃,但出于明显的安全原因,我不喜欢将一个完全连接的 Pi 挂在我家外面的想法。
我决定将项目一分为二——在屋外安装一个门铃单元,连接到屋内的 Pi 基站。朝这个方向发展有几个很好的理由:
更少的组件可以挤入外壳并暴露在元素中
更容易执行维护和升级
将我珍贵的 Pi 3B+ 固定在锁着的门后面
在网络摄像头上做出决定很容易——我的一个MotionEye安全摄像头已经使用 Microsoft Lifecam HD 3000 和 Pi Zero 24/7 运行了两年多,所以这是一个合乎逻辑的选择——尤其是因为它有一个集成的麦克风。许多其他网络摄像头与 Pi 配合得很好,你甚至可以使用标准的 Pi 摄像头——不过你需要一个单独的麦克风来捕捉音频。
外部设备也很简单,1986 年的对讲机!前段时间我买了 3 件这样的复古设备,并且在 2017 年只在Google Pi Intercom项目中使用了一个,所以备件很方便——而且我已经熟悉它的内部结构,并且相信我可以让所有东西都适合。
对于内部基本单元,我考虑只使用标准塑料项目盒,但由于当地 Maplin 已关闭,选择合适的匹配并不容易 - 所以我决定重新使用一些更旧的技术并安装 Pi在一个旧的磁带播放器里面。由于有足够的空间,所以效果非常好 - 这意味着 VU 表 LED 可以通过磁带窗口显示,这是一种方便的额外触摸。我还能够将盒式磁带播放器的原始扬声器连接到 Phat Beat 上的备用输出 - 这意味着铃声和语音将在屋内和室外播放。
要将两个单元连接在一起,我决定使用 6 芯报警电缆,因为它非常薄且易于使用,可以在每端添加一个连接块。
与往常一样,这些箱子在准备好使用之前需要进行一些拆卸和修改,所以一旦我剥离了原始电路,我就开始使用旋转工具清理内部。
对讲机是第一个,我不得不砍掉一个塑料柱为网络摄像头腾出空间,为广角镜头切出一个孔,并打磨掉许多突出物,以使扬声器之类的东西更容易安装。一旦我有了一块空白画布,我就会考虑如何适应各种组件。我需要腾出空间:
一个新的扬声器
两个杠杆微动开关
无线门铃电路
网络摄像头
电缆连接块
LED的小型原型板电路
以及最初的开关和机制 - 起初看起来很宽敞,但现在我开始怀疑了。
为了使这个过程更容易,我使用了Hitachi Pi TV Conversion 的一个方便的技巧,并首先构建了一个有机玻璃底盘来容纳所有组件。有机玻璃绝对是最理想的,因为您可以在标记在哪里切割孔时看到它。首先,我将它粗略地切割成合适的尺寸,然后钻孔,这样它就可以安装在对讲机现有的螺丝柱上。从这里我一个一个地添加组件,钻孔和切割孔以适合它们或为它们腾出空间。这样做的另一个好处是我能够在最终组装之前测试一切是否正常!
为了使网络摄像头适合,我必须小心地切掉它的很多塑料外壳,这样它就可以直接粘在广角镜头后面 - 如果你需要这样做,首先要撬开它的前面,不要砍掉像我一样用剪线钳和钳子在后面!
我对盒式磁带播放器不那么挑剔,并且无情地剥离了所有电路和组件,只留下一个空盒子。像大按钮这样的化妆品部件只是热粘合到位,我用一个红色的按钮填充了一个破碎的小灯窗孔。
为了让 pi 放在磁带窗口后面的正确位置,我首先将一个乐高板热粘到一个旧的Pi 盒的底部。然后,我在磁带播放器内的正确位置热粘合了一个匹配的板,以制作一个很好的半永久性配件 - GPIO 引脚可以在磁带门打开的情况下使用,但我想确保我可以将 Pi 取出来更换SD卡等没有任何麻烦。我已经学会了提前计划未来拆卸和维护的艰难方法!最后,我在磁带播放器的外部切掉了一些插槽,以便在组装后仍然可以使用 USB 和 HDMI 端口,以防万一。
组装和绘画
将有机玻璃底盘试装到对讲机中后,我给它涂了一层油漆 - 我为颜色苦恼了一段时间,试图在白色、亚光黑色和棕色之间进行选择,但选择了“Claret Red”进行更改。
最终组装非常简单,我将对讲机底盘热粘合到最后的外壳上,还将无线门铃电路安装在设备背面,以便于更换电池。最后一项工作是添加一个铭牌,我只是用不同的字体大小打印出来的——但是当我开始添加这个时,我意识到一些热胶从表壳上的一个小孔中渗出,蔓延到整个新鲜的油漆并堵塞铭牌槽。
-
树莓派
+关注
关注
116文章
1697浏览量
105502
发布评论请先 登录
相关推荐
评论