标签存档: 电子DIY

勘误:ESP_NEW_JPEG 更新到最新版后,所有分辨率都是最快的

前言

上篇文章(见 ESP32-S3 + Arduino 各种 JPEG 解码库速度对比,到底哪个才是最快的?)测试了三个 JPEG 解码库的性能,最终结论是 ESP_NEW_JPEG 在低分辨率遥遥领先,但到了 240x240 和 320x240,被 JPEGDEC 追平。

结果最近想测试 ESP_NEW_JPEG 的 block 解码方式,发现怎么找都找不到对应的 API,这才意识到——我用的库版本根本不对 😅。

问题出在哪里

esp32-jpeg-decoder-errata-2

上篇文章用的是 Arduino 生态里的封装库 ESP32_JPEG,这个库最后一次更新是三年前,是对 ESP_JPEG 早期版本的封装,早就停止维护了。

乐鑫官方真正在维护的最新版本是另一个仓库:esp-adf-libs/esp_new_jpeg,五个月前还在更新,block 解码、最新的 SIMD 优化都在这里。

两个库同名,但版本差距已经是三年了,之前完全踩坑了 😂。

更新库,重新测试

换成最新版 ESP_NEW_JPEG,测试环境与上次完全一致:

  • ESP32-S3-Zero,240MHz 双核
  • 测试图片:Lenna,160x80


阅读全文 »

真实案例了解了什么是反向电动势

之前分享了使用 NMOS 驱动电磁铁通断来实现的段码时钟(见 电磁铁驱动的段码时钟找到解法了,先来一位试试),在评论区有朋友指出电路中电磁铁没有并联续流二极管,我之前虽然接触过这个概念,但是对于为什么要使用并没有很深刻的概念,并且似乎也没有出问题?

但是这肯定是有问题的,为了学习一下没有续流二极管有什么危害,还是来测试看看。

原电路设计

在原来的电路中,电磁铁连接在 12V 和 NMOS 的 Drain 上,通过 Gate 控制 NMOS 的导通,从而接通电磁铁,实现对段码上永磁铁的推动,实现段码的翻转。

magent-clock-back-emf-1

示波器观察

在测试时使用 10V 对电磁铁进行供电,并且通过单片机对 NMOS 进行操作,在翻转段码时,对电磁铁进行接通 50ms 的操作。

然后示波器连接在 NMOS 的 Drain 上,观察电压变化。

未接续流二极管电压变化

可以看到在关闭 NMOS 的瞬间,有一个极高的尖刺出现,示波器显示电压为 37.6V,这理论上已经超过了 NMOS 的工作电压 😂。

magent-clock-back-emf-2

放大看可以看到这个电压持续了 300us 再逐渐降低到正常工作电压的 10V。

magent-clock-back-emf-3

反向电动势是如何产生的?

顺便向 AI …

阅读全文 »

电磁铁驱动的段码时钟找到解法了,先来一位试试

电磁铁段码时钟这个项目还是年初的时候在 Instructables 看到的,中间尝试过复刻,但是有两点实在有点麻烦就一直没弄:

  1. 原作者是自己绕电磁线圈,太费事了
  2. 原作者用了我不懂的达林顿管啥的来驱动电磁铁,太麻烦了

然后最近逛淘宝发现了有现成的线圈卖,买了测试一下,还真可以推动 5x2mm 的圆形永磁铁了,这下可以开始搞一搞了。

单个数字演示效果

这里因为是放在桌子上拍的,段码翻转声音会比较大,实际竖着放的时候会好一些。

PS. 拍视频的时候左上角那个段有一个电磁铁坏了,所以最后可以看到它没有翻转成黑色 😃。

电磁铁选择

在找 DeepSeek 学习了一大圈之后,终于对电磁铁明白一点点,需要足够多的匝数,才能会有大一点的磁性。

然后就找到了这个商品,应该是顺着别人做磁悬浮的配件找到的。

买回来之后把铁芯敲掉就可以了。

magnet-clock-finished-one-digit-2

之前还买过下面这两种,测试的时候完全推不动 5x2mm 的圆形永磁铁,因此从年初到现在都没有折腾过。

magnet-clock-finished-one-digit-3

magnet-clock-finished-one-digit-4

驱动电路

原项目使用了达林顿管还有移位寄存器什么的组合起来控制,我觉得比较麻烦,板子也太多了。

在拿到电磁铁线圈之后,就想着既然是控制通断,是不是可以直接用 NMOS 就可以了。直接用零件搭了个测试电路,完全可以把圆形磁铁推开,那就开始画块板子吧。

直接最省事的做法了,MCU 的 GPIO 直接控制 NMOS Gate,电磁铁线圈接在 Drain 上,通过短暂开启 GPIO,就可以让电磁铁产生磁力推开特定的段码。

magnet-clock-finished-one-digit-5

这里使用 NMOS 而不是 PMOS 来控制电磁铁通断,是因为如果电磁铁需要更大推力,需要更高的电压,测试了在 10V 的时候效果比较好,因此如果需要 MCU 3.3V 的 GPIO …

阅读全文 »

