作者存档: Xu Jiwei - 第2页

来了来了,用单片机 ESP32-S3 跑 RISC-V 模拟器运行 Linux,这次启动只要 8 秒

在之前一篇文章 《用 7 毛钱的 CH32V003 单片机跑 Linux,启动需要 5 分钟》 中介绍了开源项目 linux-ch32v003mini-rv32ima,可以在 7 毛钱的单片机 CH32V003 上配合外置 PSRAM 来运行一个 RSIC-V 模拟器,并且可以运行一个裁剪过的 Linux 系统镜像。

但是 CH32V003 的性能不太强劲,按作者介绍启动 Linux 系统需要 5 分钟,为了更好地学习一下 RSIC-V 模拟器,我决定把它移植到 ESP32-S3 来试一下看看。

PS. 搞这个也是仅供娱乐了,毕竟 ESP32-S3-N16R8 20 多元的价格,可以买像 V3S 这样正经 ARM SoC 来跑 Linux 了。

移植 mini-rv32ima

在上一篇文章中,已经大概介绍了移植 …

阅读全文 »

用 7 毛钱的 CH32V003 单片机跑 Linux,启动需要 5 分钟

在接触到只需要 7 毛钱的单片机 CH32V003 之后,拿它做了好几个 DIY 项目,像钥匙扣游戏机什么的,感觉还是比较有意思的,虽然资源相比 STM32F103 少很多,但是价格实在太便宜了。

在使用 CH32V003 的过程中,也上网搜了一圈使用它的项目,其中有一个 linux-ch32v003 就很有意思,作者的介绍就是“在一个 0.15 美元的单片机上运行 Linux”,我也克隆了这个项目学习了一下。

linux-ch32v003

Linux on a $0.15 RISC-V microcontroller

项目地址: https://github.com/tvlad1234/linux-ch32v003

这个项目主要解决的问题就是 CH32V003 可用内存太少的问题,作者使用了一个外围的 PSRAM 来扩展内存,实现了硬件 SPI 操作相关的库。

模拟器本身,其实是另外一个开源项目 mini-rv32ima,一个 RISC-V 的模拟器。

linux-ch32v003 主要的目录结构如下:

linux-ch32v003-01

项目目录中主要的内容:

  • emulator:模拟器相关代码,来自 mini-rv32ima 项目
  • hardware:测试用的硬件工程,使用 KiCAD 开发
  • hw_spi:硬件 SPI 库
  • linux:编译


阅读全文 »

去吧皮卡丘~啊不,是悬浮灯丝氛围灯

之前做了一个网红悬浮氛围灯,但是用了一段时间之后发现,这个电池似乎续航有点短,经过网友的提醒,发现是 LDO 在持续耗电,检测了一下的确会有这个情况。那这不能忍,去掉 LDO 优化续航的版本安排上~

DIY 悬浮柔性灯丝氛围灯的教程可以看这里: 30 元 DIY 一个柔性灯丝氛围灯

这次顺便使用了嘉立创的彩色丝印工艺,直接将 PCB 暴露在外面,印上喜欢的图案,美滋滋。

成品效果

有了彩色丝印就可以直接拿 PCB 当顶盖了~

diy-led-light-1

静态功耗检测

通过将万用表串联到电池正极和 PCB 电池正极之间,测得了即使氛围灯在没有打开时,仍然有 4mA 左右的电流消耗。

通过查阅所使用 AMS1117 芯片的数据手册,的确标注了静态电流会有 5-10mA。

diy-led-light-2

因为这个氛围灯没有设计物理电源开关,因此这个问题还是需要解决一下的,要不然一块 1000mAh 电池,光放着一周也没电了。

原理图修改

相比之前的原理图,新版本中去掉了 LDO,电池直接供电到 LED 灯丝。

当然这也会造成一个问题,随着电池电压的下降,在亮度开关是同一档位的情况下,LED 灯丝的亮度会逐渐下降,不过这个问题也不是特别大,不影响使用。

另外因为电池直接供电 LED 灯丝了,电池满电时电压 4.2V,在开启最大亮度时,LED 灯丝的亮度会比使用 LDO 降压后的 3.3V 供电要高不少,可以酌情增大 LED 限流电阻 …

阅读全文 »

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

在接触沁恒家的 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



阅读全文 »

整个带屏数字小键盘吧,先搞定 QMK 固件支持 STM32F103 的 I2C Remap

之前参考立创开源平台的夏天大佬,做了一个基于 ATMega32A MCU + QMK 固件的 40% 配列键盘,不过最后又想用起来的时候发现,可能因为 ATMega32A 用的是软件模拟 USB,所以在 Mac 上的兼容性有点问题,因此就想着自己重新搞一个键盘。

在 QMK 固件的 MCU 支持列表里面翻了一下,发现 STM32F103C8T6 也是支持范围,而且搞一个 STM32duino-bootloader 就可以直接通过 USB 刷机,也是相当方便了。

关于 STM32F103 使用 STM32duino-bootloader,之前已经写了篇文章分享 做键盘必备,抛掉ST-Link,STM32F103通过USB烧录,STM32duino-bootloader踩坑记录

免费打样来测试

但是直接搞整个 40% 配列键盘,PCB 的尺寸超过了嘉立创免费打样的范围,因此准备先搞个数字小键盘来验证一下 STM32F103 做键盘的原理图。

照猫画虎搞个原理图

搞键盘主要就是确定行和列的引脚,为了最大能支持 104 键,就把能用的引脚全用上了。

另外为了使用 OLED 屏幕,这里使用了 PB8、PB9 作为 I2C 通信引脚。

qmk-stm32f103-i2c-remap-1

原理图画了之后,先拿开发板测试一下固件能不能用吧,然后就发现 PB9、PB8 …

