返回 登录
0

动手制作智能化家居“魔镜”

阅读4573

原文:How to make a Smart Mirror using an old monitor, a Chromecast, a picture frame, and too much time on your hands.
作者:Colin Mansfield
译者:蒋春华
审校:苏宓

最近我已深深陷入“家庭自动化”而无法自拔了。如果你对家庭自动化不熟的话,你可能听说过“物联网”。尽管这二者略有差异(自动化力求让物体自动完成某些操作,而物联网只是在应用 — 例如咖啡壶、砂锅等 — 中加入 wifi 联网功能),但是它们有一个共同之处:都相当昂贵!一个开箱即用的家庭自动化 Hub(例如罗技的 Harmony 或者三星的 Smarthings)需要 100 美元。如果再加上一些外围器件,例如传感器、灯、开关、遥控器等,则总共需要花费 300 美元左右。

如果想要一个便宜点的家庭自动化,可以使用开源项目(例如树莓派或者 Arduino)自己 DIY 一个。这需要一定的编写代码的功底,或至少需要几个小时的时间观看 YouTube 视频,或者逛相应的论坛。现在已经有一些非常棒的免费的开源项目,例如 Home Assistant、OpenHUB 等,这些项目都有大量的社区支持。

我一直在寻找让我的家里变得更智能的方法,并偶然发现了智能镜子。智能镜子有时也叫做“魔镜”。智能镜子通常是在一个双面玻璃镜中嵌入一个显示器而完成 DIY 的,这个镜子可用于显示一些有用的信息,例如时间、天气、日历事件等。下面是我在做相关研究时找到的一张比较酷的图片:



这个图不是我自己的智能镜子,我自己的镜子的图片在后面。该图片使用的是一个树莓派完成的,看上去相当酷。

你可以通过 Google 搜到很到相似的、令人惊叹的项目。

我想利用家里已有的原材料(大部分)来做这个智能镜子。我不反对使用树莓派,但是我没有任何编程经验,所以想先尝试一下是否可以不购买小型计算机,直接利用已有设备。由此,我盘点了柜子中的器件和线缆,然后找到了这些东西:

  • Chromecast(第 1 版)
  • 旧的戴尔显示器/电源线(仅支持 VGA 输入)
  • VGA 线
  • 智能插座(已经集成到我的智能家庭系统中)
  • 扩展线

我的想法非常简单:先想办法将 Chromecast 插入旧显示器中,然后再想办法将智能镜子上感兴趣的信息投递到 Chromecase 上。如果可以,就将显示器嵌入双面镜中,然后将这个新发明挂到墙上。

非常简单吧?

理想很丰满,现实很骨感。事实上,这很快就变成了耗时长达几个月的长期项目。下面是我创建我的第一个智能镜子的过程记录。先透个底,我不仅将它做出来了,而且还将它做得非常好。下面就是我的故事。

首先,我需要一个 HDMI 转 VGA 的转接器。我在亚马逊上面找到一个(甚至还带了一个可爱的小辅助端口),只花了 8 美金。

收到转接器后,我就迫不及待地测试这个小发明。我将所有的东西都装配好(Chromecae -> 转接器,转接器 -> VGA 线,VGA 线 -> 显示器),然后打开显示器,



看上去比较简陋,但这不是重点,重点是显示器弹出来一个错误消息,提示“不能显示该视频模式”。在谷歌上快速搜索后,我得到的答案是这个显示器太老,以至于不支持 Chromecase 的分配率。太衰了,它居然不能正常工作!

我是不是需要花钱买个新的显示器呢?经过大约一周的深思熟虑后,我最终决定逛一逛 Craigslist 和 Facebook 市场。我找到一个待售的 Polaroid 电视(是的,Polaroid 生产的电视,但是他们不打印图片)。花了我 30 美元,但是这个电视有更多的输入和输出接口(包括 HDMI!Great!),以及内置的扬声器。

接下来,我需要一个双面镜。从节俭的角度来说的话,我遇到大麻烦了 —— 双面镜相当贵。我在我当地的玻璃店铺去看了下,一个 16 英寸 x 20 英寸 的镜子需要约 80 美金,因此我决定另寻它法。再次谷歌后,我决定试一试窗户玻璃膜。

大多数硬件商店都有销售各种类型的窗户玻璃膜。人们通常会在夏天使用这种材料使家里更凉爽,或者使它来进行装饰。我找到一个帖子,这个帖子里有很多人在讨论他们的魔镜的问题 —— 使用玻璃膜可能会导致变形、起泡等。不过玻璃膜在价格方面有很大的优势, 3 英尺 x 15 英尺 的玻璃膜自需要 20 美金。有这么多的材料,我可以先进行简单的尝试,如果效果不理想的话,还可以利用剩余的玻璃膜进行多次重试。

找这个玻璃膜也是一段精彩的旅程。我先去了劳氏(Lowes),但是他们这儿没货了。然后我再去了家得宝(Home Depot),也没有。最后,我在网上查阅,得知我当地的劳氏零售店中有卖。我在线挑选并订购后,终于拿到了精美的玻璃膜。

接下来是考虑将玻璃膜贴在哪儿。我可以订购一块玻璃,但那就需要为它建一个边框。此外,玻璃也不便宜。另一个选择是购买一片透明的丙烯酸树脂,但是由于丙烯酸树脂是柔性的,可能会导致变形。但最终还是选择了丙烯酸树脂(请叫我受虐狂),这是我的第一个错误。第二个错误是我买了一块(约) 1.5 英尺 x 4 英尺的丙烯酸树脂。我当时的想法是“嘿,如果我要做这个,我还不去干一票大的,取做一个完整的长镜”。



我最终所遭遇的问题是,把玻璃膜贴在丙烯酸树脂上变成了几个小时的挫折教训。我的妻子(感谢她)也跑来帮助我,但是我们最后都决定放弃丙烯酸树脂,寻找新的替代方案。这次失败的成本大约是 30 美金左右,但幸运的是,还剩余有大量的玻璃膜足够我下次尝试。

我们决定使用一个物理尺寸比较小容易管理的东西,且必须使用玻璃。最后,我们在沃尔玛发现了一个木制相框。看起来相当不错,在一个可管理的尺寸(16 英寸 x 20 英寸),且自带了玻璃。大约是 10 美金。我们将它贴上了玻璃膜,然后开始件后续工作。

在这一点上,我已经拥有了可以构建镜子的物理原型,下一步就是软件方面的工作:如何使用 Chromecast 将相关数据反馈并显示出来呢?通常,Chromecast 是与电视配套使用的,用来播放 YouTube、电影以及图片。由于它的初衷并不是用于显示输出的反馈数据,因此需要一个额外的设备告诉它怎么显示(即,在先在手机上面播放一个 YouTube 视频,然后“投”到电视上)。

我沿着谷歌的兔子洞走去(注,比喻走进一个奇妙的世界),到处寻找其他人是否解决了这个问题。我搜遍了论坛、网站和博客,发现没有人尝试使用 Chromecast 来做智能镜子项目,不过某些企业却有使用 Chromecast 来显示被叫做“数字广告标牌”或“数字标牌”的东西。企业可能是通过显示在电视上的菜单来实现该功能的,也可能是通过一个独立的显示广告的设备完成的。最后,我找到一个免费的、只需要显示器就能实现的方法。这种方法叫做 AdSignage。这真是救了我的命!

AdSignage 通过 Chrome 来玩他们的魔术把戏。首先,你需要在 AdSignage 上面注册用户,并将你的 Chromecast 添加为一个播放器,为它分配一个唯一的包括字母和数字的密钥。接下来,在 AdSignage 的网站上构建一个包含你想要在你的 Chromecast 上显示的信息的网页。最后,通过之前创建的密钥,告诉媒体服务器你要在哪里显示这个网页。谷歌浏览器可以使用它内置的功能将网页投射到你的设备上,而且非常方便的是,当你投射开始后它就不再依赖于 PC。因此,你可以关闭浏览器和电脑 —— 投射不会被中断。

当完做完所有的测试并理解了它是如何工作后,剩下的事就是确定要在我的智能镜子上显示哪些信息,以及如何使用 HTML 让它们在镜子界面上的布局看起来更好。我最终决定包含如下功能:

  • 当前的日期和时间
  • 当前的天气
  • 日历(事件提醒)
  • 加尔文和霍布斯的连环漫画

我搜搜了该网站,为每种功能找到了最佳的挂件/代码。我不想重复造轮子 —— 许多人们已经做好了这些,这对于我来说足够用了。没一种挂架我都尝试了几种版本,并最终决定使用:

  • 当前的日期和时间:timeanddate.com
  • 当前的天气:powr.io
  • 日历(事件提醒):Google Calendar(与我的 iCloud 日历同步的)
  • 加尔文和霍布斯的连环漫画:Feedwind 有一个 RSS 订阅,通过它可以创建一个可以作为 iFrame 嵌入网页的挂件。RSS 订阅会从 Go Comics 拉取连环画。这是挂件的链接

当我对格式、iFrame 和文本大小做了一顿胡乱调试后,我就开始在显示器/TV 上面进行测试。首先,我剥去了电视机的塑料外壳,并把扬声器从外壳上拆下来。





扬声器



将扬声器粘贴到显示器的侧面。期初凑效,但过了一会儿他们就掉下来了。

老实说,我自己也不确定是否需要扬声器。不过既然自带了扬声器,我还是将它准备好,万一我今后需要实现的某个功能需要它呢?

我最初想的是把他们粘在显示器的侧面。我使用了超级胶,起初是挺有效的,但是后来扬声器掉下来了,然后我直接把扬声器卡在其它地方了。

然后,我需要测试 AdSignage-to-Chromecast 这套方案起效。我将所有的都插好,对 cast 进行初始化,然后…



喔!起来了!你可以从上图看到,最最初的构建版本中,除 Calvin & Hobbes 之前,我还把 XKCD 也添加进来了。后来证明它给我带来的麻烦比价值更多,因为 XKCD 的漫画每天的大小都不一样。我决定只使用 Calvin & Hobbes。