让串流小电视更实用,通过抖动实现 4 阶灰度图像显示

前言、先看效果对比

二值化黑白图像展示

灰度抖动图像展示

一、黑白世界的色彩想象

之前使用 ESP32-S3 + 12864 OLED 做了个串流小电视(见 桌面小电视新思路,ESP32-S3 + 12864 OLED 串流视频),通过网络发送视频帧的方式来播放视频。

因为 12864 OLED 是一个单色显示屏,因此在播放视频时,整个画面的颜色通过“灰度化->二值化”的步骤来生成黑白纯色画面,在视频中可以看到画面没有层次和细节,不太容易看清画面内容是什么。

因此我们需要引入灰度来让整个画面更加丰富,但是在 12864 OLED 没有灰度的情况下如何显示灰度信息呢?

在这里我们就可以引入一种特别的显示技术——抖动 (Dithering),它能让单色屏幕拥有显示4阶灰度的能力。

二、什么是抖动 (Dithering)?

抖动,它的原理却非常直观,相当于通过大脑形成一种视觉错觉。

在单色屏幕上,只有纯黑和纯白的像素。抖动的核心思想就是:通过改变像素点的排布密度,来模拟出不同程度的灰度。

举个最简单的例子,如果你仔细观察报纸上的照片,你会发现那些“灰色”的部分,其实是由许多大小不一或疏密不同的黑色墨点组成的。在远处看,这些墨点混合在一起,就形成了我们看到的灰度。旧式的点阵打印机也是同样的原理,通过打印点的疏密来表现深浅。

抖动就是利用人眼的这种视觉混合效应。当我们观察一个由许多纯黑和纯白像素组成的区域时,如果这些像素非常小并且排列得足够紧密,我们的大脑就会将这些黑白像素的混合视为一个统一的灰色。像素点越密,看起来就越黑;像素点越稀疏,看起来就越白。

三、4 阶灰度:从纯黑到纯白

我们通常说的灰度,可以有 256 级,甚至更多。但是通过抖动模拟出的灰度,其实是牺牲了有效分辨率换来的。

对于 12864 OLED 来说,原生的黑白分辨率是 …

阅读全文 »

一个软件工程师的 2025 电子 DIY 总结

在 2022 年和 2023 年的时候,分别写了一篇文章总结这两年玩电子 DIY 的历程(2023 年见 一个软件工程师的 2023 电子 DIY 总结),去年本来也想写一篇 2024 年电子 DIY 总结,但是拖着拖着,就没想写了。

从 2022 年重新捡起电子 DIY 的兴趣开始,到现在已经 4 年了,这中间又有了一些变化,想了想,还是再总结一下这两年玩过的电子 DIY 项目吧。

做了很多,进步不多

如果用一句话总结这两年的 DIY 过程,那就是:“做了很多,进步不多”

不管是复刻还是原创,这两年做了相当多的东西,嘉立创上 PCB 打样订单号也超过了 3 位数,但是整体感觉下来,这些项目的难度并不会比 2023 年所做的项目更高。

在 2023 了,学习了例如 USB 3.0、V3S 以及 H616 这些涉及到高速信号电路,以及需要四层甚至六层板才能满足布线需求的项目,在后面这两年,反而做得少了。

一方面因为工作导致空闲时间变少,另外一方面也是因为在对高速电路袪魅之后,不再觉得需要通过这些来挑战自己,而且因为高速电路本身面临的问题会更加多,在单一项目上可能需要花费更多精力和时间才能完成,不利于去接触更多有意思的项目 🙈。…

阅读全文 »

成了,ESP32 卫星不完全复刻指南

