标签存档: WCH

硬币大小的游戏机不来一个?能玩小蜜蜂和吃豆人~

在接触沁恒家的 CH32V003 芯片一段时间后,发现了国外有个爱好者用它做了个小型游戏机,还配了不少游戏,例如小蜜蜂、呼吃豆人什么的,这不得自己复刻一个。

不过原作者的项目 PCB 设计体积比较大,不太符合我心中微型游戏机的形象,就自己重新搞了一下,顺便把原项目中的方向键从独立按键换成了摇杆,玩起来更舒适一点。

成品照片

老样子,自己做东西还是得搞个正经点的外壳。

经过极限压缩后的 PCB 大小为 24x40mm,加上电池后,整体外壳不包含钥匙扣环的尺寸为宽 27mm,高 42mm,厚 12mm,正面大小不到 2 个硬币大小 😃。

ch32v003-gameconsole-1

硬件选型

为了和原作者的 ROM 兼容,大部分 BOM 都跟原版 PCB 一样,这里只是将原版的方向按键换成了五向摇杆,其他的都还是保持一致。为了保障 PCB 体积,整体电阻、电容都采用了 0603 封装。

主要的几个元件都可以在某宝上购买,特别是其中的电磁式蜂鸣器,某宝上购买要便宜很多。

另外需要注意,12864 OLED 需要购买窄边框的版本。

位号 元件 备注
BUZZER1 4kHz 电磁式蜂鸣器
H3 PZ254V-11-05P 烧录排针,不焊接
SW1 MSK12C02-HB 电源开关
SW2 TM-4175-B-A 五向摇杆
SW3


阅读全文 »

听人劝吃饱饭,试试CH334R来做USB 2.0 Hub

之前用 SL2.1A 做了个 USB 2.0 Hub,有网友说不如用 CH334R,售价更便宜,还支持更高级的 MTT,这不得马上了解一下。

之前使用 SL2.1A 做 USB Hub 的文章在这里:还在花钱买?5元DIY一个四口USB 2.0 Hub

CH334R 介绍

在 CH334R 的数据手册中找到它的介绍,的确是支持 MTT 的。

