DIY Arduino 智能手表:打造属于你的 Apple Watch 风格腕表
元器件与物料清单
| 元器件 | 数量 | 备注 |
|---|---|---|
| SparkFun Arduino Pro Mini 328 - 3.3V/8MHz | 1 | 核心主控 |
| Adafruit Bluefruit LE - BLE 4.0 (nRF8001 Breakout v1.0) | 1 | 蓝牙低功耗模块 |
| Adafruit 单色 0.96" 128x64 OLED 显示屏 | 1 | I2C/SPI 接口 |
| Adafruit 锂聚合物电池 - 3.7V 100mAh | 1 | |
| Micro-USB 连接器 | 1 | 充电/数据口 |
| 1MΩ 1206 SMD 电阻 | 3 | 触摸按键上拉 |
| 20mm 表带 (含弹簧棒) | 1 | |
| USB-A 转 Micro-USB 线 | 1 | |
| 2x5mm 螺丝 | 4 | 固定后盖 |
| SparkFun LiPo 充电器基础版 - Micro-USB | 1 | 充电管理 |
| SparkFun FTDI Basic Breakout - 3.3V | 1 | Pro Mini 烧录器 |
| 50x50mm 铝板 | 1 | 后盖材料,导电用于触摸参考地 |
| 点阵/条排焊板 | 1 | 内部走线板 |
所需工具与设备
- 电烙铁
- 3D 打印机
- 常用手工工具:锯、钳子、螺丝刀、美工刀
应用与在线服务
- Arduino IDE
项目简介
我想要一款能显示 iPhone 通知、体积小巧可佩戴、充电电池续航至少一天的智能手表。于是基于 Arduino Pro Mini 打造了这款"Apple Watch 风格"智能表:通过蓝牙连接 iPhone,Micro-USB 口直连电池充电简便,正面引出触摸感应线作为按键交互。
核心功能:
- 自动同步 iPhone 时间 (收到通知时校准,消除 Arduino 时钟漂移)
- 10 秒无操作熄屏省电
- 中间触摸键唤醒或新通知唤醒
- 基于 Luke Berndt 的 ANCS 库实现 iOS 通知中心服务访问
步骤 1:电路硬件组装
元件紧凑、走线多,经过多次迭代总结出以下组装顺序:
- Bluefruit LE 与 Pro Mini 连接:用柔性导线焊接
- 制作触摸按键板:引脚取自 LED 二极管剪脚,柔性线连至 Pro Mini
- OLED 屏幕改装引脚并组装
- 接体参考地线:从 GND 引一根长柔性线到达表背,接触皮肤(电容触摸需要参考地)
- Micro-USB 连接器接线:参考 USB pinout,GND 和 RAW 连接 (注意:正极接 RAW 而非 VCC)
- 电池接线:正极接 RAW,负极接 GND (同理接 RAW)
充电器改装 (重要!):
- 剪断 Micro-USB 线
- 红线接电池连接器红线,黑线接黑线
- 严禁直接用 5V USB 给锂聚合物电池充电!必须经 LiPo 充电模块,否则损坏电池甚至起火。
建议:用胶带隔离元件防止短路。
步骤 2:软件与库修改
使用以下库,部分需修改适配硬件:
- ANCS Library for Arduino: GitHub
- Bluetooth LE SDK for Arduino: GitHub
- U8glib (OLED 驱动): GitHub
- Capacitive Sensing Library: Arduino Playground
必要的库修改
- ANCS Library - notif.cpp 第 826 行:
aci_state.aci_pins.reset_pin = 9;(原值需改为 9 适配 Bluefruit) - ANCS Library - ancs_data_source.cpp:
- 整个文件替换为 提供的修正版
- 第 217 行添加:
case ANCS_NOTIFICATION_ATTRIBUTE_DATE: debug_print(F(", Date: ")); datetime = (char*)malloc(5); strncpy(datetime, buffer, 4);
- ANCS Library - ancs_notification.h:整个文件替换为 提供的修正版
Pro Mini 无板载下载器,需外接 FTDI (如 SparkFun 3.3V 版)。编译注意: Arduino IDE 1.8.3 存在 GCC 兼容性问题,建议用 IDE 1.0.6 编译上传。
随项目附带 ZIP 包含完整代码和已修改库,代码含详细注释。
步骤 3:3D 打印外壳
设计容纳所有元件的外壳,附带 STL 文件 (经两版迭代,图片中形状可能略有差异)。
后盖用废铝盒剪裁 50x50mm,钻 4 个螺丝孔 (需预留表带缝隙)。导电材质后盖可连接体参考地线。用木块夹持铝板锯切得直边。
3D 打印件后处理:
- 细砂纸打磨
- 喷填充底漆,覆盖层纹
- 再次打磨 (重复 3-4 次直到光滑)
- 喷面漆
请遵循喷罐说明操作以获最佳效果。
步骤 4:最终组装
- 触摸按键引脚穿过外壳下排孔,折回插入上排孔,压平整
- 塞入主板,调整屏幕位置 (因组装公差和壳体设计,屏幕可能略有倾斜)
- Micro-USB 连接器穿过侧孔 (用胶带加厚固定)
- 体参考地线焊接到铝后盖,绝缘胶带包裹,4 颗螺丝锁紧
步骤 5:使用方法
- iPhone 设置 → 蓝牙 → 启用 → 搜索 "ANSC rusk" → 配对
- 配对成功后,手表接收 iPhone 所有通知
- 同时触摸中间键 + 右键 = 重启手表 (连接异常时用)
- 充电:插入改装 USB 线连接 LiPo 充电模块
代码
Arduino Apple Watch.zip
压缩包含完整 Arduino 代码及所有已修改库,仅供下载。
No preview (download only).
自定义零件与外壳
容纳所有元件的智能手表外壳 STL 模型
原理图
按电路图连接所有元件
制造工艺
- 计时演进史:从日晷到精密石英表的技术跨越
- 用 Adafruit 60 LED NeoPixel 环形灯和 Arduino 制作时尚挂钟
- DIY 蓝牙控制 Arduino 间谍小车
- FlickMote:基于手势的智能家居红外遥控器
- DIY Arduino TV-B-Gone:万能关机遥控器
- UnifiedWater v1 — 基于 Arduino MKR GSM 1400 的完整水质监测套件
- 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
- Arduino 101 BLE + Blynk:DIY 蓝牙遥控履带坦克车
- Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY
- 从零构建智能 Arduino 四足机器人:完整指南