拒绝撞表!用 ESP32 自制开源电子墨水手表 Watchy,还支持自制表盘

拒绝撞表!用 ESP32 自制开源电子墨水手表 Watchy,还支持自制表盘

今天,我们来介绍又一个炫酷的开源项目——Watchy!

这是一款基于电子墨水屏的智能手表,由 SQFMI 团队开发,完全开源(硬件和软件都获得了认证)。

如果你是 Arduino 爱好者、ESP32 发烧友,或者喜欢 DIY 可穿戴设备,这款手表绝对会让你心动。它不光能显示时间,还支持自定义表盘、WiFi 连接、蓝牙,甚至能接入天气 API。项目在 GitHub 上已经有 2.6k 星。

Watchy 的灵感来源于 Kindle 那样的电子墨水技术:低功耗、阳光下无眩光、可视角度接近 180 度。想象一下,你可以自己动手组装一个智能手表,能显示自定义的时钟、天气、步数,甚至是计算器界面!

官方文档:https://watchy.sqfmi.com/docs/getting-started

下面,我们一起来深入了解一下这个项目。

Watchy 的硬件规格

Watchy 的核心是 ESP32 微控制器,结合了电子墨水屏,分辨率 200x200 像素。

最新版本(Revision 3.0,2024 年 6 月发布)采用了 ESP32-S3FN8 芯片,支持内置 USB 串口、CDC/JTAG 调试,以及 GPIO10 充电指示。其他关键组件包括:

  • 显示屏:GDEY0154D67(v3 版本)或 GDEH0154D67,SPI 接口。
  • 加速计:BMA423 三轴传感器,支持步数计数和方向检测。
  • RTC(实时时钟):v3 版本用外部 32KHz 晶振,早期版本如 v1.0 用 DS3231。
  • 电池:3.7V 200mAh LiPo 电池,尺寸小巧(402030)。
  • 其他:振动电机、触摸按钮、Micro USB 接口、PCB 天线。

手表的尺寸只有 46mm x 35.5mm x 9.5mm,重 13g,超级便携。

你可以选择直接从 Mouser、The Pi Hut 或 Crowd Supply 买到套件,配件如表带和外壳在shop.sqfmi.com有售。

补一个 YouTube 上的开箱视频:

https://www.zhihu.com/video/1991826482843111757

当然你也可以选择自己设计,硬件设计文件在 GitHub 上开源(KiCAD 和 GERBER 文件),可以自己修改 PCB 或 3D 打印外壳。

3D 模型下载:https://watchy.sqfmi.com/docs/3D

组装过程简单,连接屏幕和电池,固定好即可。注意,屏幕是玻璃材质,别用力撬!如果用自定义外壳,确保 PCB 边缘光滑,避免卡住。

历史版本:从 v1.0 到 v3.0 的演进

Watchy 项目从 2019 年启动,已有多个迭代版本。早期版本(如 v1.0、v1.5、v2.0)现在被标记为“legacy”(遗留),主要是因为硬件升级和软件兼容性变化。

  • v1.0 (2019):用 DS3231 RTC 和 CP2104 USB 串口。
  • v1.5 (2021):换成 PCF8563 RTC。
  • v2.0 (2021):继续用 PCF8563,但优化了 USB 支持。
  • v3.0 (2024):大升级!ESP32-S3、外部晶振、无需额外 USB 串口芯片,支持 USB 设备模式(如 CDC、HID)。

遗留版本的组装需要手动连接屏幕和电池,并用胶带固定(新版可选)。软件设置上,用 Arduino IDE 选择对应板子版本,WiFi 配置通过“Watchy AP”热点。为什么是遗留?主要是新版更高效,但老版依然兼容现有库,如果你手头有旧硬件,别担心,文档齐全!

电池寿命

电子墨水屏的最大优势就是省电!Watchy 每 60 秒唤醒一次,检查加速计、RTC 并更新显示。纯时间显示模式下,能续航 5-7 天;如果加 WiFi 拉取天气数据,2-3 天。

