月度存档: 4月 2024

DIY USB 电流表(7):读取和显示 INA219 电流电压数据

在前一篇 《DIY USB 电流表(6):点个屏,使用 I2C 驱动 0.96 寸 OLED》 中,我们已经完成了屏幕显示驱动的开发,并且根据需求,列出了需要展示的数据项,确定了一下最终显示内容的布局。

在之前,显示的内容都是占位的测试数据,在这一节,就可以开始真正去读取 INA219 传感器的数据,将电路中测量的电压、电流等数据显示在屏幕上,这又是一节枯燥的编码工作 🙈。

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

准备工作

在开始读取 INA219 的数据之前,同样也要准备一些相关的库,例如 INA219 数据的读取、参数的配置,以及在 CH32V003-GameConsole 中所使用的 I2C 封装并未提供读取 I2C 数据方法,另外,为了计算 USB 电流表运行时间内消耗的电量,也需要有相关的计时方法。

I2C 读取方法

在 CH32V003-GameConsole 的代码中,已经有了 i2c_tx.h,提供了 I2C 写入相关的方法,对于一个游戏机来说,拥有写入方法就足够了,它只需要用 I2C 来刷新屏幕,但是在我们的 USB 电流表项目中,还需要使用 I2C 去读取 INA219 的数据,因此需要去封装一个 I2C 读取方法。

在开始编写 …

阅读全文 »

DIY USB 电流表(6):点个屏,使用 I2C 驱动 0.96 寸 OLED

在前一篇 《DIY USB 电流表(5):使用 VSCode + PlatformIO 搭建固件开发环境》 中,我们已经完成了开发 USB 电流表固件的开发环境搭建,整个开发环境基于 Visual Studio Code + PlatformIO 来完成,并且跑通了一个基本的 Demo,验证了开发环境。

固件开发的第一步,我们先将最终输出数据的显示设备,0.96 寸 OLED 屏幕给点亮,这样在后续开发过程中,也可以通过屏幕来显示一个调试数据信息。

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

准备工作

在开始开发之前,我们需要做一些准备工作,使用 PlatformIO 创建项目并不包含很多使用示例,例如如何使用 GPIO,如何使用 I2C 总线等,并且使用 platform-ch32v 时,它的函数定义与官方示例也不太相同,因此我们需要找一个类似的开源项目作为参考,从而可以更快速地完成 USB 电流表的固件开发。

参考项目 CH32V003-GameConsole

项目地址:https://github.com/wagiminator/CH32V003-GameConsole

diy-usb-meter-6-1

我就从 CH32V003-GameConsole 这个项目了解到 CH32V003 这款 MCU,并且开始尝试使用的,刚好这个项目本身包含了 0.96 寸 OLED 屏幕的驱动以及 GPIO、ADC …

阅读全文 »

电子 DIY 入门知识整理:电源芯片 LDO、DC-DC

在开始继续开始玩电子 DIY 之后,就逐渐转到自己制作 PCB 并且使用贴片元件代替模块来制作产品了。之前一直使用的分立元件,都是用杜邦线连接各个成品模块,在换成贴片元件之后,对这些元件的各种封装规格什么的完全是一脸迷糊。

前面一篇 《电子 DIY 入门知识整理:电阻、电容、电感》 介绍了电阻、电容、电感的介绍、封装和选型,这次继续来介绍电源相关的内容,主要是 LDO 和 DC-DC,分享给同样开始想使用贴片元件进行电子 DIY 的朋友们。

PS. 我作为一个新入门电子 DIY 玩家,以下都是从一个初学者的角度整理的,并且主要介绍我使用过,稍微了解一点的元件,如有错误还请指正。

前言

对于设计一个电子电路来说,可能三分之一工作内容都是在确定电源供应、电源对电路的干扰、电源的稳定性等相关的内容。