CH334 和 CH335 是符合 USB2.0 协议规范的 4 端口 USB HUB 控制器芯片,上行端口支持 USB2.0 高速和 全速,下行端口支持 USB2.0 高速 480Mbps、全速 12Mbps 和低速 1.5Mbps。不但支持低成本的 STT 模式(单 个 TT 分时调度 4



阅读全文 »

DIY USB 电流表(9):Flash 模拟 EEPROM 存储累计电量

在前一篇 《DIY USB 电流表(8):绘制功率曲线》 中,整个 USB 电流表的固件开发已经进入尾声,目前我们已经完成了电压电流数据显示、功率计算、多页面切换、历史功率曲线绘制等功能.

为了更好地保持数据,在 USB 电流表重新上电的情况下,也可以恢复之前测量的数据,例如在测试充电宝容量时,中间会断开并重新连上负载,这个时候我们需要将之前记录的数据保存下来,继续累计负载消耗的电量。

但是在之前的原理图设计中,整个电路并没有添加 EEPROM,CH32V003 也没有自带 EEPROM,这时我们可以使用 CH32V003 的代码存储区域来模拟 EEPROM 保存数据,这次就来完成这个功能吧。

PS. 我也还是一个初学者,如果文章中有一些错误或不足,还请多多指教。

CH32V003 存储器结构

根据 CH32V003 的数据手册可以知道,CH32V003 拥有 16KB 的用户代码区域。

diy-usb-meter-9-1

在 USB 电流表的固件编译之后,可以看到固件的大小,目前整个固件只占用约 12K 左右的空间,那可以就可以尝试使用剩余的空间来当作数据存储,模拟一下 EEPROM。

diy-usb-meter-9-2

存储器特性

在使用 Flash 来模拟 EEPROM 时,需要通过数据手册关注一下 Flash 的一些特性,例如擦写时间和擦写寿命等。

存储器特性

diy-usb-meter-9-3

从数据手册中可以看到,CH32V003 的 Flash 擦写 64 字节需要 2~3 …

阅读全文 »

DIY USB 电流表(5):使用 VSCode + PlatformIO 搭建固件开发环境

在前一篇 《DIY USB 电流表(4):PCB 焊接与调试》 中,我们已经完成了 USB 电流表的焊接,有了硬件之后,就可以开始给它注入灵魂——开发固件了。

首先完成开发环境的搭建,由于我平时都是使用的 MacBook 作为开发机,因此这里以 macOS 作为开发平台来介绍开发环境的搭建。当然 Visual Studio、PlatformIO 这些本身也都是跨平台的,在其他系统配置这一套开发环境的步骤也类似,也可以参考。

PS. 我也还是一个初学者,如果文章中有一些错误或不足,还请多多指教。

开发环境介绍

Visual Studio Code

diy-usbmeter-5-1

项目地址:https://code.visualstudio.com/

Visual Studio Code 是一款由微软开发且跨平台的免费源代码编辑器。该软件以扩展的方式支持语法高亮、代码自动补全、代码重构功能,并且内置了命令行工具和 Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装其他扩展以拓展软件功能。

一般来说,做嵌入式固件开发工作,通常会在 Windows 系统上完成,并且有完整的 IDE 可以使用,例如像 Keil。或者像在这个项目中所使用的 MCU CH32V003,沁恒也提代了一个 IDE MounStudio。

但是因为现在很多嵌入式开发相关的工具链都提供了跨平台的平台,编译器、烧录程序等都可以直接在 macOS 平台上使用,因此现在使用 macOS 来作为嵌入式开发平台也并没有太大的阻碍。

我在 macOS 上使用的编辑器是 Visual Studio …

阅读全文 »

DIY USB 电流表(2):PCB 布局布线

在前一篇 《DIY USB 电流表(1):元件选型和原理图绘制》 中介绍了 DIY 一个 USB 电流表的需求列表,以及将它所需要的元件确定下来,并在立创 EDA 中将整体功能的原理图绘制完成,现在就可以开始在立创 EDA 中进行布局布线了。

PS. 我也还是一个初学者,如果文章中有一些错误或不足,还请多多指教。

布局布线效果预览

pcb preview

转换原理图到 PCB

通过立创 EDA 的 设计>更新/转换原理图到PCB 菜单,就可以将原理图中所有元件放置到 PCB 设计页面中,并且已经都将每个元件的网络配置且连接好。

pcb design 1

布局布线

设计预期外形

我们首先需要做的就是将元件根据用途大概放置到对应的区域,先来根据目标的形态绘制一个草图。

pcb design 2

初步确定布局

首先使用放置板框功能,画一个 PCB 的边框,可以根据实际预期 PCB 大小,将板框设置成那个尺寸,例如这里先设置成 45mm*70mm。

这里可以使用立创 EDA 的交叉选择功能,在原理图中选择对应功能区域的元件,然后按 Shift+X,就可以在 PCB 设计页面中选择对应的元件,方便将归属于同一功能的元件都选中,然后放置到目标位置去。

pcb layout

这样就可以大概将整体布局确定下来,后续就可以在这个基础上进行布线了,当然最终效果会比这个紧凑很多,可以在布线过程中不断调整。

精细调整布局

在初步确定布局之后,就可以根据每个模块的功能,将它们目标的布局确定下来,例如这里 DC-DC 模块,就可以根据一般 DC-DC 模块布局的需求,先把相关电阻、电容、电感的位置放置完毕,再进行最后的布线。

像 …

阅读全文 »

DIY USB 电流表(1):元件选型和原理图绘制

USB 电流表在电子 DIY 中还是比较常用的,可以用它来观察目标设备的实时电流、电压以及功耗。

作为电子 DIY 爱好者,做一个自己的 USB 电流表也是一件顺理成章的事。这里把之前已经开源的一个 USB 电流表的原理图来添加一些详细说明,对于初学者来说可以大概搞明白一个简单设备的原理图该怎么画。

当然我也还是一个初学者,如果文章中有一些错误或不足,还请多多指教。

USB 电流表成品效果

电压、电流、功率、容量界面

ui-1

功率历史图表界面

ui-2

需求分析和元件选型

在最开始搞一个入门 DIY 的产品,还是不要搞太复杂,尽量从简单的开始,先确定一下需求范围,降低整体开发难度,一方面减少原理图绘制之类的工作量,另外一方面,也可以增加成功率,防止半路弃坑 🤣。

需求分析

作为一个 USB 电流表,主要功能就是电流、电压等指标的采集,以及作为现在已经普及度非常高的 USB Type-C 接口和 USB PD 充电都需要支持一下,然后再通过屏幕展示出来采集的数据就可以了。

因此根据需求大概确定以下功能点:

  • USB Type-C 输入与输出
  • PD 协议透传
  • 支持 5~20V 电压检测
  • 支持 0~5A 电流检测
  • 支持功率计算、容量统计
  • 支持功率历史图表显示
  • 支持统计数据记录与清除
  • 按键切换电压电流数据与功率历史图表
  • 使用 12864 OLED


阅读全文 »