从 0 到上手腕:ESP32 智能手表(ESP32-Smart-Watch)实战教程
【免费下载链接】ESP32-Smart-WatchAn open source smartwatch based on the ESP32 compatible with the Arduino IDE.项目地址: https://gitcode.com/gh_mirrors/es/ESP32-Smart-Watch
ESP32-Smart-Watch 是一个能在 Arduino IDE 里直接烧录开发的 ESP32 智能手表项目。这篇文章带你走完:硬件准备、第一次烧录固件、3D 打印外壳、改代码加功能。
它只能看时间吗?这块 ESP32 智能手表能干什么
一句话:这是一块完全开源(MIT 协议)的手表,硬件设计文件、固件、外壳模型全在仓库里,可以当 IoT 控制器,也可以当 DIY 饰品。
核心特性:
- 通过 BLE 蓝牙连接安卓手机,在表盘上显示手机通知
- 点按屏幕上的 Spotify 图标控制音乐播放
- 内置计算器,主屏放应用图标、通知条目
- 触摸屏 + 手势(腕部动作)唤醒,配合睡眠策略省电
- 板载 micro-USB 一个口搞定充电和下载程序,不用扩展坞
手表基于 ESP32 WROOM 模块,当前硬件版本是 V5,比 V4 更薄且保留全部功能。


开工前 3 项检查:硬件、IDE 和 3 个库
先说硬件:项目固件是针对作者自研 PCB 写的,手上只有普通 ESP32 开发板的话跑不了完整手表功能,但可以通读代码做 ESP32 手表 Arduino 开发练习;要真正上手腕,需要按仓库里的 KiCad 文件(SmartWatch V4/、SmartWatch V5/ 目录)打板,或等打好的板子。
再准备电脑环境:Arduino IDE 安装 ESP32 板级支持包,然后按 README 装三个库(版本以 README 为准,其它版本"大概率能跑"但作者没测过):
- Adafruit GFX 1.11.9
- Adafruit ST7735 / ST7789 1.10.3
- base64 1.30(Densaugeo 出品)
全可以在 IDE 的库管理器里直接装。
克隆到烧录的 3 步走,以及版本怎么选
第一步,克隆仓库:
git clone https://gitcode.com/gh_mirrors/es/ESP32-Smart-Watch第二步,挑版本。仓库里有 3 套固件,README 明确只有 V3 在持续开发:
- SmartWatch_Software(V1):用深度睡眠,省电最狠,适合把续航放第一位
- Smartwatch_Software_V2(V2):动画和应用更多,改用轻睡眠,点按或手腕动作唤醒更快
- Smartwatch_Software_V3(V3):更稳定、可扩展,新手直接从这套开始
第三步,用 Arduino IDE 打开对应目录的主 .ino(V3 就是 Smartwatch_Software_V3.ino,.ino 是 Arduino 的入口文件),选好板和串口,点上传。
一个容易踩的点:安卓配套 App 在独立仓库,且版本强绑定——V1 固件只配 App 1.2.0 及以下,V2/V3 必须用 2.0.0 之后的版本,否则连不上。
外壳与资料:3D 打印你的表壳
- 仓库根目录的 .stl 文件(Rev 5 Top/Bottom、SmartWatch Rev 5 Case 2 上下壳)就是可直接打印的表壳模型,切片软件里打开即可
- SmartWatch.FCStd 是 FreeCAD 源文件(.FCStd 是 FreeCAD 的工程文件),想改尺寸、刻字从这里动手
- Pictures and Videos 目录存了各代手表的实拍照片和安卓 App 的 GATT 流程图,看蓝牙协议时有用
- SmartWatch V4/ 和 SmartWatch V5/ 里有 KiCad 原理图、PCB 源文件、Gerber 生产文件和 BOM
- imageTo565array.m 是把图片转成屏幕 565 色彩数组的脚本,自己做图标背景时能用上

二次开发入口:蓝牙名和屏幕参数改哪里
想加功能或改配置,从这三处入手(以 V3 为例):
- 主循环在主 .ino 的 loop() 里:先判断该不该醒着,醒着就 drawFrame() 刷新画面并拉通知,没人操作就 deviceSleep() 休眠,被摸醒后 onWakeup() 重新连蓝牙、刷时间。
- 蓝牙名在 Bluetooth.ino 里,一行搞定:
BLEDevice::init("ESP32 Smartwatch");把括号里的字符串改掉,手机蓝牙列表里的名字就跟着变。
- 屏幕宽高、引脚定义、各种阈值常量都集中在 Declarations.h,比如 SCREEN_WIDTH 160、SCREEN_HEIGHT 128,全局搜一下就知道每个参数管什么。
避坑清单:ESP32 手表 Arduino 开发的 4 个常见坑
⚠️ 库版本:装了新版库编译也过,但花屏、图标错位,先把 README 指定的版本装回来再排查别的。
⚠️ 选板与端口:Arduino IDE 里板子要选 ESP32 系列开发板并选对串口,否则上传时一直卡"Failed to connect"。
⚠️ App 兼容:配套 App 版本别随意升降,V1 与 V2/V3 用的是两套通讯结构,互相不认。
⚠️ 屏幕不亮:V3 连续四次唤醒后无人操作会主动睡觉,摸一下屏幕或重新连接试试;触摸偏位的话,把 Declarations.h 里 CLEAR_TOUCH_CALIBRATION 打开重新烧录一次校准。
把 V3 固件先烧到你的板子上,再打印 Rev 5 表壳装起来。上手腕之后,改掉蓝牙名、换上自己的图标,就是属于你的一块表。这套 ESP32 手表 Arduino 开发流程到此全部走通,去 loop() 里加你的第一个应用吧。
【免费下载链接】ESP32-Smart-WatchAn open source smartwatch based on the ESP32 compatible with the Arduino IDE.项目地址: https://gitcode.com/gh_mirrors/es/ESP32-Smart-Watch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考