2、智能穿戴硬件基础:常见传感器(加速度计、陀螺仪、心率、PPG)、微控制器选型与开发板介绍
智能穿戴设备的本质,是一个“感知—处理—决策—反馈”的闭环系统。在TinyML项目中,硬件平台决定了数据采集的质量、模型推理的能效比以及产品的续航表现。本章将围绕传感器选型、微控制器(MCU)架构以及典型开发板资源展开,帮助你在动手训练模型之前,先建立对硬件底层的系统认知。理解这些基础,将直接影响后续数据预处理策略、模型输入维度设计以及低功耗告警逻辑的实现方式。
2.1 核心传感器原理与选型要点
智能穿戴设备中最核心的传感器包括加速度计、陀螺仪、心率传感器(PPG)以及辅助的环境传感器。加速度计测量物体在三个轴向上的线性加速度,单位通常为g(9.8m/s²)。在动作识别场景中,加速度计能够捕捉手臂摆动、身体倾斜、步态周期等宏观运动特征。陀螺仪则测量绕三个轴的角速度,单位为°/s,用于识别旋转动作,如手腕翻转、头部转动等。两者结合构成六轴惯性测量单元(IMU),若再加入磁力计,则形成九轴系统,可提供更完整的姿态估计。
心率传感器的主流方案是PPG(光电容积脉搏波描记法)。其原理是使用绿色或红外LED照射皮肤,通过光电二极管检测血液容积变化引起的反射光强度波动。PPG信号不仅包含心率信息,还能提取心率变异性(HRV)、血氧饱和度(SpO₂)等衍生指标。在TinyML项目中,PPG信号的质量受佩戴松紧度、皮肤颜色、运动伪影影响较大,因此通常需要配合加速度计进行运动噪声消除。
| 传感器类型 | 关键参数 | 典型型号 | 接口 | 功耗(工作/待机) |
|---|---|---|---|---|
| 加速度计 | 量程±2~16g,采样率1~1000Hz | BMI270, LSM6DSOX | I²C/SPI | 0.5mA / 1µA |
| 陀螺仪 | 量程±125~2000°/s | ICM-42688-P | I²C/SPI | 0.9mA / 2µA |
| PPG心率 | 波长520nm/660nm/940nm | MAX30102, MAX86141 | I²C | 0.7mA / 0.7µA |
| 温度/湿度 | 精度±0.2°C,±2%RH | SHTC3, SHT40 | I²C | 0.4mA / 0.3µA |
2.2 微控制器选型:从Cortex-M到RISC-V
微控制器是TinyML推理的“大脑”。选择MCU时需权衡算力、内存、功耗和生态四个维度。ARM Cortex-M4F系列凭借FPU(浮点运算单元)和DSP指令,成为当前TinyML的主流选择。Cortex-M33在M4基础上增加了TrustZone安全扩展和协处理器接口,适合需要安全启动和加密通信的医疗级穿戴设备。RISC-V架构则提供了开放性和定制化可能,如嘉楠K210内置KPU神经网络加速器,可在0.3W功耗下运行目标检测模型。
内存是另一个关键约束。TinyML模型通常需要100KB~1MB的Flash存储权重,RAM则需容纳中间激活值。例如MobileNetV1在STM32F746(320KB RAM)上运行需要约2.5MB RAM,因此必须进行模型压缩或选择带外部PSRAM的芯片。实际项目中,建议优先选择RAM≥256KB、Flash≥1MB的MCU,以便部署量化后的模型。
// 典型MCU资源对比(以Arduino Nano 33 BLE为例)
// 主控:nRF52840(Cortex-M4F @64MHz)
// Flash: 1MB, RAM: 256KB
// 支持BLE 5.0,内置NFC-A标签
// 静态功耗:待机1.9µA,运行3.5mA(无无线电)
// 适合部署:TFLite Micro 量化模型(≤300KB)
- 确定传感器数量与采样率,计算数据吞吐量(如6轴IMU@100Hz = 1200B/s)
- 估算模型大小与RAM需求(可先用TFLite Micro基准测试)
- 评估功耗预算:若电池容量100mAh,目标续航24h,则平均电流需≤4.2mA
- 考虑外设接口:I²C/SPI通道数、DMA通道、定时器数量
- 验证开发工具链:是否支持TensorFlow Lite Micro、Edge Impulse等框架
2.3 开发板实战:Arduino Nano 33 BLE与STM32L4
Arduino Nano 33 BLE是TinyML入门最友好的开发板之一。它基于nRF52840 SoC,板载BMI270六轴IMU和MP34DT05麦克风,可直接用于动作识别和语音唤醒项目。其优势在于Arduino生态的丰富库支持,以及TFLite Micro官方示例的完整适配。对于需要更高算力的场景,STM32L4系列(如B-L475E-IOT01A)提供了更丰富的传感器接口和低功耗模式,配合STM32Cube.AI工具链,可将Keras模型直接转换为C代码。
ESP32-S3则是一个兼顾Wi-Fi/BLE与AI加速的选择。其内置向量指令和神经网络加速器,支持INT8量化推理,适合需要云端同步或OTA更新的穿戴原型。但需注意,ESP32-S3的功耗相对较高(Wi-Fi开启时平均电流>100mA),在电池供电场景中需谨慎设计唤醒策略。
| 开发板 | MCU | 板载传感器 | 典型功耗 | 适用场景 |
|---|---|---|---|---|
| Arduino Nano 33 BLE | nRF52840 | BMI270, MP34DT05 | 3.5mA(运行) | 动作识别、语音唤醒 |
| STM32L4 Discovery | STM32L475 | LSM6DSL, HTS221 | 2.8mA(运行) | 环境监测、健康分析 |
| ESP32-S3-DevKitC | ESP32-S3 | 无(需外接) | 40mA(Wi-Fi) | 边缘AI+云连接 |
| Wio Terminal | SAMD51 | 光敏、麦克风、IMU | 30mA(屏幕亮) | 可视化原型验证 |
2.4 案例拆解:低功耗跌倒检测手环原型
我们设计一个基于Arduino Nano 33 BLE的跌倒检测手环,目标是在识别跌倒动作后通过BLE发送告警,同时保证100mAh电池续航超过48小时。初始方案直接使用BMI270的6轴数据,以50Hz采样率持续推理一个双层LSTM模型,但实测平均电流达到8.2mA,续航仅12小时。
分析发现,主要功耗来自三方面:传感器持续采样(1.2mA)、MCU频繁唤醒(3.5mA)、BLE广播(2.5mA)。优化措施如下:
- 将BMI270配置为仅加速度计模式,启用FIFO中断,每200ms批量读取一次数据,传感器功耗降至0.4mA
- 将LSTM模型替换为1D-CNN+阈值判断的两级流水线:第一级用轻量CNN(仅3层)在MCU上每200ms推理一次,检测到疑似跌倒时再唤醒完整模型确认
- BLE仅在确认跌倒后开启广播,平时关闭无线电
优化后,系统平均电流降至1.8mA,续航提升至55小时。关键指标对比:推理准确率从92.3%微降至91.8%(可接受),但响应延迟从800ms降至350ms。复盘经验:在TinyML项目中,“传感器级低功耗”往往比“模型级优化”带来更显著的收益,优先考虑数据采集策略的调整。
2.5 硬件调试与信号完整性要点
在硬件调试阶段,需重点关注I²C总线的上拉电阻、传感器中断引脚的配置以及电源纹波。I²C总线在1.8V逻辑下通常使用2.2kΩ~4.7kΩ上拉电阻,若线缆过长或设备过多,需适当降低电阻值。传感器中断引脚应配置为开漏输出并连接MCU的GPIO外部中断,以实现事件驱动的低功耗唤醒。
电源设计方面,穿戴设备常用锂电池(3.7V)配合LDO或DC-DC降压至3.3V/1.8V。PPG传感器对电源纹波敏感,建议在VCC引脚并联10µF+100nF电容,并在PCB布局时远离射频天线。若使用MAX30102等PPG芯片,还需注意其LED驱动电流的设置——过大的电流不仅增加功耗,还会导致光电二极管饱和。
// 传感器初始化示例(BMI270 + Arduino)
#include "BMI270.h"
BMI270 imu(Wire, 0x68);
void setup() {
imu.begin();
imu.setAccelRange(±4g);
imu.setAccelODR(100); // 100Hz
imu.enableFIFO(true);
imu.setFIFOThreshold(20); // 每20个样本触发中断
attachInterrupt(digitalPinToInterrupt(2), onFIFO, FALLING);
}
void onFIFO() {
// 读取FIFO数据并执行推理
imu.readFIFO(buffer, 20);
runInference(buffer);
}
最后,硬件选型应遵循“先验证、后优化”的原则。在项目初期,优先选择生态成熟、调试工具完善的开发板(如Arduino Nano 33 BLE),快速完成数据采集和模型验证。当算法稳定后,再根据功耗和成本需求,设计定制化PCB并选用更精简的MCU。这种“从开发板到定制板”的路径,能显著降低项目风险。