作者存档: Xu Jiwei

DIY USB 电流表(4):PCB 焊接与调试

在前一篇 DIY USB 电流表(3):PCB 免费打样详解 中,我们已经完成了 PCB 的下单,坐等几天就可以将生产完成的 PCB 拿到手了。在 PCB 到手之前,可以先把焊接组装需要的元器件先采购起来,毕竟这个也需要两天时间才能快递到手。

等到焊接 PCB 所需要的元器件都到手之后,就可以将我们的 PCB 组装起来了。

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

元器件采购

在采购元器件前,我们可以先在立创 EDA 中将物料清单(俗称 BOM)导出,在立创 EDA 中使用 导出》物料清单(BOM)... 菜单就可以导出 BOM。

物料清单 (BOM),也称为产品结构,是构建、制造或维修产品或服务所需的所有物料的列表。物料清单充当集中式源,包含从原材料阶段制造产品所需的所有信息。

diy-usbmeter-bom-1

BOM 导出后是一个 Excel 文件,打开后就可以看到它包含了这块 PCB 所需要的全部相关元器件:

diy-usbmeter-bom-2

如果直接在立创商城购买这些元器件,可以在导出 BOM 对话框中选择 元件下单,这样就会将 BOM 上传到立创商城,并开启 BOM 配单服务,可以自动根据 BOM 表中的内容匹配到合适的元器件,省去了一个一个查找并添加到购物车的过程。

diy-usbmeter-bom-3

当然立创商城购买元器件的价格并不一定是最优的,淘宝上很多商家也提供配单服务。不过立创商城的东西比较齐全,对于一些低价元器件,还是可以考虑直接在立创商城一站配齐的,对于差价比较大的元器件,我也都是选择在淘宝上购买。

例如这个 …

阅读全文 »

DIY USB 电流表(3):PCB 免费打样详解

在前两篇文章中,我们已经完成了 DIY USB 电流表的元件选型、原理图绘制和 PCB 布局布线,完成这些后,就可以将 PCB 文件导出给到板厂进行生产啦,很快就可以拥有一块自己设计的 PCB 了。

如果还没有完成 PCB 设计,可以参考前两篇文章:

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

PCB 免费打样

得意于 PCB 板厂间的竞争,现在有不少板厂提供了免费打样服务,例如嘉立创、捷配等。有了这些提供免费打样服务的 PCB 板厂,作为电子 DIY 爱好者也可以低成本的拥有一块正经生产出来的 PCB 来完成一些产品了,而不是只能使用万用板和飞线来制作。

我现在用过两家板厂的免费打样服务,分别是嘉立创和捷配,目前两家的规则差不多,都是一个月内有两次免费打样机会。

嘉立创

嘉立创是我用过最多的免费打样服务板厂了,他的免费打样服务范围相当广,FR-4 2、4、6 层板,FPC 柔性电路板,铝基板等都可以进行免费打样,结合立创 EDA,整体下单流程很顺畅。

另外嘉立创 PCB 阻焊油墨除绿色外的颜色也是可以免费使用的,PCB 生产时间相比绿色会多一两天,但是可以拥有红色、蓝色、紫色、黑色 PCB,还是相当值得的。

嘉立创免费打样一般都是给 …

阅读全文 »

笔记本 RTX 3070 + 8G 显存本地运行大语言模型 CodeGeeX2 生成代码实践

之前看到 CodeGeeX2 大语言模型发布了,介绍说比上一个版本效果要好上不少,因此也想在本地跑一个看看,能不能在项目开发的流程中能应用一下。

CodeGeeX2 是多语言代码生成模型 CodeGeeX (KDD’23) 的第二代模型。不同于一代 CodeGeeX(完全在国产华为昇腾芯片平台训练) ,CodeGeeX2 是基于 ChatGLM2 架构加入代码预训练实现,得益于 ChatGLM2 的更优性能,CodeGeeX2 在多项指标上取得性能提升(+107% > CodeGeeX;仅60亿参数即超过150亿参数的 StarCoder-15B 近10%)