前段时间分享了一个国外 Maker 制造的 ESP32 卫星(见 https://mp.weixin.qq.com/s/IYBiLbzDh12QjvQngUoUtA),我也花了点时间完成了复刻,为了制作方便,也做了一些小修改,这里整理了一下需要注意的地方以及一些小技巧

铜丝有紫铜和黄铜

一开始没注意,搜索了一下直接买了个紫铜丝,做了一半才发现原来铜丝还分紫铜丝和黄铜丝,原作者使用的黄铜丝,不过既然已经做了也不管了,紫铜丝的颜色看起来也不错。

PS. 铜丝需要买 2 米。框架加内部搭桥要用掉的铜丝比想象中更多一些,加上浪费的 2 米刚好够用。

esp32-satellite-tutorial-2

esp32-satellite-tutorial-3

电铬铁,一定要好的

一开始用的电铬铁是很久之前买的一个内热式电铬铁,60W 功率,但是焊接的时候总是不上锡,每次在先给铜丝加热好久,然后锡才能到铜丝上。

后来挑了个便宜的德力西 75W T12 电铬铁,效果好多了,真的能有作者视频中那效果一碰就能上锡的效果。

加商品

先折弯再焊接

1mm 粗的铜丝还是有点硬的,建议先比划好尺寸,并且先裁剪好一个模块所有对应搭桥的铜丝,再进行焊接。

对于要连接的焊盘的部分,可以多留一点,这样在没有对齐的情况下可以重新调整,焊接时再剪掉多余的部分。

esp32-satellite-tutorial-4

太阳能其实没啥用

之前找 DeepSeek 算过,这个尺寸的太阳能电池板在室内只有 1mW 的发电功率,纯粹图一乐。因此完全没有必要添加太阳能充电模块,可以省不小焊接工作量 😃。

当然也不能直接断接太阳能电池板的正负极,我加了个 100K 电阻在正极铜丝上,然后直接连接到负极了,测试过电流只有 50uA,不会影响啥。

esp32-satellite-tutorial-5

其他模块要省也可以省

太阳能充电没有意义之后,那这个光靠一个小小的锂电池也没办法续航特别久了。如果作为一个常开的桌面摆件,还要频繁充电,不如直接插电使用。

这样的话就可以去掉不少模块了:

  • 锂电池:不需要电池了
  • 电池指示器:没必要了
  • 开关:都插电了,想断电直接断电源就行了


阅读全文 »

为了 DIY 更带劲,用 CH339 手搓一个四路电流检测、独立开关的 USB Hub,全开源~

在相当长一段时间里,玩电子 DIY 的时候我用的 USB Hub 都是之前用 CH334R 做的一个 4 位 USB 2.0 Hub(见 听人劝吃饱饭,试试CH334R来做USB 2.0 Hub),不过逐渐发现常规 USB Hub 一些不方便的地方,特别是在调试一些设备的时候,需要拔插 USB 连接,一手要按住 BOOT 按钮,一手要拔插 USB 基本上不太现实

因此就想着再做一些更符合自己需求的、更方便辅助电子 DIY 的 USB Hub。

项目介绍

为了更好地辅助电子 DIY 中的调试工作,先列举一下痛点:

  • 需要自带 UART 调试接口,这样可以省掉一个 USB 转串口工具。虽然一些 MCU 也可以通过 USB CDC 进行调试日志输出,但是在 RESET


阅读全文 »

用 ESP32-S3 跑 BASIC 解释器,这比当年比尔盖茨用的电脑配置高多了

之前我做了个 AI 生成外形的复古小电脑,并且同样使用 AI 生成了 3D 模型,塞了 ESP32-S3 开发板 + 0.96 英寸 OLED 进去,顺手做了个能播放《Bad Apple》的固件(见《3 步从 nana banana AI 生成的复古小电脑到真实桌面小玩具》)。

esp32-s3-arduinobasic-2

最近在 GitHub 上看到一个 ArduinoBASIC 项目,一个还算完整的 BASIC 语言解释器,支持 BASIC 语言中常用的特性,这不刚好用来把这个复古小电脑变成真的可以写代码的小电脑吗 😃。

PS. 当年比尔·盖茨和保罗·艾伦为 Altair 8800 写 BASIC 时,机器 CPU 是 2 MHz 的 Intel 8080,只有 4 KB



阅读全文 »

3 步从 nana banana AI 生成的复古小电脑到真实桌面小玩具

先看看有屏幕的地方就有的 Bad Apple:

PS. 音乐是后期加进去的 🙈。

源起

这一些源于之前在 MakerWorld 上看到的摸鱼小副屏,对这种可交互的小玩具特别感兴趣,我还复刻了一个,并且把内部改造了一下,换成香橙派开发板,跑了一下 Mac OS 9,虽然有点慢 😃(见:摸鱼小电脑能跑 MacOS 了,就是速度慢到怀疑人生)。

一直以来建模只会搞横平竖直简单类型的模型,对于这种带造型的模型,完全没有能力,不过最近 nana banana 很火,突然想到现在各种 AI 工具已经相当成熟了,是不是也可以借助 AI 来实现呢,说干就干。

PS. 稍微标题党了一下,这从 AI 生成到完成 3D 打印,也用到了其他平台,以及最终加装 MCU + 屏幕也花了额外的时间 🥳。

第 1 步:让 AI 生成期望的模型

这一步一开始是让 Gemini 2.5 Flash nano banana 生成的,但是感觉可能因为没有 Thinking,效果不是很好,后来换成 ChatGPT …

阅读全文 »

不到 1 元,64K Flash + 8K RAM:CH32V006 直驱彩色 TFT LCD,100 FPS 无压力

上上周发了篇文章介绍了一下用 CH32V003 做过的项目(那些年用 7 毛钱单片机 CH32V003 做过的 DIY 项目),总的感觉用起来还是很舒服的,不过最近也了解到沁恒推出了差不多加量不加价的 CH32V006,资源不止翻倍, 价格在某宝上也只要 8 毛钱一颗

稍微研究了下,发现 CH32V006F8P6 和我在用的 TSSOP20 封装的 CH32V003F4P6,可以算是能 Pin2Pin 替换,这连开发板都可以直接用之前自己画的 V003 的开发板 PCB 😃。

0.96 寸 TFT LCD 驱动实测

之前用 CH32V003 的时候,即使它有 SPI 总线,但是 16KB Flash 实在有些捉襟见肘,即使驱动像 0.96 寸 TFT LCD 这样的小尺寸屏幕,分辨率为 160x80,色深为 16 位,一张全屏背景图就要消耗 …

阅读全文 »