屏幕已经剥离下来了,cast 也可以正常使用了,我的下一步就是将它安装到镜子中。我剪了一些硬纸板,把它们填充到镜子周围的空闲空间。这还有助于隐藏显示器 —— 否则它直接位于墙前面,看起来怪怪的。我希望它能与墙/镜子混合在一起。这是我最初的设置:



悬挂的部件是红外线接收器(遥控器和电视机不在一起),一个辅助插孔(耳机)和电视控制按钮。在图片中也可以看到一些鱼眼螺丝和安装支架,这是用具解决如下问题的:如何将显示器粘贴到画框上。整个镜子以及显示器对于胶水和胶带来说太重了,而钻进金属外壳里并不是一种好办法,因为我担心会小心损坏显示器。

最好的办法是把显示器挂在相框上。我把一个鱼眼螺丝拧在画框背面的每个侧面,然后用金属吊绳(不确定这个术语是否正确,反正就是用来挂相框的东西)把显示器绑在镜框上。一根长长的绳子沿着显示器的底部走着,充当了一个座位。我把绳子系紧,使显示器和前面的玻璃贴合在一起。

做完之后,我将两个悬挂支架钉在墙上,并使用同种金属线悬挂镜子/显示器。下面是第 1 版的样子:



第 1 版的智能镜子。这张照片中看不到支架,因为最初我把绳子系紧了。但是这不能正常工作 —— 显示器在相对于墙的一个怪角度。我松开绳子来修理这个东西。


不错!我和妻子使用这版镜子使用了几周,效果很好。有一段时间我尝试了将 Chromecast 音频连接到扬声器,但是在一个项目中有两个 Chromecast 设备。后来发现天气太暗,我又搬弄了下挂件。最初,我用的黑暗天空挂件(见上图),但最终使用的是上述 powr.io 挂件,它更大更漂亮。

上述的增强功能就是我的第 2 版 Chromecast 智能镜子,但是我还是不太满意。

我一直在做实验,希望我离开家的时候,能用旧 iPhone 作为安全摄像头。为此,我使用了一个叫做 Manything 的 APP —— 它会检测物体移动,并给我发送通知;它与 IFTTT 集成在一起,能灵活地与其它家庭自动化设备结合在一起。我很好奇,如果我可以将手机挂到智能镜子里面,让它成为一个安全摄像头会是什么效果呢?这种好奇心驱使我去捣鼓第 3 版的 Chromecast 智能镜子。





在泡沫材料中安装手机



扬声器现在附在一面镜子上。另外,你可以在顶部看到一些金属安装线。

为了做到这一点,我从镜子的背面剪下一块纸板。同时为了确保旧 iPhone 的安全,我在亚马逊订购了一些泡沫材料。我在相机的正面切了一个洞,沿着底部装充电线。我把我的手机和 Chromecast 都插入了一根延长线中。最后,我用了那条经过考验的金属线,把所有的电线都挂在它上面,这样可以防止它们悬掉在镜子的底部。这是它从前面看起来的样子:



这就是我的集各种荣耀于一身的第 3 版 Chromecast 智能镜子。自动化还剩最后一步了 —— 把显示器插到下面的一个智能插座上。每当我离开家的时候,智能插座会自动断电;当我回到家的时候,插座会自动打开。我也可以通过语音,让 Amazon Echo 打开或光比智能镜子,这样我就不需要物理移动了。

这个终极版的智能镜子也还有一些不足。首先,Chromecast 有时候没法播放流,因此我必须重新打开 PC 并重新初始化流。这种情况发生的几率大约是每周一次,因此我也没把它当回事儿。

其次,在线路的某个地方,显示器的红外接收器会罢工。尽管显示器本身并没有遥控器,但是我有一个罗技 Harmony Hub,可以通过它来复制红外信号,然后将我的手机当做遥控器。我的显示器刚买回来的时候,红外接收器与 Harmony Hub 能配合工作,但是当我对显示器进行这一番捣鼓后,就不行了。这可能是由多种原因造成的,并且还直接导致产生了下一个问题。

智能插座只有我在想关闭显示器的时候才能正常工作。当我离开家的时候,插座会切断显示器的电源并关闭显示器;当我回到加的时候,插座会打开电源,但是它实际上并会打开显示器,因此我必须手动按一下显示器的开机按钮。如果红外接收器能正常工作的话,我可以用过 Harmony Hub 来间接控制显示器的开关,但是由于红外接收器不能正常工作,所以我不得不收到按下开关。

尽管有这三点不足,我任然认为这个项目取得了巨大的成功。这不仅仅是因为我实现了我期望实现的内容,而且是因为我只花费了 100 美金就实现了这些功能。

这个项目还没完 —— 我会继续添加功能、进行修改,将它改造成我心目中理想的样子。它值得我花费时间和金钱。我现在每天都会用到它,这样可以省去我用手机查看天气、时间。我的下一步将会把 AirFoil 添加到 Chromecast 中作为我整个家庭音频的播放器。

评论