在接触过几款 Linux 开发板的原理图以及 PCB 设计后,大概总结了一下发现,其实这些开发板中相当一部分内容都是跟电源相关,例如对于电压会有 3.3V、2.5V、1.8V 等不同的需要,对于每一种电压,也会有不同的电流需求,有一些 SoC 甚至会对上电时序也有一定的要求,因此搞定电源的设计之后,一般 Linux 开发板三分之一的工作已经完成了。

当然对于简单的电路来说,基本上可以 AMS1117 3.3V 走天下,在一些特殊的场合再考虑使用 DC-DC 电路。

LDO 低压差稳压器

LDO 作为常见的电源器件在电子 DIY 还是很常用的,很多 MCU 或者芯片的工作电压都在 3.3V,如果使用 USB 或者电池供电,一般都会高于 3.3V,这个时候就可以使用 …

阅读全文 »

DIY USB 电流表(5):使用 VSCode + PlatformIO 搭建固件开发环境

在前一篇 《DIY USB 电流表(4):PCB 焊接与调试》 中,我们已经完成了 USB 电流表的焊接,有了硬件之后,就可以开始给它注入灵魂——开发固件了。

首先完成开发环境的搭建,由于我平时都是使用的 MacBook 作为开发机,因此这里以 macOS 作为开发平台来介绍开发环境的搭建。当然 Visual Studio、PlatformIO 这些本身也都是跨平台的,在其他系统配置这一套开发环境的步骤也类似,也可以参考。

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

开发环境介绍

Visual Studio Code

diy-usbmeter-5-1

项目地址:https://code.visualstudio.com/

Visual Studio Code 是一款由微软开发且跨平台的免费源代码编辑器。该软件以扩展的方式支持语法高亮、代码自动补全、代码重构功能,并且内置了命令行工具和 Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装其他扩展以拓展软件功能。

一般来说,做嵌入式固件开发工作,通常会在 Windows 系统上完成,并且有完整的 IDE 可以使用,例如像 Keil。或者像在这个项目中所使用的 MCU CH32V003,沁恒也提代了一个 IDE MounStudio。

但是因为现在很多嵌入式开发相关的工具链都提供了跨平台的平台,编译器、烧录程序等都可以直接在 macOS 平台上使用,因此现在使用 macOS 来作为嵌入式开发平台也并没有太大的阻碍。

我在 macOS 上使用的编辑器是 Visual Studio …

阅读全文 »

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

diy-ambient-light-1

偶尔在 B 站看到一个柔性灯丝的氛围灯,感觉不错,看了一下教程,用的是各种模块,开关模块、充电模块什么的,对于已经入门电子 DIY 的我来说,这怎么能忍,因此也购入了需要的材料,自己来搞一个。

功能设计

对于一个氛围灯来说,需要肯定首要是 LED 灯的控制,之前在立创开源平台上复刻过一个电气灯,已经用过其中的 LED 灯控制芯片 PT8022W,自带了触摸控制和 PWM 调光功能,这个芯片在这个氛围灯中使用也比较适合。

另外作为一个比较便携的氛围灯,移动使用也是必需的,因此电池的充放管理也要加入进来,刚好屯了一大堆国芯佳品的 GX4057,这里可以派上用场了。

至于供电就直接用 LDO 了,AMS1117 也是常备芯片之一。

最终定下功能:

  • 触摸开关,支持无级调光以及亮度记忆
  • 支持电池供电,自带 USB Type-C 接口充电
  • 支持电池供电与 USB 供电切换,在充电时不使用电池

大多数元器件都是现成的,直接画个板子来组装就可以了 😃

材料和成本

  • 柔性 LED 灯丝带线,110mm,6.5 元
  • 高硼硅玻璃管,50x100x5mm,8.8 元
  • 主板 PCB,嘉立创免费打样,0 元
  • 锂电池,802540 850mA,12.8 元
  • 充电芯片 GX4057,触摸芯片 PT8022W(可用国产替代),电容电阻零零碎碎加起来算 3 元
  • 钕磁铁,5x2mm


阅读全文 »