DIY 智能电脑开关:Pico 2 W + Inky 屏,一键开机、长按三秒关机

DIY Smart PC Power Control with Pico 2 W and Inky display

我的电脑主机放在桌子底下,电源键也在桌子底下。每次开机都要弯腰,手上拿着东西的时候特别烦。这个第一世界问题,我忍了很久。

后来看到桌上那块 Pimoroni Pico Inky Pack,突然想到:既然 Wake-on-LAN 可以用 MAC address 把电脑叫醒,那为什么不把它做成一个放在桌面的实体开关?于是就有了这个 project:Pico 2 W + Inky 屏 + 3 个 buttons 的电脑电源开关。

现在的用法很简单:轻点一下 = 开机,长按三秒 = 关机。e-ink 屏会显示当前动作和 PC 状态,平时不刷新时几乎不耗电。

DIY Smart PC Power Control infographic with Pico 2 W and Inky display
Finished build:Pico 2 W + Pimoroni Pico Inky Pack,放在桌面就能开关电脑。

它到底能做什么?

  • Tap Button A:发送 Wake-on-LAN magic packet,把 PC 叫醒。
  • Hold Button A 3 秒:通过 Wi-Fi 呼叫 PC 上的 shutdown agent,让电脑关机。
  • Button B:检查 PC 是 ON 还是 OFF。
  • Button C:显示 Pico 的 IP address,方便 troubleshooting。

Pico Inky Pack 是 2.9 寸 mono e-paper,分辨率 296×128,板载 3 个 tactile buttons(A/B/C)。它插在 Pico 2 W 后面,不需要额外 wiring;按钮 GPIO 分别是 12 / 13 / 14。

材料清单

  • Raspberry Pi Pico 2 W(RP2350,Wi-Fi)
  • Pimoroni Pico Inky Pack(2.9″ 296×128 mono e-paper + 3 buttons)
  • USB cable / 5V power(放在桌面长期供电)
  • Optional:3D printed stand 或简单外壳
  • PC 必须接 Ethernet,因为 Wake-on-LAN 通常不支援 Wi-Fi

Note:Pimoroni 已经停售 Pico Inky Pack。如果你买不到,可以用 Badger 2040,或任何 2.9″ 296×128 SPI e-paper + 3 个 buttons 替代;代码里的 display driver 需要按你的硬件调整。

先说清楚:Wake-on-LAN 只能开机,不能关机

这是整个 project 最重要的技术点,也是很多 tutorial 没有讲清楚的地方:WoL 只能把电脑叫醒,不能把电脑关掉。

所以“长按三秒关机”并不是 WoL 做到的,而是 Pico 通过 Wi-Fi 呼叫 PC 上一个很小的 local shutdown agent,再由 agent 执行 OS 的 shutdown command。整个架构是这样的:

System diagram: Pico 2 W sends Wake-on-LAN magic packet to wake PC and HTTP shutdown request to power it off
Pico 2 W 负责发 WoL magic packet 和 shutdown request;PC 上的 agent 负责真正执行关机。

How it works

  • Wake:Pico 用 UDP broadcast 把 magic packet 发到 port 9。Magic packet = 6 bytes 0xFF + 16 次重复的 MAC address。
  • Shutdown:Pico 对 PC 的 TCP 8765 发一个带 token 的 POST /shutdown。
  • Status:Pico 尝试 connect PC 的 shutdown port;能 connect 就当作 PC is ON。
  • Display:e-ink 只在有动作时刷新,所以不会一直闪,也不会一直耗电。

实际效果与限制

轻点后大概 20–40 秒开机;长按三秒后,PC 会在 5 秒内收到 shutdown command。e-ink 会显示 WoL packet sent、Shutdown sent 或错误提示。

限制也要讲清楚:PC 必须接 Ethernet;Pico 2 W 只支援 2.4GHz Wi-Fi;PC 上的 agent 必须常驻;Pico Inky Pack 已经停产。它不是“按一下立刻断电”的开关,而是“叫醒 / 正常关机”的 smart button。

Actual Pico 2 W and Pimoroni Inky Pack PC power button on a desk, showing HomeStation, IP address, DAF Kiosk and DAF PC
实际装在桌上的 End Product:e-ink 显示 HomeStation、IP 和两台 PC 的选单(DAF Kiosk / DAF PC)。

照片里是我实际使用的版本:屏幕显示 HomeStation、Pico 的 IP,以及 DAF Kiosk / DAF PC 两台机器的选单。文章里的 code 为了简洁,只保留单台 PC 的 wake / shutdown 逻辑;multi-PC 只是把同一组 function 包一个选单。

下面是 paid section:完整的 main.py、Windows / Linux shutdown agent、WoL BIOS / NIC 设置、systemd / Task Scheduler、测试清单和排错表。Supporter 会员可以直接抄作业。

结语:少弯一次腰

这个 project 的技术不复杂,但它解决的是一个每天都会遇到的小麻烦。以前每次开机都要低身去桌子底下按电源键,现在只要在桌上轻点一下;关机也不用再弯腰。

科技有时候不需要很厉害。它只需要在某个很小的瞬间,让你少弯一次腰,少烦一次。

如果你也做了类似的 Pico / WoL / e-ink project,欢迎留言分享。你也可以在会员区拿到完整的 main.py 和 Windows / Linux shutdown agent。

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *