发作品签到
专业版

基于Stm32的可拖拽文件升级的三合一USB读卡器

工程标签

568
0
0
0

简介

这个项目的主要功能是一个复合的USB设备,准确来说,是一个读卡器+HID音量控制设备+虚拟串口命令行交互设备。设备大小类似一个U盘,左侧有一可滑动滚轮,顶部为1.3寸OLED屏幕。

简介:这个项目的主要功能是一个复合的USB设备,准确来说,是一个读卡器+HID音量控制设备+虚拟串口命令行交互设备。设备大小类似一个U盘,左侧有一可滑动滚轮,顶部为1.3寸OLED屏幕。
星火计划2024
复刻成本:50

开源协议

GPL 3.0

创建时间:2024-06-06 08:13:13更新时间:2024-11-27 01:34:28

描述

视频链接:

B站视频--功能演示及介绍

项目简介

本项目以stm32f103RCT6为主控,实现了一个三合一的USB设备,并且实现了U盘拖拽进行APP升级,因此,也可以把他当成一块可USB拖拽编程的stm32开发板使用,此外,设备上留有ws2812的拓展接口,可以作为一个灯带控制器。

本项目同时作为WouoUIPage版2.0的硬件,因此,在之后完善APP的代码至稳定且改进WouoUIPage后会更新到WouoUIPage的github仓库https://github.com/Sheep118/WouoUI-PageVersion

项目功能

本项目主要由stm32f103RCT6为主控,模拟一个三合一的USB设备

  • MSC设备: 由插入设备的SD卡模拟生成
  • HID设备: 可以通过滚轮控制电脑音量、静音、上下曲切换、暂停播放。
  • CDC设备:一个虚拟串口,其中移植了开源的LetterShell(在这里感谢下开源LetterShell的大佬🙏),可以通过自己下载的APP.bin文件中导出的命令进行交互

除了上面提到的功能外,该设备还拥有以下的功能

  • 一个WS2812控制器,该设备上有两个WS2812灯珠,灯珠之后的接口也预留了出来,可以接入ws2812灯带。
  • 该设备支持U盘拖拽下载更新设备中程序(只要按住滚轮同时上电即可),因此,也可以把他当成一块可USB拖拽编程的stm32开发板使用。

项目参数

硬件参数

  • 主控:stm32f103RCT6,其中64KB FLash空间用于U盘拖拽升级的BootLoader程序,剩余192KB可用于APP程序的开发,因此,有兴趣进行二次开发的朋友,可以用这部分Flash空间运行自己代码。
  • 屏幕:1.3寸OLED屏(SSD1306/SH1106驱动芯片都可),提供的APP源码中这两种都有使用(毕竟,驱动基本一致,只有一个命令不一样)
  • 灯珠:WS2812两颗,同时ws2812灯珠的接口也有预留,可以将其作为一个ws2812控制器使用
  • 外部Flash:W25Q64 8MB的大小,可以存下很多APP程序了(一开始使用内部Flash作为存储的,代码已经完成了,但因为内部FLash空间本来就不是很够,分成BootLoader+U盘暂存空间+APP空间三份实在不够用😂,这样干APP空间就很有限了,所以最后还是用了外部的FLash)

功能参数

  • MSC设备,由SD卡模拟的U盘,(由于SD卡读写还没有优化,目前读写文件的时间都比较长,之后会在代码中进行优化),以下是复制一个文件到SD卡测试的截图(电脑显示有这个速度,但实际读写时间却很长)

复制速度.png

  • HID设备: (滚动滚轮)音量控制/上下曲切换十分灵敏,单击滚轮可以静音或者暂停/播放音乐,通过UI可以修改配置文件,选择滚轮控制的是音量还是上下曲切换。

  • CDC设备: 虚拟串口可以实现一些简单的交互命令(目前由于USB代码存在一定bug,这个虚拟串口会不定时重启,这对命令交互有一些困扰,之后会考虑使用其他USB库进行代码的修改和升级)。

  • 外部Flash:使用8MB大小的W25Q64,拖拽升级时,需要拖拽入应用程序的.bin文件,同时这个文件需要将整个文件的CRC校验附在文件尾部,可以使用keil选项卡多加入一个命令(运行一个bat文件实现)
    (具体实现方式参考安富莱电子的视频,这是对应的链接)

原理解析(硬件说明)

本项目的硬件由顶板和底板两部分组成,(工程中有些中间过程测试的PCB文件,之后会一起删掉的)

  • 底板组成示意图:(工程中的Baseboard_2)

硬件标注.png

硬件标注1.png

  • 顶板组成示意图:(工程中的Topboard_1)
    硬件标注2.png

软件代码

因为代码还在完善,所以,这里将Bootloader工程的代码仓库和APP的gitee代码仓库链接附在这下面,之后这个仓库也会随自己的改动同步更新。

之后确定一个版本后,会将其整理打包到一个仓库中(而且会更新到WouoUIPage版的仓库中,作为2.0的硬件)

本项目中用到的一些开源代码库:

  • CDC虚拟串口中的shell部分 Letter Shell
    感谢大佬开源的项目
  • 另一个是我自己之前开源的C语言OLEDUI框架 WouoUIPage版 这个项目也是作为WouoUIPage版的2.0的硬件,之后这个UI框架改进后也会进行更新。

外壳和面板

  • 外壳打印文件会上传到附件中(壳体1.step和外壳3.step)。
  • 面板在工程中就有。

注意事项

  1. 目前BootLoader代码十分稳定,如果出现拖拽下载后CRC校验失误只需要断电,重新进入BootLoader模式下载即可

  2. APP代码部分存在以下两个问题

    • MSC设备模拟的读卡器读写速度慢
    • CDC设备模拟的虚拟串口会不定时重新,之后会一一改进后更新在代码仓库中的
  3. 焊接好的板子,首次使用需要先将Bootloader代码编译后通过SD卡槽下方的烧录接口烧录进去,烧录好后排针可以拆除,BootLoader已经烧录后接下来就可以通过U盘拖拽下载了。该排针留有SWD烧录接口和串口一也可以留着自行开发。

  4. 第一次将设备插入电脑会要求格式化,直接格式化即可,格式化好后需要将一个setting文件夹(存有FATFS的中文命名转换数组和配置文件的文件夹)拖拽复制到BOOT盘中。 没有这个setting文件夹也可以,只是设备的一些参数没有办法掉电保存,且APP程序操作SD卡时无法使用带中文的长文件名的FATFS。

  5. 二次开发需要注意APP必须是二进制文件且有全文件的CRC校验在文件尾部,具体实现方式参考安富莱的教程,也可以直接使用我的APP工程进行改动(之后我可能会出个视频说明下需要注意的地方)。

  6. 焊接时需要注意:顶板和底板原理图中有标注说明一些测试的电阻是不需要焊接的(如顶板的R7 R8, 底板的 BOOT0_TEST 和 R_RESERVE1 )

组装图

组装图.png

如上的组装图中需要注意,两个3D件(箭头所指的地方)有两块小磁铁(我使用的3 * 2 * 2mm大小的磁铁)
组装过程比较简单,只需要将PCB板按照对应的孔位拆入就可以。

面板提供了全透明和有星火计划标识两种。

实物图

封面.jpg

实物图.jpg

实物中位于SD卡下方的排针在第一次使用下载器(ST/DAPLink)或者直接串口下载过BootLoader的代码之后就可以拆掉了,因为Bootloader程序现在经验证是十分稳定的。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
壳体1.STEP
4
2
外壳3.STEP
3
3
setting.zip
9
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航