- 添加了InstallEnviroment.bat自动安装环境的脚本(需要用anaconda prompt运行),但是不确定是否可以正常使用,不能正常使用的话给我反馈
- 3D_Print文件夹(添加了Shell2_Laser.stl用于增加红外头,如果你需要)
- Software文件夹
- 新增CNN目录下的训练数据集更新了模型
- 调整了部分keil工程内的代码
- 增加了激光头的代码(在LED.h中解注释以启用这部分代码)
- 为适配格力空调的协议将红外录制的超时退出改为50ms
- Hardware文件夹 (PCB制版文件、原理图、BOM)
- 3D_Print文件夹(重新调整过的3D打印模型)
- Software文件夹的软件部分还没有彻底完成
此项目是Cyberry Potter Electromagic wand赛博魔杖,你可以使用这个项目中的文件,制作一个赛博魔杖。如果你有足够的能力,你也可以对魔杖的的法术(功能)进行修改,魔杖采用了模块化的设计,不同的模块对应了不同的执行功能。也可以对激活法术的动作进行修改,只需要重新收集数据并训练模型就可以了。
项目使用的嵌入式机器学习库来自nnom
此项目包含
- PCB制板文件 (Hardware)
- 3D打印文件 (3D_Print)
- 用于魔杖的软件(Software)
- 动作识别模型训练脚本(Software/CNN)
- 动作的卡片(Software\CNN\SpellsCard)
项目视频教程:bilibili
立创开源平台:赛博魔杖_STM32卷积神经网络
在使用过程中出现问题可以在Bilibili私信我
或者联系我的邮箱:[email protected]
魔杖技术交流群QQ:698619917
主板在上电以后会进入模式0,长按按键0.5秒后松开,就可以进入模式1。 任何模式下短按按键并松开:对IMU进行1.5s的采样,将数据输入模型得到动作识别输出。
在红外模块插入时
模式0:在得到动作识别输出后,模块会根据识别到的动作发送已经录制的红外信号
模式1:在得到动作识别输出后,模块会根据识别到的动作等待并录制红外信号
模式0和模式1下执行的操作可以根据插入模块的不同而执行不同操作(需要编写代码)
Type-c口的作用:可以用于串口调试和电池充电,在有Type-c连接时,设备会使用Type-c而非电池供电
电源开关:电源开关负责开启或关闭3.3V的供电,在1没有开启电源开关时,电池充电是可以正常进行的,但是Stm32和陀螺仪等不会上电工作
按钮:按钮有长按松开(大于0.5秒后松开)、短按松开(0.5s内松开)两种控制方法。
按钮前的LED:系统状态指示灯,分为10Hz闪烁,5Hz闪烁,2Hz闪烁,常亮,熄灭五种状态
- 使用Hardware文件夹下的PCB制版文件制作一块电路板
- 采购BOM表格中所需要的元件
- 使用3D打印机打印外壳
- 将程序烧录进电路板
- 组装上电
- PCB打板与焊接并烧录程序
- 3D打印外壳
-
首先需要安装一个anaconda(请各位大哥大姐从官网下载,不要在网上随便找安装包,求求你们了)
- 创建一个python3.9环境
conda create --name py39_env python=3.9
- 激活环境
conda activate py39_env
- 切换到工程目录的CNN文件夹
cd /path/to/your/directory/Cyberry_Potter_Electromagic_Wand-main/Software/CNN
- 安装项目依赖
pip install -r requirements.txt
- 使用清华镜像源:
pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
-
keil版本:keil5(请使用keil官网下载的最新版keil否则可能会遇到一些问题)
-
编译器版本:Arm Compiler6.22
-
根据你的设备选用ST-Link或其他设备作为调试器
-
项目在打开keil是可能会需要安装一些库,请根据提示安装
编译报错:C:/Users/xxx/AppData/Local/arm/packs/Keil/STM32F1xx_DFP/2.4.1/Device/StdPeriph_Driver/src/misc.c:131:11: error: no member named 'IP' in 'NVIC_Type'
这是项目使用到的STM32F1XX_DFP2.4.1版本库存在的一个问题,这个有问题的文件安装在以下目录,默认是只读的,请在这个目录下将其只读选项取消勾选 C:/Users/xxx/AppData/Local/arm/packs/Keil/STM32F1xx_DFP/2.4.1/Device/StdPeriph_Driver/src/misc.c
(AppData文件夹默认是隐藏的,请先设置显示隐藏文件)
请将device库中将misc.c文件里的上述代码(131行)修改为 NVIC->IPR[NVIC_InitStruct->NVIC_IRQChannel] = tmppriority;
我也准备了一个嘉立创EDA的工程文件(hardware/Module_DIY.eprj),文件中已经准备画好了模块的外形和引脚名称,你可以根据自己的需求添加元件,制作一个符合你想要的模块
可以在software/module文件夹中对模块modulex.c(你需要的模块编号 例如module4.c)文件进行修改,写入不同模式(Mode0,Mode1)下在识别到动作后所需要对模块执行的命令(例如使用串口与蓝牙芯片通讯,发出信息)