Pirror折腾记

不要在考试周瞎折腾,会变得不幸福。
(还在更新中)

树莓派有一个广为人知的项目,叫魔镜(MagicMirror)。大致想法是在一面原子镜(半透镜)后面垫上一块显示屏,连上树莓派,由树莓派输出视频信号,从而能在原本的镜面上显示天气、代办清单等信息,大致的效果就像这样

恰好实验室闲置了好几块树莓派,工位上恰好也少个镜子,因此就有了做一个简单魔镜的想法。大致的workflow是这样的:

  • 硬件部分
    • 选好屏幕
    • 选好镜子
    • 选好相框对屏幕和镜子进行封装
  • 软件部分
    • 调试树莓派,准备好环境
    • 写一个能够聚合信息的前端UI

大概从六月一号开始着手筹备,零零散散地在DDL夹缝中写了点代码,做了点手工。下面就是折腾的过程,算是一个简单的记录。

硬件准备

显示屏

谢谢,已经开始后悔了,毕竟闲置一个树莓派也就浪费了300块,而做一个魔镜光是屏幕的投资就上了400+…

网上的大多数魔镜教程都说显示屏没有太多要求,但我感觉还是不太对的,至少在显示屏上一定不能图便宜。
我一开始看中了跳蚤市场上的一块11寸便携屏,100多块,分辨率1080p,IPS。收到后把外壳和不需要的扬声器拆掉,将驱动板和按键板放到背后,就得到了一块看起来能用的屏幕:

但是点亮以后,才发现这块屏幕的效果真是惨不忍睹…

不是,IPS屏幕会漏光我理解,但是你这个可视角度趋近于0的漏光是不是有点过分.jpg。而且因为拆机,它已经不能退货了,所以连样品还没做出来,成本先+100。

难受了一会儿,在IT侠工作室突然想到:是不是可以用相对便宜的价格直接买一块笔记本的液晶屏,然后外接一个驱动板提供用于连接树莓派的HDMI接口。用魔法少女赵志辉(是网名,我不知道为啥叫这个网名)的改装屏在IT侠的半透镜背后验证了一下自己的想法:

忽略杂乱的背景,效果好像还不错!于是在与YDJSIR(网名,我也不知道为什么叫这个网名)交流后,他建议我去panelook.cn带上自己的需求找合适的笔记本液晶屏。垃圾佬的话不敢不信,所以很快选定了一款13.3寸,2K分辨率的液晶屏(型号我忘了),和一个用于驱动屏幕的驱动板(其实所谓的便携屏也就是一块液晶屏+驱动板而已)

但是很不幸,收到的液晶屏的屏线接口不对。大多数1080p的液晶屏,其edp接口都是30pin的,但是我买的2k屏驱动板是40pin接口的。如果你也要做一个类似的魔镜,不妨在选屏幕时重点关注一下接口的问题。

…遂换货,快递运费+46。

收到新的屏幕总成时已经是六月十二号了,距离最开始产生做一个“魔镜”的想法也已经过去了十二天。期间零零散散地写了一些代码,构建了一个基础的信息集成项目——「Pirror」,你可以在下面的【软件准备】章节了解关于这个项目的信息。将软件上载到树莓派,然后把树莓派的视频信号输出到显示屏上,效果大概是这样的:

在显示屏后面铺一层软玻璃和碳纤维贴纸以分散压力,使用绝缘胶带将显示屏的电源、驱动板和排线简单固定一下,关于显示屏的折腾到这里其实也就结束了。

软件准备

除了硬件之外,我们还需要准备一个用于展示的「界面」,也就是魔镜的软件部分。Github上有一个很著名的项目叫做「MagicMirror」,基于Javascript编写,提供了一个聚合了各类信息的魔镜界面:

但是这个项目的个性化功能并不是很好,只提供了有限的几类接口。加上我的javascript实在三脚猫,于是便想到使用Python编写一个魔镜UI。

在这之前,@PixelChen24基于PyGame搭建了一个运行于树莓派上的魔镜项目「Magirror」:

本项目便是受到「Magirror」的启发,完全重构了「Magirror」的代码结构,以一种更简洁、扩展性更强、部署更加简便的方式构建的魔镜UI项目。它的名字叫「Pirror」,v1.0.0版本的效果如下

某种程度上,「Pirror」其实是一个信息聚合项目,以最小的时间成本向用户传达充分且必要的信息。也正因此,「Pirror」的部署场景绝不仅仅只有树莓派,你可以将它以后台程序的方式运行,然后将UI固定在电脑屏幕上,这样你就得到了一个桌面控件。在v1.0.0版本中,「Pirror」提供了六种可以呈现在屏幕上的组件(widget)

  • 时间组件:当前时间,形式为小时:分钟
  • 万年历组件:农历+节气信息
  • 课程表组件
  • 天气组件:当前气温、天气状况、AQI、UV指数、湿度、气压和未来12小时的天气变化趋势
  • 代办列表组件:同步Microsoft To Do代办事项,app上添加的代办事项将会以半小时为同步间隔呈现在屏幕上
  • “一句话”组件:在屏幕最中央呈现一句有意思的话

和「Magirror」一样,你可以在Github上找到「Pirror」,项目地址在这里。受限于篇幅,这篇博客不会额外介绍关于「Pirror」的细节。如果你感兴趣的话,你可以

  • 在repo的README页面找到如何配置和运行「Pirrir」
  • 在未来的某一篇博客中找到关于Pirror的结构和设计

「Pirror」项目将会得到长期维护,目前的功能前瞻包括但不限于:

  1. 在内容切换时,添加淡入淡出动画
  2. 添加RSS控件
  3. 添加滴答清单的API接口和代办清单组件接口

PRs and commits are wellcomed!


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!