阅读全文 »

还在花钱买?5元DIY一个四口USB 2.0 Hub

作为一个电子 DIY 爱好者,在平时做开发的时候会有众多低速 USB 设备需要使用,例如 USB 转串口、小功率设备 USB 供电等,一般电脑并没有那么多 USB 接口可供使用。

但是作为一个成熟的电子 DIY 爱好者,也该学会自己解决这个问题了,直接买芯片 DIY 一个四口 USB 2.0 Hub 吧 😃,也可以顺便学习一下差分布线以及 PCB 阻抗特性。

成品照片

diy-usb-hub-1

功能需求

对于一个简单场景使用的 USB 2.0 Hub 来说,没有太多功能需求,主打一个能用就行,满足以下几个需求就可以:

  • USB Type-C 连接,便于使用现有线材
  • 四口输出,体积需要小巧一点
  • 带过流保护,防止损坏上级电路

硬件选型

USB 2.0 Hub 芯片有不少,例如 CH334、FE1.1S、SL2.1A 等,最后综合功能需求、可参考项目、芯片封装等因素,选择了 SL2.1A。

SL2.1A 是一颗高集成度,高性能,低功耗的 USB2.0 集线器主控芯片;该芯片采用 STT 技术,单电源供电方式,芯片供电电压为 5V,内部集成



阅读全文 »

不要放过闲置快充头,DIY一个带屏幕显示功率的USB-PD电源诱骗器

之前搞完了基于 CH32V003 的 USB 电流表,并把整个开发过程总结成一个教程《全开源!使用 7 毛钱的单片机 DIY USB 电流表教程,入坑硬件设计、固件开发、外观建模》

在此之前,其实已经了解到了 CH224K 这个芯片,同样也是沁恒出的,可以很简单地通过单电阻或者三个 IO 的方式来控制设备端与 USB PD 充电器通信,并且协商到指定的充电电压,在某些需要特定电压的场合就比较有用。

既然已经完成了 USB 电流表,并且电流表也自带了用户按键,那就是再多加一个功能页面的事,顺便把 PD 诱骗也集成掉吧~

成品照片

主界面

img

PCB

img

功能设计和元件选型

CH224K 介绍

CH224 单芯片集成 USB PD 等多种快充协议,支持 PD3.0/2.0,BC1.2 等升压快充协议,自动检测 VCONN 及模拟 E-Mark 芯片,最高支持 100W 功率,内置 PD 通讯模块,集成度高,外围精简。集成输出电 压检测功能,并且提供过温、过压保护等功能。可广泛应用于各类电子设备拓展高功率输入如无线充电 器、电动牙刷、充电剃须刀、锂电池电动工具等各类应用场合。

主要功能:

  • 支持4V至22V输入电压


阅读全文 »

成本60元,用ESP32-S3做个开源游戏机,能玩FC/NES、GameBoy,还有专属彩色PCB

前言

之前复刻了一个基于全志 F1C200S 的模拟器游戏机,但是做下来感觉还是比较麻烦的,主要有两个痛点:

  • 一个是元件太多,像 DC-DC 就有三路,以及焊接难度大,像屏幕的 0.5mm FPC 插座
  • 另外一个是 Linux 系统的编译,过程比较复杂,也没有清晰的教程,想要定制的话比较麻烦

因此就想找找看有没有更简单的方式可以做模拟器游戏机,刚好平时用 ESP32-S3 系列比较多,并且相对于以前的游戏机来说,双核 240MHz 的性能也是足够的,应该可以用来模拟各种游戏机,就去找了一下。

然后就在 GitHub 上找到了 RetroGo 这个项目,一个完整的模拟器固件,支持 ESP32 系列 MCU,但是并没有找到直接对应的硬件项目,在立创开源平台上也没找到简单易用的,那就自己从头搞一个吧~

PS. 这个游戏机也可以当 ESP32-S3 开发板来用,具备 SPI 屏幕、TF 读卡器、I2S 功放、用户按键等多种外设 😃。

RetroGo 介绍

RetroGo 是一个开源的模拟器固件,主要支持的是乐鑫的 ESP32 系列 MCU,例如 ESP32、ESP32-S3,支持的模拟器也相当多,常见的 FC/NES、GameBoy、GameBoy Color 等都支持。

项目地址:https://github.com/ducalex/retro-go

Preview

Retro-Go is



阅读全文 »

做键盘必备,抛掉ST-Link,通过USB烧录固件,STM32F103使用STM32duino-bootloader 踩坑记录

前言

之前在 DIY 基于 QMK 固件的键盘的时候,直接借鉴了立创开源平台上的项目,使用了 ATmega32A 作为主控,ATmega32A 本身并没有硬件 USB 接口,把它作为键盘主控是通过使用 USBaspLoader 这样一个 bootloader 来实现的。

但是毕竟是软件实现,在以前复刻时,使用 ATmega32A 的键盘还是能正常配合 MacBook 使用的,但是最近发现在连接到 MacBook 之后,会很快丢掉连接,这下不得不去找一个带硬件 USB 接口的 MCU 了。

这时我就把眼光放到了 STM32F103C8T6 上,玩了这么久的 ESP32、CH32V003 什么的,还是没能逃过 STM32 😃。

而且相对 ATmega32A,STM32F103C8T6 的系统资源就丰富太多了,64KB Flash、20KB RAM 用来烧录一个 QMK 固件那是相当够用了,什么宏、层的数量,都开到最大。

最后的重点,作为习惯了使用 USB 直接烧录固件的人,也希望给 STM32F103C8T6 刷固件时也可以直接通过 USB 刷,这就找到了 STM32duino-bootloader 这个项目。

阅读全文 »