不过因为手上只有一个笔记本用的 Nvdia 显卡,型号是 3070,并且显存还只有 8G,因此在运行过程中相对更高显存的显卡会碰到一些坑,这里就记录一下整个安装过程、踩的坑和解决方法。

系统环境

我的笔记本安装了 Windows 10 系统,并且还没有安装 WSL,因此就直接在 Windows 系统中来安装和部署 CodeGeeX2 了。

软件和硬件环境:

  • OS: Windows 10 22H2 (19045)
  • Python:3.10.11
  • CPU:AMD Ryzen 7 5800H
  • 内存:32GB
  • 显卡:RTX


阅读全文 »

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


阅读全文 »

将节省进行到底,使用激光雕刻机和牛皮纸 DIY SMT 钢网

将节省进行到底

自从有了嘉立创 PCB 免费打样之后,我玩电子 DIY 基本上都是直接上 PCB 而不是洞洞板 + 模块了。在打样完 PCB 之后,一般都是选择手工焊接元件,以前都是直接使用针筒式锡膏点锡的方式来进行上锡,然后再用电铬铁或者加热台完成手工焊接操作。

但是在面临越来越复杂的 PCB,并且使用了 0603 甚至 0402 封装的元件之后,针筒式锡膏就很难控制挤出量了,并且一块板子几百个焊盘需要点锡的话,工作量实在太大了。

这个时候就可以按照 SMT 标准流程,使用钢网刷锡膏的方式来给焊盘上锡了。最开始也是使用了嘉立创的钢网服务来配备钢网,但是他们的费用还是比较高的,不管板子大小,一个钢网就需要 50 元,打样都已经白嫖的,再花 50 元似乎不太值。

后来再在淘宝上找到了一些钢网制作店铺,可以针对打样的 PCB 大小制作钢网,价格就便宜不少,加上运费在 15 元左右,这个价格也还算实惠了。

不过在 B 站看到一些视频使用 3D 打印机制作钢网的视频之后,启发了我,想到闲置的那台激光雕刻机,似乎也可以用激光雕刻机来完成钢网的制作。

最终在尝试几次之后,选择了 90 克覆膜牛皮纸来作为制作钢网的材料,毕竟一般激光雕刻机的功率并不够用来雕刻钢片。

准备工具

  • 激光雕刻机
  • 90 克覆膜牛皮纸
  • 立创 EDA 专业版
  • LaserWeb

制作激光雕刻 Gcode 文件

对于使用 …

阅读全文 »

Arduino + ESP32 高分开源项目推荐

作为一个 ESP32 重度用户,并且一直使用 Arduino 框架开发嵌入式应用的爱好者,在过去开发的项目过程中使用过不少开源项目,这里稍微总结一下比较有意思的,以及比较有用的开源项目列表。

其中一些项目不光是固件方面的程序,也包含了对应的硬件设计,可以当作一个电子 DIY 入门的学习项目。

开源项目集合

awesome-esp

项目地址:https://github.com/agucova/awesome-esp

一个国外爱好者收集的 ESP32/ESP8266 开源项目集合,主要偏完整的固件应用。

固件应用

这里是一些完整的固件开源项目,通常也会包含一个完整的硬件项目,不管是用来学习硬件开发,还是学习嵌入式软件开发,都是很好的例子。

ESPHome

ESPHome Logo

项目地址:https://github.com/esphome/esphome

算是最流行的开源智能家居固件之一了,通过编写 YAML 配置文件的方式来快速集成各种传感器、开关、屏幕等设备到一个固件中,并且内置了 Home Assistant 等智能家居平台的支持,可以一键添加到这些平台中。

要使用 ESPHome,基于上只需要了解大概的 GPIO 知识,I2C 以及 SPI 总线的概念就可以上手了,传感器或者其他外设的驱动都已经包含在固件中,并且官方文档也包含了详细的配置教程。

