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 …

阅读全文 »

在 Arduino 中使用 INA219 测量电路中电压、电流和功率

前段时间在做一个 DIY 产品的时候,会需要测量电路中电压、电流和功率等数据,在找了一些芯片对比后最终选择了德州仪器的 INA219 芯片,刚好之前也使用过 INA219 模块做了一个简单的功率计,相对还算熟悉。

INA219 的官方介绍如下:

INA219 是一款具备 I2C 或 SMBUS 兼容接口的分流器 和功率监测计。该器件监测分流器电压降和总线电源电 压,转换次数和滤波选项可通过编程设定。可编程校准 值与内部乘法器相结合,支持直接读取电流值(单位: 安培)。通过附加乘法寄存器可计算功率(单位: 瓦)。I2C 或 SMBUS 兼容接口 具有 16 个可编程地 址。

INA219 的使用还是比较简单的,直接通过 I2C 总线即可读取数据,并且支持最大 26V 测量电压,12 位精度,在大多数场合都满足需求了。在立创开源平台,也能看到很多 USB 功率计也是使用的这款芯片。

原理图

using-ina219-in-arduino-schematic

INA219 只需要很少的外围元件即可工作,给电源添加一个旁路电容,再加上一个采样电阻,即可完成。

A0、A1 用于指定通过 I2C 与 INA219 通信时,INA219 的地址,如果电路中只有一个 INA219 芯片,可以直接将这两个引脚接地即可。…

阅读全文 »

ESP32-S3 开发板配套物联网扩展板的设计与制作

在完成之前的 《ESP32-S3 最小开发板》 之后,想到很长一段时间,都是用 ESP32-S3 做物联网相关的应用。在这过程中,又会碰到一些会经常重复使用的模块,例如 LCD 屏幕、I2C 外设等,这个时候如果有一个现成的扩展板,就可以省去很多通过杜邦线连接模块的时间,提升应用开发效率。

在做完 ESP32-S3 最小开发板之后,我就根据自己的需求,并且参考了一些其他扩展板,开始设计一个主要用于物联网领域的扩展板。

设计目标

和 ESP32-S3 最小开发板一样,为了使初学者更容易使用,这次的扩展板也会基于容易焊接的前提去规划,主要使用 0805 元件和 2.54mm 排母插件,其中多数元件以模块的方式来引入,这样可以在淘宝购买对应的模块直插,避免在模块的电路设计上花费太多时间。

整个扩展板以输入模块、输出模块和总线模块三部分组成,对应到物联网开发中的大多数展示以及交互场景。

输入模块

  • 5 个用户按键
    • 接受用户输入,可以作为方向键,也可以模拟鼠标移动和按下操作
  • 多功能按键
    • 常见的手持设备,会提供一个多功能按键来实现向上、向下、按压三种操作
  • TF 读卡器
    • 用于数据文件的保存和读取

输出模块

  • LCD 屏幕
    • 显示界面和数据
  • WS2812 LED
    • 状态指示,灯光效果

总线模块

  • I2C 总线
    • 常见传感器模块都支持 I2C 通信,需要支持多个 I2C 模块同时连接
  • SPI 总线
    • 和屏幕或者 TF 读卡器模块进行通信


阅读全文 »

做一个 ESP32-S3 开发板

接触立创 EDA 和嘉立创 PCB 打样服务之后,一直想从头设计一块 PCB,刚好前段时间立创硬件开源平台搞活动,就又薅了一把羊毛,蹭了立创商城的器件券,和嘉立创的打样券,相当于费用全免,做了一块开发板。

因为一直在玩 IoT,因此 MCU 就选择了最熟悉的乐鑫 ESP32-S3,这款 MCU 内置了 Wi-Fi 和蓝牙,官方支持 Arduino 开发框架,GPIO 数量相对前代 ESP8266 也多了很多,而且支持了 PSRAM,在一些高内存应用场合也可以放心使用了。看在免费的情况下,直接选了顶配 N16R8 型号,16MB Flash + 8MB PSRAM 足够应对绝大部分场景。

需求

除开嘉立创搞活动这个原因,在设计这款开发板之前,我也在淘宝上买过 ESP32-S3 的开发板,但是在使用过程中总会碰到各种不满意的地方,因此借这个机会就一起解决了。

宽度要小

在平时做原型验证的时候,会经常要使用到面包板,像下面这种常见的款式。

esp32devkit-breadboard

但是淘宝上常见的 ESP32-S3 开发板的宽度都稍微宽了一些,在插到这个面包板上之后,左右两侧的 GPIO 只能有一侧可以露出接线孔,这样在使用杜邦线或者跳线连接的时候,就非常不方便。

双 USB Type-C 接口

ESP32 系列在 ESP32-S2 之后, 就已经增加了对 USB 设备驱动的支持,可以通过 …

阅读全文 »