设计一款便携式计步器
我想要一个真正可以佩戴的计步器——不是口袋里的手机,也不是价格200美元、带有封闭应用的健身手环。两个Seeed电路板、一块圆形IPS面板和一个Nordic nRF54芯片已经准备就绪。项目需求很简单:统计真实的步行步数,忽略震动干扰,能承受USB拔出,还能通过蓝牙与浏览器通信。
本文是一份完整的制作记录,按照我希望第一个周末就能完成的记录方式撰写。内容涵盖所需零件、引脚定义、耗费数小时的Zephyr陷阱调试方法、当PlatformIO的OpenOCD无法识别探针时的刷写技巧,以及如何在Chrome浏览器中驱动手表而无需编写原生应用程序。
最终成品包括:1.28英寸圆形表盘、搭载LSM6DS3TR-C的100Hz软件计步器、存储在芯片内部RAM中的步数数据、BLE名称为StepCounter的设备,以及一个本地网页界面(Watch Lab),用于设置每日目标、灵敏度和时间。
Seeed XIAO 的便携式腕部设备,搭载 nRF54LM20A 感应器 + 圆形显示屏。固件为 Zephyr + LVGL。手机/电脑配套应用通过 Web Bluetooth 实现(Windows 或 Android 使用 Chrome/Edge;iPhone 使用 Bluefy)。
以下功能暂不包含(有意为之):原生 iOS/Android 应用、App Store 签名、Flutter、硬件 LSM6DS3 步数传感器数据卸载、屏幕休眠/电池续航(数月)、Matter/Thread 等。这些均为后续产品开发内容。本项目中圆形显示屏的触控功能从未可靠,目前暂不计划围绕点击唤醒设计用户界面。
物料清单
•Seeed XIAO nRF54LM20A Sense
•XIAO 圆形显示屏
•IPEX / u.FL天线
•LiPo 3.7 V电池
•3D打印边框
硬件连接方式
圆形显示屏是一个屏蔽板,XIAO通过背面插入。显示屏的SPI、触摸/RTC I2C、电池分压器和microSD卡均共享XIAO接口。Sense IMU集成在XIAO本身上,由nPM1300供电。
逐步组装步骤
第一步 — 机械装配
1. 将圆形显示屏安装在XIAO上。XIAO的USB-C接口应从边框中突出,这样无需打开外壳即可进行刷机。
2. 将堆叠物插入印刷边框中。切勿挤压柔性部件或显示屏的FPC。
3. 将USB-C接口插入电脑。设备管理器(或使用`arduino-cli board list`)应显示CMSIS-DAP和一个COM端口。在本机上,该端口为COM14,PID为0x0068。
第二步 — 安装工具链及其他软件组件
安装工具集的过程会非常繁琐,因为我们需要安装所有必要的COM端口及配套工具。如果你愿意手动操作,可以参考此Wiki页面:XIAO nRF54LM20A Sense入门指南 | Seeed Studio Wiki
或者,如果你是AI爱好者,我们可以直接使用AI工具完成全部设置。我在此项目中使用了Open Code配合Claude、DeepSeek和Grok来协助完成。
此处附上我在该项目中用于配置这些工具的技能文件。
最后我还附上了完整的技能文件,可用于将固件烧录到设备中。
固件烧录完成后,你可以在显示屏上查看完整的日志信息。
第三步 — 使用Watch Lab(Web蓝牙)
为了控制整个硬件单元,我搭建了一个Web BLE接口,用于连接、控制和监控设备。
首先尝试连接设备。
一旦成功连接,你就可以看到完整的日志以及实时数据。
在顶部,它会显示设备的实际步数,然后我们可以设置数据和时间、重置以及目标,并通过面板调整灵敏度。
此外,我们还可以通过该面板在网页界面中查看设备实时的IMU数据。
以下是用于控制计步器的Git页面——Watch Lab — XIAO StepCounter。
如果您愿意,可以编辑整个网站。
总结
这款计步器是一款紧凑型可穿戴设备,采用Seeed XIAO nRF54LM20A Sense模块和圆形XIAO显示屏构建而成。它利用内置的IMU传感器来追踪步数,并显示每日进度、时间、行驶距离、消耗卡路里以及电池状态等有用信息。用户设置(包括步数目标和灵敏度)存储在闪存中,因此在断电后仍能保留。该设备可通过基于Web的Watch Lab界面使用蓝牙无线配置,允许用户设定每日目标、调整灵敏度、从电脑同步时钟,并查看实时IMU数据图表。它直接兼容Windows系统的Chrome或Edge浏览器,以及iPhone上的Bluefy浏览器,无需越狱或特殊修改。
本文编译自hackster.io





