无线 ECG 心率监测腕表:Arduino Nano + nRF24L01 + uECG 可穿戴方案
核心硬件
| 模块 | 型号/规格 | 作用 |
|---|---|---|
| uECG 设备 | 专用 ECG 前端 | 胸部贴片,板载 ECG 采集+BPM 计算+nRF24 发射 |
| Arduino Nano R3 | ATmega328P | 腕端接收、显示控制 |
| nRF24L01+ 模块 | 普通/带 PA LNA 均可 | 2.4GHz 接收 uECG 数据包 |
| WS2812B RGB LED 环 | 16 颗 (5050 封装) | 心率可视化:颜色/亮度/点亮数表示 BPM |
| LiPo 电池 | 200mAh+ | 腕端供电,需充电保护板 |
为何选择 uECG + 无线腕显?
传统胸带心率带需有线连接显示单元,跑步时线缆摆动干扰 ECG 信号,且胸前显示不在视野内。本方案:
- uECG 胸部贴片完成高精度 ECG 采集 (250Hz/12-bit) 与板载 BPM 运算
- 切换至 Raw Data Mode (长按按键) 后,通过 nRF24 兼容协议实时发射数据包
- 腕端 Nano + nRF24 接收,驱动 LED 环直观显示心率区间
- 完全无线,跑步/骑行无束缚,心率数据实时可见
硬件接线 (极简 12 线)
nRF24 → Arduino Nano:
GND → GND
VCC → 3.3V (严禁 5V!)
CE → D9
CSN → D8
SCK → D13 (硬件 SPI)
MOSI → D11
MISO → D12
WS2812B LED Ring:
VDD → 5V (Nano USB 供电或电池直供)
GND → GND
DI → D5
Battery:
+ → 5V (或 RAW 引脚经板载稳压)
- → GND
关键点: SPI 引脚 (D11/D12/D13) 固定不可改,其他引脚可在代码中修改定义。
固件核心逻辑
射频配置 (与 uECG 硬编码匹配)
- 管道地址:
{0x0E,0xE6,0x0D,0xA7,0,0,0,0}—— **位反序** 后写入寄存器 - 信道:22 (2.422 GHz)
- 速率:1 Mbps
- 地址宽度:4 字节
- CRC:关闭 (uECG 兼容性要求)
- 自动应答/动态载荷:关闭
- 载荷长度:32 字节
数据包解析与滤波
- BPM 位于数据包第 5 字节 (索引 5,0-based)
- 无 CRC 保护,信道噪声会导致误包 → **5 次连续一致性投票滤波**
- uECG 发包率 ~100Hz,5 包仅 50ms 延迟,体感实时
心率可视化映射算法
// BPM → 颜色渐变 (蓝→绿→黄→粉→红)
t1=90, dd=25; // 基准 90bpm,每 25bpm 变一个色相
if(bpm < t1) {R=0; G=0; B=max;}
else if(bpm < t1+dd) {R=0; G=max*(bpm-t1)/dd; B=max-G;}
else if(bpm < t1+2dd){R=max*(bpm-t1-dd)/dd; G=max-R; B=R/4;}
else if(bpm < t1+3dd){R=max; G=0; B=max/2 - max*(bpm-t1-2dd)/(2*dd);}
else {R=max; G=0; B=0;}
// 点亮 LED 数 = (bpm - 80) / 8 (80bpm 以下全灭,突出高强度区间)
on_pixels = max(0, (bpm-80)/8);
实测体验与发现
- 作者实测跑步几分钟心率即达 192bpm (全亮红色),远超同年龄理论最大值 (220-age)
- 停止运动后心率缓慢下降,非瞬间回落 → 传感器可靠,非运动伪迹
- 引发思考:长期高强度训练是否提升了最大心率耐受?或存在隐性心脏风险?
- 副产品发现:uECG 作为 EMG (肌电) 传感器控制机械手表现优异
腕带组装工艺
- 热熔胶固定 Nano (外径贴合 LED 环内环)、nRF24 (塞入 LED 环中心)、电池 (夹层)
- 缝制至废弃防静电腕带 (或运动腕带),佩戴舒适牢固
- 所有焊点涂覆热缩管/绝缘漆防汗腐蚀
代码与原理图
完整固件 bpm_watch.ino 已内嵌,含 Adafruit_NeoPixel、RF24 库依赖。Fritzing 原理图文件 nrf24_led_ring.fzz 可下载。
复现关键提示
- uECG 必须长按进入 Raw Data Mode (默认 BLE 模式 nRF24 不可收)
- 管道地址位反序函数
swapbits()必须正确,否则永远收不到包 - nRF24 供电加 10μF 陶瓷电容贴片在模块焊盘上
- LED 环供电建议直连电池 (经 Schottky 二极管防反接),避免 Nano 稳压器过流
制造工艺
- 树莓派打造空气质量与气象站:InfluxDB+Grafana可视化
- 树莓派与 Python 构建远程温度传感器:分步实战指南
- 树莓派家庭温度监测仪表盘:实时图表展示
- 远程心率监测系统:AWS IoT 告警 + 树莓派 Windows IoT 可视化
- 用 Arduino 打造绚丽显示器 Ambilight 系统
- Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
- 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
- 用光敏电阻和 Arduino 制作精准心率监测仪
- 实时心跳 LED 可视化:基于 uECG 与 Arduino Nano 的心率光环
- CNC 加工:材料与零部件的精密制造
- 瑞萨与 Altran 推出首款低速脉冲 UWB 社交距离腕表
- 智能服装集成心率传感器实现可靠可穿戴监测