
【电子法棒】STM32部署CNN实现轨迹识别控制方案
简介
stm32部署卷积神经网络,nnom推理TensorFlow训练的模型,通过nnom的移植优化模型以适应嵌入式环境,案例通过红外收发模块对设备的控制,通过QT上位机对模型进行训练。
简介:stm32部署卷积神经网络,nnom推理TensorFlow训练的模型,通过nnom的移植优化模型以适应嵌入式环境,案例通过红外收发模块对设备的控制,通过QT上位机对模型进行训练。开源协议
:GPL 3.0
描述
视频链接:
[B站视频--
功能演示及介绍](【【完整开源】哈利波特用了都说好的电子魔杖!(STM32)】 https://www.bilibili.com/video/BV1XHDEYMETw/?share_source=copy_web&vd_source=abf17f209793b0dbe622a2b25b0cb7c9/)
项目简介
低成本的stm32芯片上部署一个卷积神经网络动作分类模型,nnom推理TensorFlow训练好的模型,通过nnom的移植优化模型以适应嵌入式环境,包括量化和模型裁剪,以减少内存占用和计算复杂度,数据放到输入数组,运行模型推理函数,即可读输出数组,实现mpu6050的位姿动作轨迹运动的精确识别,来控制设备的开关(例如红外设备),并可以通过上位机(QT)实现模型的训练。
再次感谢 Civic_crab大佬 提供的帮助!!!以及 逸星 提供的3D模型磨具和 梳桦 提供的美工!!!
实物展示
实物有些做旧效果,蹭漆也不用重涂hhhhh
项目功能
总体逻辑功能说明
系统启动与模式切换
- 系统启动:主板上电后,设备默认进入 模式0。
- 模式切换
:按住按钮0.5 秒后松开,系统将在模式0和模式1之间切换。- 长按松开(>0.5秒):用于模式切换。
- 短按松开(<0.5秒):用于触发特定操作(如动作识别采样)。
动作识别操作
- 在任何模式下,短按按钮并松开会触发 IMU传感器的1.5秒数据采样。采集到的数据将输入至模型中进行 动作识别。
红外模块指令模式
- 模式0:动作识别完成后,模块发送与识别动作对应的 预录制红外信号。
- 模式1:动作识别完成后,模块进入 红外信号录制模式,等待并录制与识别动作对应的红外信号。
Type-C接口功能
- 串口调试:通过 Type-C 接口进行设备调试。
- 电池充电:当连接 Type-C 时,设备优先使用 Type-C 电源供电,而非电池。
电源管理
- 电源开关
:控制设备的 3.3V 主电源。- 当电源开关关闭时,电池可以充电,但 STM32、IMU 等组件不会上电工作。
LED状态指示灯
- 系统状态指示
:按钮前的 LED 指示系统状态,有以下五种模式:- 10Hz 闪烁:快速指示状态
- 5Hz 闪烁:中速指示状态
- 2Hz 闪烁:低速指示状态
- 常亮:系统稳定运行
- 熄灭:系统关闭或待机
Qt 上位机模型训练
- 模型训练功能
:使用 Qt 上位机进行动作识别模型的训练和管理。- 数据采集:上位机通过串口连接设备,从设备端接收 IMU 传感器的采样数据。
- 模型训练:基于采集数据进行模型训练,以提高动作识别的准确度。
- 模型管理:支持模型保存、加载和更新,可管理不同动作集合的训练模型。
- 实时调试:支持实时调试,监控模型的识别精度和设备响应情况。
项目参数
weight文件分别提供面包板实现的以及EVB板实现的两种,利于验证测试,如下所示。
更多文件以及训练模型的上位机都位于下述目录中。
原理解析(硬件说明)
以下是对该原理图的个人分析:
外设模块接口处:
电源部分分析:
1.TP4056:这是锂电池充电管理芯片,负责对锂离子电池进行充电管理,具有多种保护功能,如过充保护、过放保护等。通过外部电阻设置充电电流等参数。
2.可通过USB接口以及电池输入系统供电,电源选择,用于根据特定条件选择合适的电源输入,例如优先选择 USB 电源,当 USB 不可用时切换到其他电源。
3.22uH 电感:在电源电路中可能起到滤波、储能等作用,以稳定电流和电压。
4.10uF、4.7kΩ 电阻、0.1uF 电容等:这些元件在电路中起到滤波、去耦、分压等作用,以提高电源的稳定性和抗干扰能力。
5.充电状态指示灯,用于显示电池的充电状态,如充电中、充满等。
6.TYPE-C:提供一种连接接口,用于充电输入 以及 uart数据传输。
7.R-10kΩ、4.7kΩ 电阻:用于分压、限流等作用,调节电路中的电流和电压。
8.TEMP:用于连接温度传感器,监测电池温度。当温度超出设定范围时,芯片可以暂停充电以保护电池。
软件代码
Github链接,Github链接电子法棒
实物图
硬件顶部
硬件底部
上位机训练模型程序(QT)
上位机程序
设计图

BOM


评论