AI 手势智能魔杖教程
我们在电脑上体验机器学习项目已经很多了,那能不能做一个项目,让机器学习的模型可以脱离电脑,在硬件上运行呢?
恰好近期有个开源项目,采用 STM32 单片机运行 NNoM,STM32 上部署一个卷积神经网络动作分类模型,通过检测六轴陀螺仪MPU6050的姿态数据,从而返会正确的分类。
开源项目原地址:https://github.com/lyg09270/CyberryPotter_ElectromagicWand_Basic_Project/tree/main
本次的教程和开源项目的教程项目,会更加细化,把踩过的坑都填上,希望大家都能复刻成功!同时开源项目中的返会结果是串口数据,不太直观。因此我们这边加入了两片Microbit,将返回来的数据进行具象化,让项目更加生动有趣。
项目框图
什么是 NNoM?
NNoM 是一个轻量级的神经网络框架,专为微控制器设计。它支持常见的深度学习功能,例如卷积神经网络(CNN)、全连接层等,具有以下特点:
- 高效轻量:适合资源有限的嵌入式设备。
- 易于使用:提供直观的 API 和多种示例代码。
- 开源:支持自由修改和扩展。
在本项目中,NNoM 将被用于在 STM32 单片机上运行手势分类模型,实现离线手势识别功能。
所需材料
硬件:
微控制器:STM32F103C8T6 开发板
IMU传感器:MPU6050
按键:方糖按键模块
5mm 直插LED
CH340 USB串口下载器
STlink
Microbit V2 x2
Iobit
Robotbit
方糖灯串模块
3D打印零件
喵比特锂电池包
软件:
- ST-LINK Utility
- 串口调试助手(或者其它串口调试软件)
- MakeCode
工具:
电烙铁
热熔胶枪
螺丝刀
USB延长线
剥线钳
3D打印机
其它:
M3-8 X 3
自攻螺丝M1.7-6 X4
3M胶
母对母杜邦线 x10
模型文件
魔杖(有四款,来源于网友分享):https://makerworld.com/zh/models/519053?from=search#profileId-440711
配套魔杖外壳(喵家设计):https://makerworld.com/zh/models/1034922#profileId-1018455
项目拆解
本项目的核心在于录入训练模型,但是由于环境配置搭建太麻烦了,新手一般会卡住。因此本次教程只教你如何下载训练好的程序(训练好的程序中有12个标准手势,一般也够用了)。 等你做出这个项目后,想进一步研究,增加或者修改手势,可以自行研究开源项目的仓库。
项目拆解为:
1、STM32与MPU6050接线 2、下载器STlink与STM32接线,下载程序 3、USB串口下载器与STM32接线,测试串口的返回数据。
4、Micrbit之间的2.4G无线通讯程序编写测试 5、修改Microbit2.4G无线通讯程序,增加串口数据接收判断
6、将STM32的串口与Microbit的串口连接在一起,测试。
7、将打印外壳进行组装,组装成魔杖。
第一步——接线
STM32与MPU6050的接线
请严格按照下图接线进行插接
可以使用我设计的3D打印进行固定和焊接
第二步——连接下载器
连接STLink下载器,下载编译好的hex文件
下载器接线:
ST-LINK Utility软件下载:
https://www.st.com.cn/zh/development-tools/stsw-link004.html#get-software
使用:
连接主控
选择烧录文件
下载我们提供的文件"CyberryPotter.hex",点击Start
提示下载成功
下载完毕后,就可以拔掉了STLink下载器
第三步——串口测试
接上串口调试器,测试程序和硬件是否正确运行起来了。
CH340与STM32的接线:
实物连接:
使用串口工具进行连接:
波特率是115200,打开串口后,按一下stm32板子上的复位按键。
窗口中会收到
"dmp init complete
Hello!"
[!NOTE]
如果串口收不到信息,请检查
1、程序是否成功下载 2、串口接线是否正确
当按一下按键,不做任何动作时,窗口会收到“Unrecognized”,可以证明你的板子正常运行起来了,这时候你对应做动作后,它就会返回对应的结果。
[!NOTE]
如果串口收不到信息,请检查
1、陀螺仪与STM32的接线是否正确
例如做一个→↓的动作,按一下按键后(只需点按,不要长按不放),1.5秒内把这个动作完成。
串口会返回,这时候也证明你的mpu6050和训练的模型都是正常的。
到此,AI手势智能魔杖的核心功能已经实现完毕了。
当做出对应动作时,串口就会返回对应的字符串。可以使用另外的单片机进行串口指令接口,从而实现不同的应用。
手势结果如下图所示:
第四步——Microbit无线通讯
发送端
假设Microbit_A作为发送端,它与STM32的串口进行相连,接收手势返回的串口结果。
这里使用了IObit进行转接
Microbit ——STM32
P12————A10 P13————A9 5V————5V GND————GND
锂电池给IObit 5V进行供电
程序地址:
https://makecode.microbit.org/_5Pi3AiUAKJv2
接收端
只需要一块Microbit即可,这里插在Robotbit上,外接一个方糖灯串模块(P1)
程序地址:
https://makecode.microbit.org/_WvyiVaMzuPze
实物测试
当触发1-6手势时,灯串灭掉。
当触发7-12手势时,灯串亮起。
[!NOTE]
技巧:按一下按键后就松开,在1.5秒内完成手势,动作做得有力点。
把AI 魔杖组装好,注意螺丝的安装位置。锂电池包使用双面胶粘贴在外壳的侧面。
组装完成
测试:
核心的基本交互已经调通了。
剩下的就是发挥你的创意了。