
TinyPredict-STM32 V0.4B 振动监测开发板
简介
基于 STM32F103C8T6、MPU6050 和 OLED 的振动监测开发板,支持 RMS 状态判断、串口记录和蜂鸣器报警。
简介:基于 STM32F103C8T6、MPU6050 和 OLED 的振动监测开发板,支持 RMS 状态判断、串口记录和蜂鸣器报警。开源协议
:MIT License
描述
# TinyPredict-STM32 V0.4B 振动监测开发板
B站演示视频链接:
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 曲线图
图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
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。









