AI 干了一半活,做个 LCD 模拟辉光管时钟

这是一个为了一碗醋包了一盆饺子的故事。

之前为了测试 AI 写单片机代码能不能行,用 Manus 测试了一下,过程可以看这篇 《AI 编程在嵌入式开发中能用吗?体验 Manus 编写 ESP32 固件》,简单来说:能用。

这不为了让 AI 写出来的固件有用武之地,得把整个硬件开发完~

不过好在整个项目比较简单,而且单片机 ESP32-S3 直接用了现成的模块,PCB 几乎没有什么复杂的线路,就 LCD 的 PCB 有几个小一点的元件,主板 PCB 全都用了 2.54mm 的插件。

AI 生成数字图片

之前只介绍了固件是用 Manus 生成了,但是实际上,每个屏幕展示的模拟辉光管效果的数字图片,也是让 AI 生成的。

不过这次是让 ChatGPT 生成的,现在这些 AI 工具,简单是没有设计能力的工程师的福音,想要啥效果,吩咐 AI 就行了 😃。

提示词:

请生成辉光管效果的10个数字,包含数字 0 1 2 3 4 5 6 7 8 9,不需要外部玻璃罩效果

lcd-nixie-tube-clock-1

然后再按 80x160 像素的分辨率切分一下就完事。

AI 生成固件代码

这个可以参考之前分享的文章《AI 编程在嵌入式开发中能用吗?体验 Manus 编写 ESP32 固件》,用了两次提示词,最终生成了一个可编译的固件。

lcd-nixie-tube-clock-2

但是实际上还是需要修改一下生成的代码,但是相比从头开始写,还是省力不少。

PCB 设计

为了简单,这次主控 ESP32-S3 直接用淘宝上购买的模块了,然后 LCD 屏幕也使用 2.54mm 金手指连接器直接插进去,这样的话,整块主板就全是 2.54mm 的插件了,焊接相当简单。

LCD 驱动板

LCD 是 0.96 寸液晶屏,驱动芯片是 ST7735,分辨率 160x80,理论 PPI 也有 180 多,准视网膜屏幕了。

LCD 屏幕驱动板没有啥特别的,主要就是背光需要添加一个三极管驱动电路,从立创开源平台找了个项目参考了一下。

最后实际焊接的时候发现限流电阻用 100R 太大了,就直接用 0R 代替了,然后在固件中通过 PWM 通过亮度。

lcd-nixie-tube-clock-3

lcd-nixie-tube-clock-4

主控板

主板没什么好说的, 6 个 2.54mm 金手指连接器,间隔 30mm 排列,另外再加 2 个 22P 的 2.54mm 排针插座。

所有屏幕使用了同一个 SPI 总线,共用了 CLK、MOSI、DC,另外背光保持一致,BLK 也共用了一个 GPIO。理论上 RST 也可以共用?保险起见 RST 和 CS 都每个屏幕单独使用一个 GPIO 了。

ESP32-S3 用模块的好处就是,5V 转 3.3V 供电都省了,直接从 ESP32-S3 模块上取电 😃。

lcd-nixie-tube-clock-5

lcd-nixie-tube-clock-6

PCB 焊接

搞这个模拟辉光管时钟,第一次碰到了打样 5 片 PCB 不够用的情况 😃,虽然一般这么小尺寸的 PCB 会多给几片,不过这次刚好就 5 片,只能再打一次样才能凑齐。

lcd-nixie-tube-clock-7

lcd-nixie-tube-clock-8

5 片 PCB 也可以装上看看效果,感觉也不错。

lcd-nixie-tube-clock-9

外壳模型

本来外壳模型也让 AI 生成了一个,但是效果太复杂,没能力转成可打印的模型,想想还是算了,简单搞一个长方体就好了。

lcd-nixie-tube-clock-10

本来顶面是准备齐平的,但是因为 ESP32-S3 模块 + 2.54mm 排针插座高度太大了,会让主体外壳非常高,整体比例看上去就相当不协调。

在网上找了一些参考,就把顶盖的玻璃罩座加高了一点,这样可以让屏幕和主体的高度比例更协调一些。

不过如果不用排针插座,直接把 ESP32-S3 模块焊接在 PCB 上的话,主体外壳的高度还是可以进一步压缩的。

成品效果

在等第二批 PCB 到了之后就可以把整个模拟辉光时钟组装起来啦~看着效果还可以。

lcd-nixie-tube-clock-11

这次这个 DIY 相当简单,外壳是简单的长方体,PCB 主要都是插件焊接,代码和设计全靠 AI 搞定,相当不费脑子 🙈。

参考资料

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 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>