站内搜索
发作品签到
TinyPredict-STM32 V0.4B 振动监测开发板
专业版

TinyPredict-STM32 V0.4B 振动监测开发板

简介

基于 STM32F103C8T6、MPU6050 和 OLED 的振动监测开发板,支持 RMS 状态判断、串口记录和蜂鸣器报警。

简介:基于 STM32F103C8T6、MPU6050 和 OLED 的振动监测开发板,支持 RMS 状态判断、串口记录和蜂鸣器报警。
复刻成本:68

开源协议

MIT License

创建时间:2026-05-03 10:35:51更新时间:2026-05-11 11:02:38

描述

# TinyPredict-STM32 V0.4B 振动监测开发板

B站演示视频链接:

https://b23.tv/FPkambA

TinyPredict-STM32 是一个基于 STM32F103C8T6 的小型振动状态监测开发板。项目通过 MPU6050 采集被测风扇/电机的振动数据,使用 RMS 特征判断 NORMAL、WARNING、ALARM 三种状态,并通过 OLED 实时显示 RMS 数值和状态信息。

本项目完成了从面包板验证、串口数据采集、RMS 曲线分析,到 STM32 最小系统 PCB 设计、焊接、调试和实物验证的完整流程。V0.4B 版本已经实现 OLED PG Logo 开机动画、USART1 数据输出、状态 LED 指示和蜂鸣器报警功能。

本项目主要实现一个基于 STM32 的振动状态监测系统,核心功能如下:

1. 使用 MPU6050 采集三轴加速度数据,用于感知风扇/电机等设备的振动状态;
2. 使用 RMS 特征值对振动强度进行量化分析;
3. 根据 RMS 阈值判断设备状态:
   - NORMAL:正常状态;
   - WARNING:中等偏心或轻微异常振动;
   - ALARM:严重偏心或明显异常振动;
4. OLED 屏幕实时显示项目名称、RMS 数值和当前状态;
5. 上电后显示 PG Logo 开机动画,提高项目完整度和展示效果;
6. USART1 串口输出实时采样数据,方便使用 Python 工具记录 CSV 和生成曲线;
7. 当进入 ALARM 状态时,蜂鸣器触发报警;
8. 板载状态 LED 用于显示系统运行状态;
9. 通过 USB Type-C 供电,AMS1117-3.3 提供 3.3V 系统电源;
10. 通过 SWD 接口下载和调试 STM32 程序。

项目应用场景包括:单片机学习、PCB 设计练习、传感器数据采集、振动状态监测实验、开源硬件项目展示等。

主控芯片:STM32F103C8T6
主频:72MHz
传感器:MPU6050 三轴加速度/陀螺仪模块
显示屏:0.96 寸 I2C OLED,SSD1306 驱动,128×64 分辨率
通信接口:USART1,波特率 115200
调试接口:SWD,包含 3V3、GND、SWDIO、SWCLK、NRST
供电接口:USB Type-C
系统电压:3.3V
稳压芯片:AMS1117-3.3
外部晶振:8MHz
状态指示:PC13 状态 LED
报警输出:PB12 控制三脚有源蜂鸣器模块,低电平触发
I2C 总线:PB6=SCL,PB7=SDA
串口输出:PA9=TX,PA10=RX

状态判断阈值:
NORMAL:RMS < 0.05
WARNING:0.05 <= RMS < 0.15
ALARM:RMS >= 0.15

V0.4B PCB 实物测试结果:
idle 静止:平均 RMS 约 0.007,状态 NORMAL
normal_run 正常运行:平均 RMS 约 0.015,状态 NORMAL
medium_unbalance 中等偏心:平均 RMS 约 0.117,状态 WARNING
severe_unbalance 严重偏心:平均 RMS 约 0.294,状态 ALARM

测试结果表明,本项目可以较明显地区分静止、正常运行、中等偏心和严重偏心四种状态。

本项目硬件主要由电源模块、STM32 最小系统、MPU6050 传感器接口、OLED 显示接口、USART1 串口接口、SWD 下载接口、状态 LED 和蜂鸣器报警模块组成。

项目采用 USB Type-C 接口作为 5V 输入电源。Type-C 的 CC1 和 CC2 引脚各接 5.1kΩ 下拉电阻,使供电设备能够正确识别本板为受电设备。

