标签存档: CH32V003

7毛钱的 MCU CH32V003 驱动 1.54 寸电子墨水屏

放假了玩点轻松的,最近为了玩电子墨水屏,搞了个电子墨水屏驱动板,用 ESP32 来驱动是很方便了,不过想试试用 CH32V003 这种入门级的芯片玩玩看,顺便也学习一下墨水屏的驱动。

这里使用的墨水屏是 1.54 英寸,通信接口是 SPI,驱动代码直接找了微雪的示例程序改写成使用 CH32V003 的库。

硬件连接

CH32V003 有一个 SPI 接口,这里与电子墨水屏通信使用四线 SPI,需要额外准备一个 DC 引脚,SPI MISO 不需要使用,这里直接悬空了。

除了标准的 SPI MOSI、CLK 需要使用指定的引脚,其他引脚都使用软件方式操作,特别是 SPI CS,这里连到了 PD3。

墨水屏其他几个引脚的连接:

  • CS -> PD3
  • BUSY -> PD2
  • DC -> PC4
  • RST -> PC3

ch32v003-eink-driver-1

使用 SPI 总线

SPI 驱动直接使用 CH32V003EVT 中的例程就可以了,不过需要注意的是,例程中的一些参数需要根据墨水屏的特性进行修改,主要修改有以下几个地方:

  • SPI_DataSize:需要修改为 8b


阅读全文 »

开源了,智能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 …

阅读全文 »