4、传感器基础知识:常见传感器类型及其接口协议
在nRF52840 BLE TinyML项目中,传感器是数据采集的起点,也是整个系统感知物理世界的“触角”。无论是加速度计、陀螺仪、温度传感器还是麦克风,它们输出的原始数据质量直接决定了后续TinyML模型的推理准确性和低功耗策略的有效性。本章将系统梳理常见传感器的物理原理、关键参数、接口协议(I2C、SPI、模拟输出、PDM等),并结合nRF52840的外设资源,给出选型与工程接入的实用指南。
4.1 常见传感器类型与工作原理
在可穿戴设备和环境监测应用中,传感器种类繁多,但按物理量类型可划分为运动类、环境类和声学类三大阵营。理解每种传感器的物理转换机制,是正确解读数据、设计滤波器和训练TinyML模型的前提。
4.1.1 运动类传感器:加速度计与陀螺仪
加速度计(Accelerometer)测量物体在X、Y、Z三轴上的线性加速度,其核心原理基于MEMS(微机电系统)中的质量块-弹簧-阻尼结构。当设备发生加速度变化时,质量块产生位移,通过电容变化或压阻效应转换为电信号。加速度计适合检测静态倾斜(重力分量)和动态运动(如走路、跑步、跌倒)。
陀螺仪(Gyroscope)则测量绕三轴的角速度,基于科里奥利效应。MEMS陀螺仪内部有一个高速振动的质量块,当设备旋转时,科里奥利力使质量块在垂直方向产生位移,从而检测角速度。陀螺仪对旋转运动敏感,但存在零偏漂移问题,通常需要与加速度计融合(即IMU惯性测量单元)。
关键参数对比:
| 参数 | 加速度计 | 陀螺仪 |
|---|---|---|
| 量程 | ±2g ~ ±16g | ±250 ~ ±2000 dps |
| 灵敏度 | 16384 LSB/g(±2g时) | 131 LSB/dps(±250时) |
| 噪声密度 | ~150 μg/√Hz | ~0.005 dps/√Hz |
| 主要应用 | 步数检测、倾斜、振动 | 姿态角、旋转检测 |
4.1.2 环境类传感器:温度、湿度、气压
温度传感器常见有热敏电阻、RTD和数字温度芯片(如TMP117、SHT40内置)。数字温度芯片内部集成ADC和校准逻辑,直接输出摄氏度数值,精度可达±0.2°C。湿度传感器通常采用电容式原理,高分子感湿膜吸收水分子后介电常数变化,导致电容变化。气压传感器(如BMP390)基于压阻式或电容式MEMS膜片,测量气压,可用于海拔估算和室内定位辅助。
这三类传感器通常集成在同一个封装中(如BME280),通过I2C/SPI接口访问,数据更新率较低(1-100 Hz),非常适合低功耗场景。
4.1.3 声学传感器:麦克风
麦克风将声波压力转换为电信号。传统驻极体麦克风输出模拟信号,需要外部ADC采样;而数字PDM麦克风(如ICS-43434)内部集成Sigma-Delta调制器,直接输出PDM(脉冲密度调制)比特流。nRF52840内置PDM外设,可以硬件解码PDM为16-bit PCM数据,非常适合语音唤醒和声音事件检测。
4.2 传感器接口协议详解
nRF52840支持多种传感器接口协议,每种协议在速率、引脚占用、功耗和复杂度上各有取舍。正确选择接口协议是硬件设计的第一步。
4.2.1 I2C(TWI)协议
I2C(Inter-Integrated Circuit)是一种两线制串行总线(SCL时钟线 + SDA数据线),支持多设备挂载,通过7位或10位地址区分设备。nRF52840的TWI外设兼容I2C规范,支持100 kbps(标准模式)和400 kbps(快速模式)。
- 优点:仅需2根线,支持多设备,地址配置灵活,适合低速传感器(加速度计、温湿度、气压)。
- 缺点:速率有限(400 kbps),不适合高数据率传感器(如高采样率麦克风)。
- 工程要点:需要外部上拉电阻(通常4.7 kΩ),总线电容限制设备数量;nRF52840的TWI支持DMA传输,可减少CPU干预。
4.2.2 SPI协议
SPI(Serial Peripheral Interface)是四线制同步串行接口(SCLK、MOSI、MISO、CS),支持全双工通信,速率可达数十Mbps。nRF52840提供3个SPI主设备实例,最高支持32 Mbps。
- 优点:高速率,适合高数据量传感器(如16-bit ADC、高采样率IMU);无地址机制,通过片选信号CS选择设备。
- 缺点:占用引脚多(4根),每个设备需要独立CS线,不适合大量传感器挂载。
- 工程要点:SPI模式(CPOL/CPHA)必须与传感器数据手册匹配;nRF52840的SPI支持EasyDMA,可自动传输数据。
4.2.3 PDM接口(数字麦克风)
PDM(Pulse Density Modulation)是一种单线数据+单线时钟的接口,用于连接数字麦克风。nRF52840的PDM外设支持64倍过采样率,内部集成抽取滤波器,输出16-bit PCM数据。PDM接口的优势在于:
- 单数据线即可传输立体声(左右声道时分复用);
- 数据以比特流形式传输,抗干扰能力强;
- nRF52840硬件解码,无需CPU逐位处理。
4.2.4 模拟输出与SAADC
部分传感器(如模拟麦克风、光敏电阻)输出模拟电压信号。nRF52840内置12位逐次逼近型ADC(SAADC),支持8个通道,可配置增益和采样时间。模拟接口需要额外注意:
- 信号调理:可能需要运放或RC滤波;
- 参考电压:nRF52840的SAADC支持内部参考(0.6V)或外部参考;
- 采样率:SAADC最高采样率约200 kSPS,满足音频和振动信号需求。
| 接口协议 | 引脚数 | 最大速率 | 典型传感器 | nRF52840外设 |
|---|---|---|---|---|
| I2C | 2 | 400 kbps | BME280, MPU-6050 | TWI0/TWI1 |
| SPI | 4+CS | 32 Mbps | ICM-20948, MAX30102 | SPI0/1/2 |
| PDM | 2 | 2.4 MHz | ICS-43434, INMP441 | PDM |
| 模拟 | 1 | 200 kSPS | 模拟麦克风, 光敏电阻 | SAADC |
4.3 传感器数据采集与低功耗设计
在BLE TinyML项目中,传感器数据采集不仅要保证数据完整性,还要兼顾功耗预算。nRF52840的典型工作电流为:CPU运行约5 mA,BLE广播约10 mA,传感器采集约0.5-2 mA。低功耗设计的核心是“按需采集、批量传输、快速休眠”。
4.3.1 数据采集模式
根据应用场景,传感器采集可分为三种模式:
- 连续采集:传感器始终开启,以固定采样率(如100 Hz)输出数据。适用于实时性要求高的场景(如跌倒检测),但功耗较高。
- 事件触发:传感器在检测到特定事件(如运动超过阈值)时通过中断引脚唤醒MCU。nRF52840的GPIOTE模块可监听传感器INT引脚,实现低功耗待机。
- 定时批量:MCU定时唤醒(如每10秒),批量读取传感器FIFO中的数据,然后立即休眠。适用于环境监测(温湿度、气压)。
4.3.2 传感器FIFO与DMA
许多现代传感器(如BMI270、ICM-20948)内置FIFO缓冲区,可存储数百个采样点。MCU可以进入休眠模式,传感器持续采集并写入FIFO,当FIFO达到阈值时通过中断唤醒MCU一次性读取。nRF52840的TWI和SPI外设支持EasyDMA,可以在不占用CPU的情况下将数据从传感器传输到内存。
4.3.3 传感器数据同步
当系统包含多个传感器(如加速度计+陀螺仪+麦克风)时,数据时间戳对齐至关重要。nRF52840的PPI(可编程外设互连)和定时器可以实现硬件级同步:
- 使用TIMER0产生固定采样率触发信号;
- 通过PPI将TIMER事件连接到TWI/SPI的START任务;
- 每个传感器数据包附带TIMER捕获的时间戳。
4.4 实战案例:多传感器数据采集与同步
假设我们要设计一个跌倒检测可穿戴设备,需要同时采集加速度计(100 Hz)、陀螺仪(100 Hz)和气压计(10 Hz)数据,并通过BLE传输到手机。以下是完整的工程实现路径。
4.4.1 硬件连接与约束
选择ICM-20948(IMU,SPI接口)和BMP390(气压计,I2C接口)。nRF52840的SPI0连接ICM-20948,TWI0连接BMP390。IMU的INT1引脚连接到nRF52840的GPIOTE通道,用于FIFO阈值中断。系统供电采用3.7V锂电池,目标平均电流小于1 mA。
4.4.2 初始现象与问题
初次调试时发现:IMU数据在SPI读取时偶尔出现CRC错误,且BMP390的气压数据与参考值偏差约2 hPa。通过逻辑分析仪抓取波形,发现SPI时钟频率设置为8 MHz,而ICM-20948在3.3V供电下最大SPI时钟为7 MHz,导致时序裕量不足。
4.4.3 分析与解决步骤
- 将SPI时钟降至6 MHz,CRC错误消失;
- 检查BMP390的I2C地址,发现与原理图不一致(0x77 vs 0x76),通过跳线修正;
- 在BMP390初始化时写入校准系数,气压误差降至±0.5 hPa;
- 配置ICM-20948的FIFO为深度50帧,每0.5秒触发一次中断;
- 使用nRF52840的PPI将TIMER1(10 Hz)连接到TWI0的START任务,实现气压计定时采样。
4.4.4 结果与复盘
优化后系统平均电流为0.65 mA(其中BLE广播占0.3 mA,传感器采集占0.2 mA,MCU运行占0.15 mA),单节200 mAh电池可工作约300小时。关键经验:
- SPI时钟频率必须留足裕量,不能只看数据手册最大值;
- 传感器FIFO是低功耗的核心,尽量利用硬件缓冲;
- 多传感器时间同步必须依赖硬件定时器,不能依赖软件延时。
4.5 传感器选型与TinyML适配总结
为nRF52840 BLE TinyML项目选择传感器时,建议遵循以下流程:
| 步骤 | 考量因素 | 推荐选择 |
|---|---|---|
| 1. 确定物理量 | 需要检测什么信号? | 运动/环境/声学 |
| 2. 接口协议 | 数据率、引脚资源 | I2C(低速)、SPI(高速) |
| 3. 功耗预算 | 平均电流、峰值电流 | 休眠电流 < 10 μA |
| 4. 数据输出 | 是否需要FIFO、中断 | 内置FIFO优先 |
| 5. 软件生态 | 是否有现成驱动 | Zephyr RTOS驱动支持 |