输入 5V 经过 AMS1117-3.3 稳压芯片转换为 3.3V,为 STM32F103C8T6、OLED、MPU6050、上拉电阻和蜂鸣器模块提供电源。输入端和输出端均加入滤波电容,用于提高电源稳定性。板上设置电源指示 LED,便于确认上电状态。

建议插图:
图1:电源电路原理图

主控芯片采用 STM32F103C8T6,封装为 LQFP48。最小系统包括 3.3V 供电、VDDA 模拟电源、VBAT 供电、多个 100nF 去耦电容、8MHz 外部晶振、22pF 晶振负载电容、NRST 复位电路和 BOOT0 启动配置电路。

BOOT0 默认通过 10kΩ 电阻下拉到 GND,系统正常从 Flash 启动;需要进入系统 Bootloader 时,可以通过跳帽将 BOOT0 接到 3.3V。NRST 通过上拉电阻保持高电平,按下复位按键时拉低,实现手动复位。

建议插图:
图2:STM32 最小系统原理图

MPU6050 通过 I2C1 与 STM32 通信,其中 PB6 连接 SCL,PB7 连接 SDA。SCL 和 SDA 均通过 4.7kΩ 电阻上拉到 3.3V。

由于本项目用于振动监测,MPU6050 不建议直接固定在主 PCB 上,而是通过外接线连接,并将传感器模块固定在风扇、电机外壳或其他被测物体上。测试时需要同时固定传感器和线束,避免线束晃动影响 I2C 通信和测量结果。

OLED 模块同样使用 I2C1 与 STM32 通信,与 MPU6050 共用 PB6/PB7 总线。OLED 用于显示项目名称、RMS 数值和当前状态。V0.4B 版本中加入了 PG Logo 开机动画,上电后先显示 Logo,再进入主界面。

主界面显示内容包括:
TinyPredict
RMS 数值
Status 状态
V0.4B OLED 标识

USART1 用于输出实时数据,便于连接 USB-TTL 模块进行数据记录。PA9 为 TX,PA10 为 RX,波特率为 115200。串口输出内容包括三轴数据、RMS 值和当前状态。

后续可以使用 Python 工具读取串口数据,保存为 CSV 文件,并生成 RMS 曲线图,用于分析不同振动状态下的数据变化。

蜂鸣器使用三脚有源蜂鸣器模块,接线方式为:

VCC → 3.3V
GND → GND
I/O → PB12

该模块为低电平触发,即 PB12 输出低电平时蜂鸣器响,PB12 输出高电平时蜂鸣器关闭。当前程序在 ALARM 状态下触发蜂鸣器报警,用于提示设备存在明显异常振动。

本项目保留 SWD 下载调试接口,包含 3V3、GND、SWDIO、SWCLK 和 NRST。通过 ST-Link 可以对 STM32 进行下载和调试。V0.4B 实物测试中,ST-Link 下载验证通过,说明 STM32 最小系统和 SWD 接口工作正常。

本项目固件基于 STM32CubeIDE 开发,主要代码包含以下模块:

1. app_main.c
   系统主流程,负责初始化传感器、OLED、算法和任务循环。

2. mpu6050.c / mpu6050.h
   MPU6050 初始化与三轴加速度数据读取。

3. vibration_algo.c / vibration_algo.h
   振动 RMS 特征计算和 NORMAL / WARNING / ALARM 状态判断。

4. oled_ui.c / oled_ui.h
   OLED 显示界面,包括 PG Logo 开机动画、RMS 显示和状态显示。

5. alarm_task.c / alarm_task.h
   状态 LED 和蜂鸣器报警控制。

6. ssd1306.c / ssd1306.h
   SSD1306 OLED 底层显示驱动。

7. tools/
   Python 串口记录和 RMS 曲线生成工具。

GitHub 开源地址:
https://github.com/eastpeak001/TinyPredict-STM32

1. MPU6050 必须固定在被测物体上,不能悬空甩动,否则线束晃动会影响 I2C 通信,导致 OLED 显示异常或数据不稳定。

2. OLED 和 MPU6050 共用 I2C 总线,接线时需要确认 SCL、SDA、3V3、GND 顺序正确。

3. 蜂鸣器模块为三脚有源蜂鸣器模块,不能直接当作两脚蜂鸣器接入。正确接线为 VCC 接 3.3V,GND 接 GND,I/O 接 PB12。

