掏出手机、解锁、翻到天气应用——只为看一眼今天会不会下雨,这套动作对某些人来说实在太啰嗦。How-To Geek 作者 Adam Davidson 干脆用一块不到 15 美元的 ESP32 开发板做了个桌面天气屏,抬眼就能看完所有关心的数据,而且显示什么完全由自己决定。

促使他动手的直接原因,是手机上再没有一款称心的天气应用。他真正喜欢过的只有 Dark Sky,界面出色,更关键的是超本地化预报极其准确——应用说几分钟后要下雨,往往就真的下了。苹果收购 Dark Sky 后把部分功能并入自带天气应用,随后彻底关停了这款产品。在他看来,苹果自带的天气应用达不到原来的水准。他甚至自制过一个 iPhone 天气小组件,用 AI 生成一张表现当前天气状况的图像,来替代系统自带组件。
但问题的核心不在于应用好不好用,而在于天气这类信息本来就应该一眼扫到,而不是层层点进去才能看到。
主角:那块「廉价黄屏」
他选中的硬件叫 ESP32-2432S028R。这串型号不好记,但由于板子是黄色的、带屏幕、还便宜,创客圈给它起了个更好记的外号:Cheap Yellow Display,简称 CYD,直译过来就是「廉价黄屏」。
CYD 是一块自带一切的开发板,核心是带 Wi-Fi 和蓝牙的 ESP32-WROOM-32 模块。它和普通 ESP32 开发板最大的区别,在于集成了一块 2.8 英寸 TFT 触摸屏,分辨率 240×320,表面覆盖电阻式触控层。因为所有部件都在同一块板子上,整套东西不需要接线、焊接,也不用面包板。
出厂时板子上可能带一些基础演示程序,但要让它真正干活,得自己刷入固件。这恰恰是它受欢迎的原因之一:硬件是通用的,用途完全由使用者定义。另一个原因就更直白了——15 美元甚至更低的价格,正是 CYD 里那个 C 的由来。
三件套:ESPHome、LVGL 和 Home Assistant
屏幕虽小,塞下一屏天气信息绰绰有余。真正需要解决的是两件事:怎么把数据送到板子上,以及怎么让它把数据画出来。整套方案由三个部分拼成。
- ESPHome 负责固件。使用者只需写一个描述设备行为的 YAML 文本文件,ESPHome 会把它编译成可用固件,省去了自己写 C++ 代码的麻烦。
- LVGL 负责画面。这个图形库的作用是接管渲染,使用者不必逐个计算像素坐标,只要描述想在屏幕上看到什么即可。ESPHome 内置了对 LVGL 的支持,因此一个 YAML 文件就能同时搞定 Wi-Fi 配置、触摸屏设置,以及天气图标和由温度、风速等数值组成的信息网格。
- Home Assistant 负责供数。他原本就配置了一个天气实体,数据来自 Met.no,可以提供当前天气状况、气温、风速、室外露点等信息。
除此之外,他还接入了一些自定义传感器,其中包括一个室内露点传感器——它并非真实硬件,而是根据家中智能设备上报的温湿度读数推算出来的。借助 ESPHome,任何一个传感器数值更新时,新数据都会通过网络推送到 CYD,屏幕上显示的因此始终是 Home Assistant 里最新的读数。
比手机好用在哪儿
这块屏被放在他的家庭办公室,也就是他工作日待得最久的地方。抬头一眼,当前天气尽收眼底,不需要掏手机,也不需要找应用。
更实际的好处是显示内容可以完全自定义。手机上的天气应用不会告诉使用者家里的室内露点是多少,而把它和室外露点摆在一起对比,在冬天相当有用——两者一比就知道,此刻开窗究竟能降低室内湿度,还是关着窗更划算。
目前唯一没做完的是外壳。他打算给 CYD 配一个 3D 打印的壳子,因为裸板放在桌上确实有点名副其实的「便宜又黄」。按他的说法,这或许正好成了自己入手一台 3D 打印机的借口。
这个项目的出发点其实很简单:既然手机上的天气应用根本没在用,那就换个能瞬间看到结果的形式。花费不到 15 美元,问题就解决了。有些时候,与其等一款称心的产品出现,不如自己动手做一个。
来源:How-To Geek