之前就使用 ESPHome 快速搭建了两个应用:

tasmota

项目地址:…

阅读全文 »

万字长文,一个软件工程师的 2023 电子 DIY 总结

在去年这个时候,总结了一下 2022 年重新拾起电子 DIY 的经历《一个软件工程师的 2022 电子 DIY 小结》,翻了翻嘉立创 PCB 订单,今年也打了不少板子,虽然也有一些是取消的订单,但是总体还是打了不少板子,有一些旧的东西,也有一些新的东西。

相比去年,今年在电子 DIY 上又学习了一些新东西,再来总结一下在 2023 年得到的经验。当然这些都是我作为一个新手村玩家得到的经验,只能说在 DIY 这个领域,可以用来应付一些需求,与实际商业化产品开发过程中需要的经验,还是会有比较大的距离,因此这些经验也仅供大家参考。

经过这一年,看见什么数码产品,都想着自己能不能做一个,找找开源项目,找找对应芯片,然后搞出一个半成品 😆。

复刻项目

作为一个新手,2023 年整体还是以复刻为主,得益于立创硬件开源平台,总是可以看到各种很有意思的项目,这其中有一些算是玩具,有一些是开发相关的,有一些则是实际生活中会使用到的数码产品。

在复刻项目过程中,现在能更多地去理解原理图,知道每个部分的作用是什么,以及在它的基础上,是否可以做出一些符合自己需求的修改,例如以下这些基础的修改:

  • 元件封装是否方便手焊,0402 替换为 0603 或 0805
  • 布局是否方便使用加热台一次焊接,双面贴片变更为单片贴片
  • 元件选型是否和现在元件库存匹配,LDO、DCDC 等替换为库存已有型号
  • 主控是否可以替换为更熟悉的型号,例如 ATMEGA 替换为 ESP32

在经历过几个开源项目的复刻过程后,会逐渐对硬件项目的构成有一个更清晰的概念,也能对硬件项目中可能包含的功能模块了解更多一点,例如电源模块、充电模块、电机驱动等。

在知道和了解了硬件项目中的这些模块之后,在后续想要做自己的项目时,就可以参考和使用了,这跟在软件项目中使用开源库的原理也差不多。

SmartKnob - 基于 SimpleFOC 的无刷电机模拟旋钮

2023diy-smartknob1

项目地址:https://github.com/scottbez1/smartknob

关键词:无刷电机,SimpleFOC,PID,ESP32,TMC6300,磁编码器,SK6812…

阅读全文 »

Monaco Editor 实战:添加代码折叠功能

在之前的文章《4 步为 Monaco Editor 添加自定义语言支持》中,我们已经学会了如何使用 monaco-editor 来实现一个支持自定义编程语言的编辑器,但是作为一个标准的代码编辑器,我们还需要它支持代码块折叠功能,这样在编辑内容比较多的代码文件时,可以方便的将其中一些代码块折叠起来,使得在阅读代码时更容易理解整体代码结构。

这一次我们就来看看如何给 Monaco Editor 增加代码块折叠功能。

官方示例

在 Monaco Editor Playground 的 Folding Provider Example 示例中,可以看到如何给一个自定义语言添加代码折叠支持:

monaco.languages.registerFoldingRangeProvider("foldLanguage", {
    provideFoldingRanges: function (model, context, token) {
        return [
            // comment1
            {
                start: 5,
                end: 7,
                kind: monaco.languages.FoldingRangeKind.Comment,
            },
      // ...
    ]
  }
});

可以看到,只需要在注册自定义语言后,再注册一个 foldingRangeProvider …

阅读全文 »

Using INA219 with Arduino to Measure Voltage, Current, and Power in a Circuit

Recently, while working on a DIY project, I needed to measure voltage, current, and power in the circuit. After comparing several chips, I decided to use the INA219 chip from Texas Instruments. Coincidentally, I had previously used an INA219 module to build a simple power meter, which made me …

阅读全文 »