4. USB-TTL 串口连接时需要交叉连接:
   PCB TX / PA9 → USB-TTL RX
   PCB RX / PA10 → USB-TTL TX
   GND 必须共地。

5. PCB 焊接完成后不要直接运行完整程序,应先进行电源测试、ST-Link 下载测试、LED 测试、串口测试、OLED 测试,再接入 MPU6050 和蜂鸣器。

6. Type-C 仅用于供电,本项目当前未使用 USB 数据通信。

7. 如果 ST-Link 无法连接,应先检查 3.3V 电源、SWDIO/SWCLK 接线、NRST 状态和 BOOT0 是否默认为低电平。

8. I2C 线束不宜过长,建议控制在 10cm 到 20cm,并用胶带或扎带固定。

1. 检查 PCB 裸板
   检查板框、定位孔、Type-C 焊盘、STM32 焊盘和接口丝印是否正常。

2. 焊接电源模块
   焊接 Type-C、AMS1117-3.3、输入输出电容、电源 LED 和 CC 下拉电阻。上电后测量 5V 和 3.3V 是否正常。

3. 焊接 STM32 最小系统
   焊接 STM32F103C8T6、去耦电容、8MHz 晶振、22pF 电容、NRST 电路、BOOT0 跳帽和 SWD 接口。

4. ST-Link 下载测试
   使用 ST-Link 连接 SWD 接口,下载最小测试程序,确认 PC13 LED 可以闪烁。

5. 串口输出测试
   连接 USB-TTL,确认 USART1 能够输出测试信息。

6. OLED 显示测试
   接入 OLED,确认 PG Logo 开机动画和主界面显示正常。

7. MPU6050 测试
   接入 MPU6050,确认静止状态数据稳定,移动或振动时 RMS 数值变化明显。

8. 蜂鸣器测试
   接入三脚有源蜂鸣器模块,确认 ALARM 状态下蜂鸣器能够报警。

9. 最终功能测试
   分别测试 idle、normal_run、medium_unbalance、severe_unbalance 四种工况,并记录 CSV 数据和 RMS 曲线图。


图1:3D 渲染图


图2:焊接完成后的 PCB 实物图

图3:RMS 曲线图

TinyPredict V0.4B PCB Final RMS Test

图4:PCB 布线图
展示 V0.4B PCB 顶层和底层布线,包含 3.3V 电源线、I2C、USART、SWD 和晶振区域。

图5:原理图总览
展示项目的电源模块、STM32 最小系统、OLED 接口、MPU6050 接口、USART1 接口、BOOT0、NRST、状态 LED 和蜂鸣器预留接口。

V0.4B PCB 实物测试已经完成,测试结果如下:

1. 电源测试通过
   USB Type-C 输入 5V,AMS1117 输出 3.3V,系统供电正常。

2. ST-Link 下载测试通过
   STM32F103C8T6 可以通过 SWD 正常识别和下载程序。

3. OLED 显示测试通过
   OLED 可以显示 PG Logo 开机动画、RMS 数值和状态信息。

4. USART1 输出测试通过
   PA9/PA10 串口可以稳定输出实时数据。

5. MPU6050 采集测试通过
   传感器固定后数据稳定,振动变化可以被 RMS 数值反映。

6. 蜂鸣器报警测试通过
   ALARM 状态下,PB12 控制三脚有源蜂鸣器模块报警成功。

最终 RMS 测试数据:
idle:平均 RMS 0.007,状态 NORMAL
normal_run:平均 RMS 0.015,状态 NORMAL
medium_unbalance:平均 RMS 0.117,状态 WARNING
severe_unbalance:平均 RMS 0.294,状态 ALARM

测试结果说明系统可以有效区分正常运行、中等偏心和严重偏心状态。

GitHub 开源地址:
https://github.com/eastpeak001/TinyPredict-STM32

仓库内容包括:
1. STM32CubeIDE 工程源码;
2. README 项目说明;
3. V0.4B 测试报告;
4. 硬件接线说明;
5. Python 串口记录和 RMS 曲线工具;
6. V0.4B final CSV 测试数据;
7. RMS 最终曲线图;
8. PCB / Gerber / BOM 等硬件资料。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
1
3D_TinyPredict_2026-05-09.step
0

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航