跳转至

传感器数据采集

TinyMeasurement — SHM 节点的数据采集管道

从 ADXL355 加速度计读数到 MQTT 远程传输,覆盖三种采集模式和三种实时处理架构。整个系统通过 MQTT 命令远程驱动。


架构速览

  • Online Sensing 在线采集


    定时连续流式采样 (1~20 Hz)
    MQTT / 串口实时传输
    适合长期结构健康监测

    详情 →

  • Offline Sensing 离线采集


    高频批量采样 (100~4000 Hz)
    内存 / SD 卡存储
    采集结束后 MQTT 报告
    适合模态分析、锤击实验

    详情 →

  • RT Processing 实时处理


    编译期选择三种架构:
    环形缓冲区 / DMA 双缓冲 / 双核分工
    实时阈值检测触发
    适合在线损伤检测

    架构总览 →

  • Command Handler 命令控制


    MQTT 远程命令 → 控制采集
    SENSE,ONLINE / OFFLINE / RT
    支持定时和延时触发

    详情 →


场景索引

  • 长期结构健康监测

    Online Sensing,低采样率 (1~20 Hz),MQTT 持续上传

  • 锤击实验 / 模态测试

    Offline Sensing,高采样率 (100~4000 Hz),SD 卡存储

  • 实时冲击 / 损伤检测

    RT Processing + 阈值触发,微秒级响应

  • 远程控制采集任务

    Command Handler,MQTT 发送命令从远端起停采集


快速开始

#include "tiny_measurement.h"

// === 在线采集(长期监测)===
online_sensing_config_t online_cfg = {
    .sampling_frequency_hz = 20.0f,
    .enable_mqtt = true,
    .enable_serial = true,
};
online_sensing_start(&online_cfg);  // 开始 20Hz 连续上传

// === 离线采集(模态测试)===
offline_sensing_config_t offline_cfg = {
    .sampling_frequency_hz = 100.0f,    // 100 Hz
    .sampling_duration_sec = 30.0f,     // 采集 30 秒
    .enable_memory = true,              // 存到内存
    .enable_sd = true,                  // 也存到 SD 卡
    .enable_mqtt_report = true,         // 采集完发报告
};
offline_sensing_start(&offline_cfg);

// === 实时处理(冲击检测)===
rt_process_config_t rt_cfg = {
    .sampling_frequency_hz = 100.0f,
    .enable_accel_detection = true,     // 启用阈值检测
};
rt_process_init(&rt_cfg);
rt_process_start();

三种采集模式对比

Online Offline RT Processing
采样率 1~20 Hz 100~4000 Hz 20~1000 Hz
持续时间 无限(不间断) 有限(秒级) 无限(循环采集)
输出 MQTT 流式 / 串口 内存 / SD / MQTT 报告 实时处理结果
典型场景 长期健康监测 模态分析试验 冲击/损伤在线检测
触发方式 MQTT 命令 MQTT 命令(支持延时) MQTT 命令 + 阈值自触发

依赖链

ADXL355 传感器 → tiny_measurement → MQTT / SD 卡 / 串口
                   tiny_ai (信号处理)

代码结构

include/        tiny_measurement.h · tiny_measurement_config.h
online-sensing/     在线采集
offline-sensing/    离线采集
command/            MQTT 命令解析
real-time-process-arch/  实时处理架构(3 种)
app/                应用示例