全开源!使用 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

功能设计

  • 电压、电流、功率、累计电量监测
  • USB Type-C 输入与输出
  • PD 协议透传,支持 USB PD 2.0
  • 支持功率历史图表显示
  • 按键切换电压电流数据与功率历史图表
  • 使用 0.96 寸 12864 OLED 显示相关数据

设计指标

  • 最大支持 PD 2.0 100W
  • 支持 5~20V 电压检测
  • 支持 0~5A 电流检测
  • 最小电压分辨率 10mV
  • 最小电流分辨率 2mA
  • 功率历史记录最长 128 分钟

涉及内容

这个教程涉及到了电子 DIY 从 0 开始的内容,基本上搞完下来,对于电子 DIY 也有个大概了解了,玩其他的开源项目,更多是元器件和芯片知识的扩充了。

产品设计

  • 功能设计
    • 规划 USB 电流表包括哪些功能,需要哪些字段,并且设计界面来显示这些字段
    • 用户交互输入,使用按键输入,并且具备页面切换
  • 外壳设计
    • 结合 3D 建模和亚克力面板设计,让 DIY 项目更像一个产品

硬件设计与设计

  • 元件参数与选型
    • 如何选择需要的元器件,以及根据哪些指标筛选相关的元器件
  • 原理图设计
    • 阅读芯片数据手册,添加外围元件,并且各个芯片连接起来
  • PCB 布局布线
    • 在确定完 PCB 上整体按键、输入输出接口、屏幕位置等之后,开始进行元器件的布局和布线
  • PCB 焊接和调试
    • 通过嘉立创等板厂进行免费打样,拿到 PCB 之后,通过手动焊接的方式来完成 PCBA 的制作

嵌入式软件开发

  • 开发环境搭建
    • 基于 Visual Studio Code + Platform IO 的开发环境搭建
  • 通信协议
    • 通过 I2C 协议来读取 INA219 数据,以及 SSD1306 OLED 的显示驱动
  • 屏幕和按键驱动
    • 了解 SSD1306 屏幕驱动的原理,点阵字体的格式,以及如何写一个英文字符显示驱动
    • 实现一个简单的按键检测驱动,支持单击以及长按事件检测
  • 固件体积分析和优化
    • 使用 PlatformIO Inspect 功能来分析固件体积和内容,并且针对性的优化

DIY USB 电流表完整教程

以下是 DIY USB 电流表的全部分阶段教程,可以直接点击链接查看。

USB 电流表开源地址

这个 USB 电流表所有资料已经开源,可以在以下仓库中获取,包含固件代码、PCB 生产 Gerber 文件、原理图和外壳 STL 文件。

https://github.com/ohdarling/CH32V003-USBMeter

硬件相关的源文件已经在立创开源平台开源,访问以下地址可以进行一键 PCB 下单和一键 BOM 配单操作:

https://oshwhub.com/wandaeda/ji-yu-ch32v003-de-usb-dian-liu-biao

电子 DIY 入门知识整理

当然也可以了解一些其他电子 DIY 入门相关的知识,在元器件选型时可以更有方向一些。

其他 DIY 项目

30 元 DIY 一个柔性灯丝氛围灯

diy-ambient-light-1

教程地址: https://xujiwei.com/blog/2024/04/diy-ambient-light/

发表评论?

2 条评论。

  1. MCU算是最便宜的几个器件之一了

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>