标签存档: CH32V003

开源了,智能UV胶紫外线固化灯复刻教程

上周分享了一个基于 CH32V003 的紫外线固化灯,《7毛钱MCU能做啥,搞个智能UV紫外线固化灯》,周末整理了一下相关的资料,把这个项目开源出来,有需要的朋友可以复刻一个~

make-smart-uvled-1

元件列表

MCU、风扇、屏幕等可以在淘宝购买,其他 PCB BOM 中的元件基本上都可以在立创商城找到。

  • CH32V003F4P6:淘宝购买,一般 7 毛的样子
  • OLED:0.96 英寸,分辨率 128x64,引脚顺序 GND、VCC、SCK、SDA
  • 风扇:5V 超薄铝散热风扇,PH2.0 接口,尺寸 4x4x1.2cm
  • LED 驱动 DX1240:立创商城购买
  • UVLED:原理图不对,实际型号 JNJ-L-3535EW90-36530-SL-G1,立创商城购买
  • 船形开关:10.5x15mm 规格两脚的,立创商城有
  • 自攻螺丝:M2x16,M2x5,两种规格
  • 锂电池:503040 规格,PH2.0 插头
  • NTC 电阻:10K 3950 线上 10cm,需要自己做 PH2.0 的插头

其他元件使用 BOM 表里面的就可以了。

总共成本大概在 50 左右。

PCB

这个项目需要两块 PCB,一个使用铝基板的 LED 灯板,一块主控板。…

阅读全文 »

7毛钱MCU能做啥,搞个智能UV紫外线固化灯

之前在做网红电气灯的时候,外壳的亚克力板是 UV 胶水粘接的,这个时候就需要使用紫外线固化灯了。虽然在买 UV 胶水的时候,卖家也送了一个紫外线固化灯,但是那个灯实在太弱了,照半天 UV 胶表面还是粘粘的。

这个时候就想到去自己做一个 UV 紫外线固化灯,刚好在立创开源平台看到一个结合了紫外线 LED 恒流驱动 + MCU 智能控制 + 风扇散热的项目,就参考了一下来做个自己的智能 UV 紫外线固化灯。

成品效果

操作视频

固化使用

diy-smart-uvled-1

功能设计

自己搞的紫外灯,功能肯定是按自己的需求设计了,最重要的一点就是紫外线 LED 功率要大,为了方便使用,也要支持电池供电。

在梳理常用的使用场景以及结合大功率灯珠的限制之后,就可以大概知道整体的功能范围了:

  • 使用 2W UVLED 灯珠,支持 PWM 调光控制亮度
  • 使用风扇散热,支持风扇电源控制
  • 支持设置 LED 亮度、自动倒计时照射固化
  • 支持灯珠温度检测,自动控制风扇开启关闭
  • 支持电池供电移动使用,支持电池电压检测

硬件选型

针对功能需求,大概的硬件选型也可以定下来了,屏幕不用显示太复杂的信息,用了 0.96 OLED,风扇和 LED 铝基板直接借用了立创开源项目选的元件,其他的都换掉了。

  • 主控 MCU:CH32V003
  • 屏幕:SSD1306 128x64 OLED


阅读全文 »

来了来了,用单片机 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:编译


阅读全文 »

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

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


阅读全文 »

不要放过闲置快充头,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输入电压


阅读全文 »

全开源!使用 7 毛钱的单片机 DIY USB 电流表教程,入坑硬件设计、固件开发、外观建模

之前已经连载完了 DIY USB 电流表的所有章节,这里汇总介绍一下这个项目,希望对电子 DIY 感兴趣的朋友们有所帮助。

这个 DIY USB 电流表的所有内容都已经开源,包括:

  • 硬件原理图
  • 硬件 PCB 布局布线
  • MCU 固件代码
  • 外壳 3D 模型 STL 文件
  • 面板生产文件

在文末可以找到开源项目的所有资料,其中硬件部分在立创开源平台,其他部分在 GitHub 中。

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

项目介绍

这是一个基于沁恒 CH32V003 和德州仪器 INA219 的 DIY USB 电流表,使用 CH32V003 作为主控 MCU 来读取和显示电压电流数据,INA219 作为电压电流监测计,并且通过两个按键来进行交互。

主要元件

  • MCU:CH32V003
  • 电压电流监测:INA219
  • 显示设备:SSD1306 OLED
  • 输入输出:USB Type-C
  • 采样电阻:10mR

功能设计



阅读全文 »

DIY USB 电流表(10):完结篇,外壳和面板设计

在截止到前一篇 《DIY USB 电流表(9):Flash 模拟 EEPROM 存储累计电量》 后,我们已经完成了 DIY USB 电流表的所有硬件和软件开发工作,接下来就需要设计一个稍微正经一点的外壳将 PCB 包装起来,除了更好看一点的同时,还可以防止裸露的 PCB 接触到导体之后造成意外短路的情况。

另外,为了体验一下嘉立创的亚克力面板定制服务,这次的 USB 电流表外壳采用面板 + 外壳的方式来完成,PCB 通过 M2 自攻螺丝固定在 3D 打印的外壳上,再将面板通过双面胶粘贴到外壳上。

当然我也是 3D 建模业余选手,只会基本的长方体布尔切割操作什么的,设计的外壳主打一个能用就行 🙈。

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

导出 PCB 3D 模型

为了更好的确定外壳的尺寸和各个接口、按键的位置,可以先在立创 EDA 专业版中导出 PCB 的 3D 模型文件,这样在建模软件里可以有更直观的参考。

diy-usb-meter-10-1

外壳设计

最终外壳基本上就是根据 PCB 的外形设计了一个 1.7mm 厚,带圆角的边框,并且在两个按键的位置预置了两个和外壳一体的按钮。

diy-usb-meter-10-2

PCB 上的按键为了能给按键手柄留出行程空间,是突出 …

阅读全文 »

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 电流表番外篇:使用 PlatformIO Inspect 分析和优化固件体积

在前一篇 《DIY USB 电流表(8):绘制功率曲线》 的开发过程中,我还碰到一个额外的问题,在最终开源的代码中虽然已经解决了,但是在文章中并没有提到,这就是编译固件体积超出 Flash 限制的问题。

这里就分享一下碰到 CH32V003 固件编译后体积超过 Flash 如何查找原因、解决问题的过程。

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

编译后固件体积超标

在定义了功率历史数据缓存的变量,添加数据存储、屏幕画点驱动、按键检测等代码之后,照常编译一下固件,检查一下代码有没有错误,却突然发现编译出错了:

diy-usb-meter-inspect-1

一看错误原因: region 'FLASH' overflowed by 772 bytes,这就意味着编译完的固件体积已经超过了 CH32V003 的限制,毕竟CH32V003 只有 16KB 的用户代码空间。

在前几篇中编译完成也可以发现,固件体积已经快到达极限了,没想到这么快就已经超出不够用了。

排查固体体积构成

幸好 PlatformIO 提供了 Inspect 功能,可以用于分析固件编译产物中的各种资源使用情况,包括 Flash 占用、内存使用、静态代码检查等,通过这个工具,就可以快速分析固件编译完后,哪块代码或资源占用的体积最大。

PlatformIO Inspect 文档可以参考这里: https://docs.platformio.org/en/latest/home/index.html#project-inspect

使用 Inspect

要使用 PlatformIO Inspect 功能很简单,直接在 PlatformIO 侧边栏中通过菜单打开 …

阅读全文 »