影响因素包括:

  • WiFi/蓝牙使用(超级耗电)。
  • 频繁唤醒和显示更新。
  • 加速计常开。

优化技巧:

  • deepSleep()让 ESP32 深度睡眠,只在 RTC 中断或按钮按下时唤醒。
  • 用完 WiFi 后关掉:WiFi.mode(WIFI_OFF)btStop()
  • 不需要步数时,别初始化 BMA423。
  • 调整更新频率,比如词钟表盘可以每小时更新一次。

通过这些小设置,电池寿命能大幅延长。大家也可以实验不同场景,分享你的优化经验!

如何创建自定义表盘

Watchy 的乐趣在于自定义!项目提供了示例表盘(如/examples/WatchFaces),可以用 Arduino IDE 轻松创建。

步骤:

  1. 继承 Watchy 类,重写drawWatchFace()方法。
  2. 用 Adafruit GFX 库画形状、文本和位图。
  3. 字体:用 truetype2gfx 转换 TTF 字体成.h文件。
  4. 图像:用 image2cpp 转黑白图成字节数组,调用display.drawBitmap()
  5. 测试:用 WatchySim 模拟器(Windows 上很方便)。

WatchySim: https://github.com/LeeHolmes/watchysim

示例代码:

#include <Watchy.h> //include the Watchy library
#include <Fonts/FreeMonoOblique24pt7b.h> //include any fonts you want to use
#include "settings.h" //same file as the one from 7_SEG example

class MyFirstWatchFace :public Watchy{ //inherit and extend Watchy class
    public:
        MyFirstWatchFace(const watchySettings& s) : Watchy(s) {}
        void drawWatchFace(){ //override this method to customize how the watch face looks
          display.setFont(&FreeMonoOblique24pt7b);
          display.setCursor(25, 110);
          if(currentTime.Hour < 10){ //use the currentTime struct to print latest time
            display.print("0");
          }
          display.print(currentTime.Hour);
          display.print(":");
          if(currentTime.Minute < 10){
            display.print("0");
          }  
          display.println(currentTime.Minute);   
        }
};

MyFirstWatchFace m(settings); //instantiate your watchface

void setup() {
  m.init(); //call init in setup
}

void loop() {
// this should never run, Watchy deep sleeps after init();
}

完成后,上传到手表。想分享?截 200x200 黑白图,上传 GitHub,拉 PR 到watchfaces.json。社区有上百个贡献表盘,等你加入!

开发库和资源

Watchy 依赖这些库(都在 Arduino 库管理器中):

  • GxEPD2 + Adafruit GFX:处理显示绘图。
  • DS3232RTC:RTC 时间管理。
  • BMA423 API:加速计接口。
  • WiFiManager:WiFi 配置。
  • Arduino_JSON:解析 API 数据(如天气)。

安装简单:Arduino IDE 搜索安装。项目还支持 PlatformIO,代码主要 C/C++。GitHub 上有 293 次提交,最新库 v1.4.15(2025 年 8 月)。

常见问题

新手常见坑:

  • 屏幕问题:确保 FPC 线缆插紧,用最新 GxEPD2 库。
  • 组装:先钩上部卡扣,再按下;屏幕保护膜别忘撕。
  • 软件:忽略 AVR 架构警告;macOS esptool 错误可以去看一下 GitHub issue。
  • 单位转换:天气想用华氏度?可以参考自定义指南。
  • 求助:GitHub issue 或 Discord 社区:https://discord.gg/ZXDegGV8E7

更多细节看官方 FAQ。

Watchy 结合了 ESP32 的强大和电子墨水的节能,适合初学者入门,也能让高手玩出花样。有兴趣的小伙伴可以动手试试看了!

首发于DF创客社区,转载请注明来源信息


项目地址:watchy.sqfmi.com/docs/g

编辑于 2026-01-07 · 著作权归作者所有