电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【let'sdo|2026年第3期】成果贴1:基于STNanoEdgeAIStu

共1条 1/1 1 跳转至页

【let'sdo|2026年第3期】成果贴1:基于STNanoEdgeAIStudio的端侧电机状态识别项目——模型训练及测试

助工
2026-11-14 16:22:39     打赏


【let'sdo|2026年第3期】过程贴:按键启停步进电机  

https://forum.eepw.com.cn/thread/402326/1

2026-11-14 15:47:48

【let'sdo|2026年第3期】过程贴:CubeMX2+CubeIDE2按键中断点灯(迎接变化)  

https://forum.eepw.com.cn/thread/402317/1

2026-11-13 20:05:40

【let'sdo|2026年第3期】过程贴:搞定3轴加速度计读取  

https://forum.eepw.com.cn/thread/402196/1

2026-11-08 08:08:48

【let'sdo|2026年第3期】过程贴:使用全新的CubeMX2+CubeIDE2点亮NUCLEO-C562RE  

https://forum.eepw.com.cn/thread/402048/1

2026-10-25 15:40:06

【let'sdo|2026年第3期】开箱贴:为什么我要选NUCLEO-C562RE  

https://forum.eepw.com.cn/thread/402045/1

2026-10-25 14:47:26

经过上述5个帖子的铺垫,终于来到本项目的关键环节:基于ST NanoEdge AI Studio的端侧电机状态识别项目

核心目标是:MCU通过采集电机的3轴加速度数据,将其投喂给提前训练好的端侧AI模型,模型给出3个运行状态的概率(静止、运行、过载)。

而这个端侧模型的训练和部署是通过ST NanoEdge AI Studio来进行,最后可运行于STM32单片机上。


大致流程如下图:image.png

NanoEdge AI Studio 是一款由意法半导体(STMicroelectronics)开发的自动化机器学习工具,专为 STM32 微控制器设计。它允许开发者快速生成优化的边缘 AI 模型,无需具备深厚的人工智能专业知识。通过简单的步骤,用户可以创建异常检测、分类、回归等多种类型的机器学习库,并直接部署到 STM32 微控制器上。

核心功能与特点

NanoEdge AI Studio 提供了四种主要的库类型:异常检测、单分类、多分类和预测。它支持多种传感器输入(如加速度、温度、声音等),并允许多传感器组合。所有学习和推理均在设备端完成,极大地简化了开发流程。

以下是其主要特点:

  • 低代码/无代码解决方案:开发者无需编写复杂代码即可生成模型。

  • 支持多种 STM32 微控制器:包括从低功耗的 Cortex-M0 到高性能的 Cortex-M7。

  • 优化的内存占用:生成的库可以在资源有限的设备上运行。

  • 快速部署:通过生成 .c 和 .h 文件,便于在不同项目中移植。


ST NanoEdge AI Studio的使用方法如下:

新建项目,选择classify(分类)


选择MCU型号,传感器类型:3轴加速度据计


接下来是最重要的:导入原始数据进行训练。

我们之前读取的3轴加速度数据,通过串口输出如下。

image.png

这种是不能被ST NanoEdge AI Studio识别的。
需要进行格式化处理。

ST NanoEdge AI Studio能识别的数据,以帧为单位,可以理解为多个数据单元(如32个3轴加速度数据),

每个数据单元之间可以以逗号(,)或者空格( )连接,不能有回车。

每帧的末尾一定要加上回车符号,这是ST NanoEdge AI Studio能识别帧开始和结束的关键!


char msg2[] = "\r\n";

LIS3DH_PrintXYZ_Cal()
    {
    char msg[128];
    snprintf(msg, sizeof(msg), "ACC: X=%d mg, Y=%d mg, Z=%d mg\r\n", x, y, z);
    HAL_UART_Transmit(mx_usart2_uart_gethandle(), (uint8_t *)msg, strlen(msg), 100);
    }

while (1) {

   	for(int i=0;i<32;i++)   //每个数据块包含63帧加速度数据
   	{
   		if(i<31)
   		LIS3DH_PrintXYZ_Cal(); // 读取并发送一帧3轴加速度数据
  		else                   //最后一帧回车
   		HAL_UART_Transmit(mx_usart2_uart_gethandle(), (uint8_t *)msg2, strlen(msg2), 100);
   	}


串口输出数据如下:

image.png


通过电脑的串口采集数据。



每个状态取个名字,如RUN(运行)、STATIC(静止)、OVERLOAD(过载)

每个状态采集大约100帧即可停止。

3个状态都采集后如下:


选择一个Benchmark(参数默认)就可以开始训练了。

训练大约2小时后完成。

接下来在电脑上模拟运行。

image.png


如下,依次测试电机 静止、运行、过载(用手摸住电机轴),查看AI的识别结果:

选择一个最准确的:

image.png


image.png

选择表现最佳的模型就可以下载并部署了。

本期测试视频如下:




共1条 1/1 1 跳转至页

回复

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