电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【202 6Let's do 第3期】基于边缘AI的电机状态检测成果帖 -- 边

共1条 1/1 1 跳转至页

【202 6Let's do 第3期】基于边缘AI的电机状态检测成果帖 -- 边缘AI的电机状态检测

助工
2026-11-13 10:53:32     打赏

1. 项目简介

        本项目在 ST NUCLEO-C562RE 开发板(STM32C562RE,Cortex-M33 @ 144 MHz)上基于 Zephyr RTOS v4.4.0 实现边缘 AI 电机状态检测:用 Grove LIS3DHTR 三轴加速度计采集电机振动,在 MCU 本地经 NanoEdge AI 知识库完成 4 类状态分类(停止、正常运行、异常抖动、堵转),结果同时输出到串口与Grove SSD1315 OLED,异常时 Grove 蜂鸣器报警。用户通过板载 B1 按键的短按完成电机启停、故障恢复。

2. 项目介绍

  • 背景:电机是旋转设备中故障率最高的部件,传统振动监测依赖工控机  或云端推理,存在成本高、延迟大、断网失明等问题。

  • 目标:MCU 本地完成 2 类状态实时分类;异常时本地声光报警;运行  参数无需重新烧录即可通过按键菜单调整。

  • 范围:单路 28BYJ-48 齿轮步进电机、单路加速度计;电机驱动仅  控制启停与转速,不做位置闭环。

3. 硬件平台与软件环境

项目规格

开发板ST NUCLEO-C562RE
MCUSTM32C562RE,Cortex-M33 @ 144 MHz,512 KiB Flash / 128 KiB SRAM
板载 LEDLD1 = PA5(低电平点亮),alias led0
用户按键B1 = PC13,alias sw0
控制台USART2(PA2/PA3),115200 baud
加速度计Grove 三轴数字加速度计 LIS3DHTR,I2C1 地址 0x19
OLEDGrove SSD1315 0.96 黄蓝屏,I2C1 地址 0x3C,128x64
蜂鸣器Grove 有源蜂鸣器,D6/PB10 数字电平控制
电机齿轮步进电机驱动套件(28BYJ-48 + ULN2003),D4/D7/D8/D9
RTOSZephyr v4.4.0,Zephyr SDK 0.17.x

4. 系统架构设计

4.1 模块划分

mermaid-diagram-2026-11-08-214100.png

4.2 中断与定时器划分中断 / 定时器用途上下文

sw_isr(PC13 双沿)测量按压时长,产生 SHORT/LONG 事件ISR
led_timer(k_timer)LD1 周期翻转ISR
step_timer(k_timer)步进电机八拍换相,周期由转速换算ISR
系统 SysTick(1 kHz)调度器与上述定时器时基内核

4.3 数据流图

mermaid-diagram-2026-11-08-214328.png

5. 功能实现

5.1 启动信息

print_boot_banner 输出板卡名称(CONFIG_BOARD)、编译时间 (DATE/TIME)、Zephyr 版本、模式、采样率、窗口长度与外设清单。

5.2 OLED 显示

oled_display 模块使用 Display API 驱动 SSD1315,内置 5x7 点阵字体与 1024 字节静态显存,提供两屏:运行状态屏(电机启停、分类、转速、 阈值、置信度/报警倒计时)与设置菜单屏。显示写入统一由发送线程完成, 避免多线程竞争。

5.3 按键处理与参数菜单

button_ctrl 模块在 PC13 双沿中断中计时:30 ms 消抖,小于 2 s 为短按, 大于等于 2 s 为长按。主线程 control_loop 按当前状态解释事件:

状态短按长按

正常/停止启动或停止电机进入设置菜单
异常报警故障恢复(停机、解除锁存)-
菜单内循环切换当前项选项提交本项,下一项/退出

可调参数:转速(5/8/10/12/15 rpm)、报警置信度阈值(60/70/80/90%)、 蜂鸣器报警时长(5/10/20/30 s)。转速在电机运行中提交时立即生效。

5.4 多任务调度

采集、处理、发送三线程,优先级依次为 2、3、4;线程间以 k_msgq 连接, 无忙等待。主线程初始化后转为按键控制循环。

5.5 加速度采集与 NanoEdge AI 数据

accel_sensor 经 Sensor API 设置 100 Hz、+/-2 g,用 SENSOR_CHAN_ACCEL_XYZ 一次读取三轴并换算为 mg。训练模式 (CONFIG_APP_TRAINING_MODE=y)下处理线程按 "seq,x,y,z,label" 输出 CSV;短按 B1 切换 4 类标签,数据可直接导入 NanoEdge AI Studio。

5.6 推理与异常报警

motor_classifier 将窗口展平为 float[窗口*3] 并归一化到 [-1,1],调用 neai_classify。置信度不低于阈值的 JITTER/STALL 结果锁存报警:LED 5 Hz 快闪、蜂鸣器发声;报警超时后蜂鸣器停止但状态保持,须用户短按恢复。

6. 功能展示

推理模式串口与屏幕预期(节选):

 Motor State Detector based on Edge AI
 Board        : nucleo_c562re
 Build        : Sep 21 2026 10:00:00
[accel] seq=9 x=-12 y=18 z=1024
[state] STOPPED conf=70%
[state] RUNNING_NORMAL conf=75%
[state] JITTER conf=80%   <- OLED: ALARM! LEFT:10S,蜂鸣器响,LED 快闪
[ctrl] fault recovered, motor stopped

OLED 同步显示对应四行文本;

2026-11-12-20-11-05.png

7. 演示视频

8. 传送门

9. 总结

        实现了环境搭建与声光控制、多任务调度、启动信息、OLED显示、按键菜单与参数调整、加速度采集、NanoEdge AI 数据/训练/部署、异常报警与恢复。





关键词: Let's do      ST      STM32      Nano    

共1条 1/1 1 跳转至页

回复

匿名不能发帖!请先 [ 登陆 注册 ]