第1步:
我总是喜欢使用Raspberry Pi制作一个可视门铃,但是直到最近我找不到一种简单的方法来进行视频通话,既可以在项目中工作,也可以直接让其他人重新创建。然而,当我阅读有关基于浏览器的Google Duo版本已经发布的报告时,这一切都在2月26日发生了变化 - 这意味着它可以在不安装专用应用程序的情况下运行。
已经研究过使用Skype和WhatsApp进行Pi调用的挑战我正在安装Android以尝试使用Google Duo,但由于无法轻松集成GPIO接口而被推迟,所以网络应用新闻真的很鼓舞人心。在吞噬文章之后,我首先在我的Windows笔记本电脑上测试了Duo,然后迅速移动到我的工作室机器上用Chromium尝试它,一个Pi 2.这不是很好,Duo网站出现了,让我登录,但是没有显示我的联系人列表或任何更改设置的选项。我决定使用其他浏览器(该文章说它也适用于Firefox和Safari),并在更强大的Pi 3上进行测试。
我将一个Logitech网络摄像头连接到Pi 3然后激起了Chromium,令我惊讶的是,在调整了几个设置之后,几秒钟之后能够在客厅里给我的妻子打电话。我测试的网络摄像头有一个内置麦克风,甚至在第一次抛出测试电话时质量也很好。这是一个非常激动人心的时刻,释放了视频门铃项目的潜力以及许多其他可能性。
因此,使用键盘,鼠标和屏幕进行视频通话是一个明确的目标 - 但如何使用无头Pi和按钮进行视频通话?
第2步:Appy Duo
让Duo在Chromium中运行很棒,我假设我只是全屏运行,但后来(实际上是偶然的)我意识到它可以“运行浏览器”,就像你可以“安装”一样“Windows PC上的网络应用程序 - 方法如下:
- 访问Pi上的Chromium中的Google Duo网站(https://duo.google.com/)
-使用您想要用来进行门铃呼叫的Google帐户登录
- 点击三个点(汉堡包)》安装Google Duo(如果您没有使用最新的Raspbian,则可能需要选择更多工具》添加到桌面
- 在出现的对话框中单击“添加”
- 桌面上会出现Google Duo快捷方式
如果您再双击桌面上的图标Duo会打开,但就像应用程序一样,没有通常的Chromium家具。我不确定以这种方式运行它是否使用较少的Pi资源(似乎有意义?)但它确实使接口变得更清晰。
经过一些测试我为其设置了一个单独的谷歌帐户门铃并将其链接到Android手机上的电话号码 - 如果你有一个现有的谷歌账户并且你很乐意将它用于门铃,你可能不需要这样做。
它没有记住每次发布时的登录详细信息,但是一旦打开它就会保持登录状态,我已经运行了一个多星期而不必触摸它。在进行测试呼叫之前,您需要确保已插入网络摄像头并选择音频源,方法是单击“cog”设置图标和“Manage Sources”。麦克风和麦克风扬声器选项很简单,您可以播放测试声音以确保它们是正确的 - 您必须在第一次执行此操作时通过弹出窗口授予权限,并且可能需要根据您的网络摄像头/音频设置进行试验。
保存信号源时,最好将视频形状设置为“宽”,以便在门铃呼叫时尽可能多地看到。要执行此操作,请单击联系人,就像您要打电话一样,然后单击视频预览顶部的“显示宽视频”矩形,然后点击X返回。重新启动Pi之前,将记住此设置。
第3步:鼠标映射
如果Duo是一个完整的应用程序,那么命令行选项可能是可用的,例如启动应用程序并立即致电特定联系人。如果没有这个(现在?),我需要找到一种方法,通过按下GPIO按钮自动开始通话。
为此,我使用了Python模块PyUserInput,它允许您编写鼠标移动,点击和键盘敲击。
想法是设置一个脚本等待按下按钮,然后将鼠标移动到“联系人”文本框,输入联系人姓名,按“Enter”并单击“视频通话” 。 Duo记得最后联系的人并将其显示在屏幕中央,但我不想依赖这个,以防门铃叫错人(这发生在测试中 - 对不起Harry)!
需要一些试验和错误才能让鼠标在正确的位置点击(让应用程序全屏帮助)并找到正确的按键来模拟“回车”键是一样的,但它很有趣。在GitHub页面上还有一个名为Position.py的小脚本,它显示了鼠标坐标,这非常有用。
解决了这个问题后,我又添加了一些代码来启动鼠标移动基于GPIO按钮单击。这在测试中非常有效,一旦电话挂断电话,Pi就会回到原来的屏幕,所以当再次按下门铃按钮时,它会重复同样的动作。
第4步:软件设置
经过大量的实验,我将设置过程细化为以下步骤。
全新安装(完整) Raspbian最好在连接显示器的情况下完成下面的大部分设置。首先启用VNC服务器,理想情况下登录/创建VNC帐户,以尽可能简单地连接到Pi。由于Pi无头运行,你需要在启动后连接并登录到Duo,这很简单,只需几秒钟 - 我通常只是用手机。
可以在“开始”》“首选项”》“Raspberry Pi配置”(“接口”选项卡)下启用VNC。由于Pi将无头运行,我们还需要告诉它假设已连接HDMI监视器,并手动设置分辨率(系统选项卡),以便脚本中的鼠标命令与Web应用程序上的元素对齐。我选择了选项19,1280x720,如果你使用不同的分辨率,你可能需要在PiNG.py脚本中编辑鼠标坐标。
接下来我们需要从终端安装PyUserInput:
pip3 install PyUserInput
。..并将PiNG.py脚本从GitHub下载到Pi上,我只是在主Pi文件夹中弹出它。为了节省在每次重新启动后必须启动脚本,通过编辑全局自动启动文件,值得将其设置为在桌面加载后自动运行:
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
。..并添加以下内容在底部的行指向脚本位置:
@python3 /home/pi/PiNG.py
重新启动后,脚本应该自动运行。
因为Pi可能会等待一段时间响起门铃(除非你真的很受欢迎),最好禁用默认的屏幕变暗,因为这可能会干扰鼠标点击。反直觉地说,实现此目的的最佳方法是安装Xscreensaver:
sudo apt-get install xscreensaver
。..安装后您可以配置屏幕保护程序选项(开始》首选项》屏幕保护程序)并将其设置为已禁用
Python代码在GitHub上非常简单 - 它实际上只是对门铃按钮进行编程,以执行一系列鼠标点击来控制屏幕上的Duo Web应用程序。除了它没有真正在屏幕上,因为Pi正在无头运行。
如果您已完成上述操作并且Pi已重新启动,您应该能够断开显示器(如果您使用过),请连接到通过手机或PC上的Pi通过VNC登录到Duo,将其设置为全屏,选择音频源并设置视频宽度,如上所述。一旦完成,您可以断开VNC并且门铃已准备好使用!
步骤5:Phat音频
我知道音频对于这个项目来说很重要,因为如果他不能正确地听到你的话,就没有必要远程与邮递员交谈!我决定使用Pimoroni pHAT BEAT,因为我有一个方便 - 虽然在某些方面对于这个项目来说有点过分。
我只需要一个单声道输出用于门铃,但是pHAT BEAT为两个扬声器提供立体声输出,以及一个漂亮的LED VU表。
关于安装和安装没什么可说的。设置,我按照说明进行了操作。立即运行,听取测试文件的催眠“前左,前右”。
使用pHAT进行音频的唯一复杂因素是它将位于GPIO接头上的所有引脚上 - 我需要其中一些来连接门铃按钮和LED。为了解决这个问题,我添加了一个pico hat hack3r - 在去年的Raspberry Fields的派对包中找到了。它是一个小巧但非常方便的电路板,它基本上将GPIO输出分成两部分,让您在仍然暴露全套GPIO引脚的同时连接HAT。虽然这很棒,但你必须小心不要与HAT已经使用的引脚冲突,所以我仔细检查了pinout.xyz并决定了以下内容:
门铃按钮 - GPIO22(引脚15) )和隔壁3v3(引脚17)
通知LED - GPIO9正极(引脚21,通过电阻),引脚25负极GND
连接网络摄像头,音频,按钮和LED起床和工作,我现在有一个工作的可视门铃 - 虽然分布在整个工作台上。接下来我需要考虑如何使用它以及它会是什么样的。
第6步:额外的钟声
所以这个设置在板凳上工作正常,但是IRL会发生什么?我想在外面只有一个门铃,以避免令人困惑的访客,但同时又想知道如果有人在我无法接听电话时发出声音,或者如果其他人在房子里并且没有听到呐喊来了。
这些担忧的答案是在构建中包括一个标准的无线门铃发射器,它将与我们现有的钟声配对。这样,即使构建的Pi部分由于某种原因停止工作,“正常”门铃也会响铃。
我从Ebay订购了一个兼容的门铃按钮(使用,2.50英镑),经过一些测试后,将两根飞线焊接到其电路的微动开关触点上。这意味着我可以砍下门铃的塑料外壳并连接我自己的杠杆开关以触发铃声。
有了这个故障保护让我觉得在“狂野”中使用这个项目感觉好多了,而且还增加了很少的功能 - 一些视频门铃供应商会根据你的需要向你收取高达50英镑的费用一个额外的钟声单元!
步骤7:案例逻辑
门铃案例视频:https://youtu.be/Bn1qj2Uvl0w?t = 416
基本单元视频:https://youtu.be/Bn1qj2Uvl0w?t = 865
一旦我证明代码可行,接下来的事情就是确定项目的案例。我希望它显然是一个门铃,但出于明显的安全原因,我不喜欢将一个完全连接的Pi挂在我家门外的想法。
我决定将项目分成两部分 - 在房子外面有一个门铃单元,连接到内部的Pi基站。这方面有几个很好的理由:
- 更少的部件挤入外壳并暴露在元件中
- 房屋内的WiFi信号更好,增加了以太网选项
- 更易于执行维护和维护升级
- 将我宝贵的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芯报警电缆,因为它非常薄且易于使用,每端都添加了一个连接块。
第8步:斩波和拟合
一如既往需要拆除一些箱子。在他们准备好使用之前进行修改,所以我设置了旋转工具来整理内部,一旦我剥离了原来的电路。
对讲机是第一次,我不得不砍掉一个塑料柱以便为网络摄像头腾出空间,为广角镜头(从Tiger购买)切出一个洞并打磨掉许多突出物以使扬声器更容易适合。一旦我有一个空白的画布,我就考虑了如何适应各种组件。我需要腾出空间:
- 一个新的扬声器
- 两个杠杆微动开关
- 无线门铃电路
- 网络摄像头
- 电缆连接块
- 用于LED的小型电路板电路
。..以及原始开关和机构 - 这看起来很宽敞但现在我开始怀疑。
为了简化这个过程,我使用了Hitachi Pi TV转换的方便提示,并首先构建了一个有机玻璃机箱来容纳所有组件。 Perspex绝对是理想的选择,因为在标记切孔位置时可以看到它。首先,我将其切割成大致尺寸,然后钻孔,使其适合对讲机现有的螺钉柱。从这里我逐个添加组件,钻孔和切割孔以适合或为它们腾出空间。这样做的另一个好处是我能够在最终装配之前测试一切正常!
为了使网络摄像头更合适,我必须小心地切掉很多塑料外壳,这样它就会直接粘在广角镜头后面 - 如果你需要这样做,首先要撬开前面的它,不要像我一样用钢丝钳和钳子劈开背部!
我对卡式录音机不太挑剔,并且无情地剥离了所有的电路和电路。组件只留下一个空盒子。像大按钮这样的化妆品部件只是热粘在适当的位置,我用一个红色的按钮填充了一个破碎的小灯孔。
让pi坐在磁带窗口后面的正确位置我首先将Lego牌热胶粘在一个旧的底部(在Pi 3岁生日派对上获得!)Pi案。然后我在卡式录音机内部的一个匹配的板子上正好位置,以制作一个漂亮的半永久性配件 - 在磁带门打开的情况下可以访问GPIO引脚,但我想确保我可以将Pi带到交换SD卡等没有任何麻烦。我已经学会了未来的拆卸和维护计划的艰难方法!最后,我在卡式录音机的外部切碎了一些插槽,以便装配后USB和HDMI端口仍然可用以防万一。
第9步:装配和绘画
装配视频:https://youtu.be/Bn1qj2Uvl0w?t = 2002
将有机玻璃底盘测试装入对讲机我给它涂了一层油漆 - 我痛苦不已尝试在白色,亚光黑色和棕色之间进行选择,但是选择“红葡萄酒”进行改变。
最后的组装非常简单,谢天谢地,我将对讲机底盘热粘到机箱的末端,也将无线门铃电路安装在设备背面,以便于更换电池。最后一项工作是添加一个铭牌,我只是用不同的字体大小打印出来 - 但当我加上这个时,我发现灾难性的一些热胶已渗透到表壳的一个小孔中,遍布新鲜涂漆并挡住铭牌插槽。
两个小时的精巧手术刀刮了后来胶水消失了,但我不得不重新涂上一部分 - 完全疼痛,但实际上我应该让油漆再硬化几天 - 我永远都不会学习!
步骤10:安装
准备安装我涂上一些薄的管道棕色以匹配前门,并钻了一个洞来戳穿电缆,使用橡胶垫圈填补空隙。我离开自己大约一个小时来适应它,但这还不够时间!从理论上讲,我只需要安装门铃单元,将电线穿过门并将警报电缆重新连接到基座单元,这应该是直截了当的 - 除此之外什么都没有。
对讲机很容易固定在门框上,使用强力的3米尼龙搭扣垫,额定重量是单位的两倍。当我重新连接电缆时,我发现我将其中的两个剥开了剥离的末端,并且使用不同长度的电缆需要使用镊子进行一些精细的工作来进行连接。很快就完全连接起来了,我打开了Pi来测试它。这里出现了第二个问题 - 门廊里非常弱的WiFi。不用担心,我想,并添加在以太网电缆和电力线适配器,这解决了问题。
接下来是现实世界的测试,我通过VNC登录设置Duo - 这个工作正常,但是当我设置音频源时,PyUserInput动作就像我按下了一样门铃 - 一次又一次,视频通话几乎和我拒绝它们一样快。这让我大汗淋漓,我仔细拆除了所有东西以检查连接,因为它在工作台上工作了近一个星期。在检查连接并发现任何不妥之处后,我更换了门铃杆开关并用万用表测试了整个装置的电阻。然后我尝试了另一种pHAT BEAT。然后是一个不同的Raspberry Pi。最后一个新鲜的pico hat hack3r。没有什么工作,好像有人在外面不停地靠在门铃上,剧本只是不停地开火和打电话。
唯一与工作台设置不同的是电缆现在固定在放在管道内,在一个更加繁忙的环境中 - 结果证明是问题所在。干扰导致GPIO几乎可以解释任何按钮。为了尝试和解决这个问题,我首先在开关和Pi之间增加了一个1k电阻 - 这证实了我的想法,因为它将假阳性按压减慢到一分钟或两分钟。接下来,我尽可能地缩短了基本单元内的电缆,并用10k版本替换了1k电阻。这样做了 - 我构建了一个简单的脚本来测试它,并且每个按钮按下只触发一次,没有幻像按下。
对于项目的一部分,我认为这将是有趣的&很容易这是一个令人沮丧的问题解决运动持续复活节周末,但找到解决方案是非常令人满意的。整个事情的一线希望是换掉Pi - 我现在正在使用Pi 3 B +,而且通话速度和质量都有明显改善 - 如果你计划建立其中一个,我肯定会鼓励你花费额外的几磅在最高规格的Pi上。
步骤11:更多选项
随着PiNG门铃终于工作,我和孩子们(和猫)制作项目视频有了很多乐趣,并开始思考我们可以用它做的其他事情。由于Python代码很容易适应,所以这里有无穷无尽的选项,其中很多我希望很快就能尝试:
设置脚本以在每次按下门铃时拍照,并且将其上传到Dropbox
将铃铛上的通知LED设置为在晚上不断点亮,可以在设定的时间点亮,也可以使用像Astral这样的Python模块来计算当地的日落/日出时间
设置铃声&语音音量在晚上自动减少(我只是翻开盒盖并使用pHAT上的按钮)
在房子内加一个额外的按钮取消电话,以防它响了但有人回答了门“手动” - 它在大约45秒后确实超时。
设置脚本以便您可以回叫门铃 - 您可以轮询窗口名称或检查哪个窗口具有焦点,并告诉它如果检测到更改则单击“回答”
从理论上讲,你可以在按钮&键盘按下以自动登录到谷歌Duo以节省必须通过VNC执行此操作 - 虽然感觉有点不安全,并且Duo确实保持登录状态,我已经让它在压力机之间运行了几天测试它。
还可以进行大量的硬件调整:
切断USB电缆并使用多芯报警电缆进行扩展(可以获得8芯很容易) - 我不是百分之百,这会工作或你能走多久,但这意味着要钻一个小得多的洞。
制作一个使用PIR传感器来启动呼叫而不是按钮的版本 - 这需要微调才能实用,但如果你的孩子失去了球并且你可以看到它背后会很方便在花园里的椅子。
添加一些额外的LED或单独的太阳能泛光灯进行夜间照明
使箱子更加防水(我们的座椅位于遮篷下面所以不需要它太多)
用于接听电话和电话。 PC的工作非常好,但你可能会建立一个专用的接收器单元,比如客厅,它会不断地收听电话,同时显示照片或其他东西。它仍然可以使用PyUserInput点击“答案”,你甚至可以使用AIY Kit集成Google智能助理,这样在给定的语音命令上,呼叫就会得到解决 - 这将非常酷。
该技术的另一个好用途是建立一个超级简单的视频聊天站,只需一个大的“呼叫”按钮 - 对于用老人或技术恐惧者轻松进行视频通话非常有用相对的。
第12步:最后一位
我几乎每次都这么说,但这是我迄今为止最有趣的项目。它恰好结合了新技术,旧硬件和实用性。也许我最喜欢的部分是它的简单性和可靠性 - 我最初认为在无头Pi上编程鼠标移动如果它起作用的话会很有气质,但是效果很好。
使用Pi进行视频通话也非常令人满意,这已经成为我的“圣杯”之一,Google Duo做得很好,特别是在Pi 3B +上。通话的音质非常好,视频肯定比预期的更顺畅。我希望Duo的网络版继续发展,Google不会过多地破坏界面 - 尽管他们做了像移动按钮或文本框这样的东西,但是脚本中的坐标可以很容易地改变。我本周读到他们可能会添加群聊,我很想知道这是如何运作的。
我现在正在回顾一些旧的电视转换,并想知道是否将它们更新为视频聊天控制台,我确实有一个内置网络摄像头,它只需要一个鼠标来控制呼叫。将50年代和60年代想象出来的视频电话的未来愿景变为现实真是太棒了。
我确实对这个项目有些过分了,但你可以用很少的组件构建类似的东西,只需要Pi,网络摄像头,扬声器和放大器。按钮真的 - 我们很乐意看到任何图片或视频,如果你做了一个,你可以发推特给我们@OldTechNewSpec或在评论中留下图片。在专用机箱中使用漂亮的触摸屏可视电话怎么样,或者使用旋转拨号盘选择联系人?
我在5月1日写这篇文章,今天是一个重要的时刻 - 门铃中第一个未经请求的“野外”电话!在市中心的午餐时间走路时,门铃响起,我与亚马逊的送货员进行了很好的双向交谈。我发现他不需要签名,讨论在哪里存放包裹等,并且通话质量非常好,即使我在一条繁忙的街道上有一个不太好的4G信号。从那以后,我一直在笑着对自己说。
如果Pi有一个专用的门铃HAT,在一块板上集成了扬声器,麦克风和按钮,可以使用PI摄像头或者可以放入3D打印的门铃盒中,这是理想的选择。网络摄像头 - 我认为这将是一个伟大的,低成本(与商业选项相比)和实用工具包,就像你现在可以获得的野生动物相机套件。
考虑到这一点Google AIY Projects HAT拥有所有这些东西 - 当我试一试时,你不得不原谅我。..
-
可视门铃
+关注
关注
0文章
20浏览量
8592 -
树莓派
+关注
关注
116文章
1706浏览量
105607
发布评论请先 登录
相关推荐
评论