我设计了一个定制PCB,省去按三次按钮的麻烦

Lobsters Hottest 工具

摘要

一位开发者使用ATtiny85设计了一个定制PCB,自动化夜灯按钮的按压,解决了夜灯总是以最大亮度启动的问题。

<p><a href="https://lobste.rs/s/49nob7/i_designed_custom_pcb_avoid_pressing">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/07/28 14:26

# 我设计了一个定制PCB,就是为了不按三次按钮 来源:https://blog.tymscar.com/posts/opensourcedimmer/ 我很难解释为什么,但从小我就讨厌在全黑的环境中睡觉。也许跟我出生的地方有关——即使在夜晚,我也能看到路灯的光芒。也许只是因为我胆子小。 但作为一个技术宅,我喜欢把这类事情自动化。我用 Home Assistant 控制家中几乎所有智能设备,其中一项自动化就是通过一个 Zigbee 墙壁插座来打开一盏普通的夜灯。大致流程是:当我的手机进入睡眠专注模式时,它会通知 Home Assistant,然后 Home Assistant 触发家里的一些自动化操作,其中一项就是打开这盏夜灯。 听起来很完美,对吧?其实不然。 ## 那盏总是太亮的灯 (https://blog.tymscar.com/posts/opensourcedimmer/#the-light-that-always-starts-too-bright) 我从网上买了一盏便宜的夜灯,上面有一个按钮和一个开关。开关用来控制它是否在夜间自动开启(不,谢谢,我要自己控制,所以开关一直处于关闭状态),而按钮则用来在不同亮度等级之间切换。 问题来了:首先,它不会从亮度1开始,而是直接从3起步。按一下到4,再按一下到5,再按一下才到1。所以每晚睡觉前,我都得按那个按钮三次,否则灯光太亮。 ## 拆开看看 (https://blog.tymscar.com/posts/opensourcedimmer/#opening-it-up) 我打开夜灯想看看内部,或许能获取一些芯片信息,或找到可调电位器。但并没有。 夜灯打开后,露出LED板和驱动板 芯片上没有可见的标识。 无标识调光IC的特写 网上有人提到,这类灯基本都使用相同的IC,有一个技巧:按住开关按钮大约10秒,就能在EEPROM中设置新的默认值(而不是3)。但我的灯不行。我试过所有方法。 于是我放弃了,直接买了一个智能夜灯,可以通过 Home Assistant 调节,从此我的夜晚完美了。感谢阅读。下次见,当我买下解决下一个问题的方案时! ## 用芯片来按按钮 (https://blog.tymscar.com/posts/opensourcedimmer/#pressing-the-button-with-a-chip) 不,我做了任何正常人都会做的事——深入探究电路的工作原理。实际上并没有多复杂,我意识到最好的解决方案是使用一个微控制器,让它替我按下按钮。 我考虑过几种方案,手头就有 Wemos D1 Mini(ESP8266版)和树莓派 Zero,但它们都有问题。这盏夜灯没有变压器,而是用电容降压,这种电源只能提供几毫安电流。ESP8266 启动并开启射频时就需要几百毫安,而树莓派 Zero 是一个完整的 Linux 计算机,需要启动操作系统才能做事。两者都需要单独的电源,或一个大容量储能电容和额外电路来应对启动峰值。这两种都不是“焊三根线就能搞定”的方案。 所以我决定使用 ATtiny85。原因很简单:这是非常知名的芯片,属于经典 Arduino 所用的 AVR 系列,你可以像写 Arduino 代码一样在 Arduino IDE 中编写程序。而且它几乎不耗电。功耗低到很难类比,但让我试试:在 1 MHz 运行时,它消耗不到 1 毫安;一旦进入睡眠模式,电流降到微安级别,差不多就是石英表走时所需的电流。这盏夜灯的 LED 耗电量是它的几千倍。 现在的问题是,我不能只把芯片接到电源、地和按钮上就完事。我还需要: - 一个 **HT7333 稳压器**,因为灯内部的电源轨是 8.3V,而 ATtiny 需要 3.3V。 - 一个 **2N3904 晶体管**,用于实际按下按钮。它把按钮的信号脚短路到地,就像我的手指做的那样。 - 一个 **1 kΩ 电阻** 连接在芯片和晶体管之间,确保芯片只向晶体管驱动很小的电流。 - 一个 **10 kΩ 电阻** 在上电时保持晶体管截止,否则会在启动时产生随机按动,导致灯光跳到不确定的亮度。 - 三个小型 **电容**,用于平滑输入稳压器和芯片的电源。 - 一个 **3 针排针**,用于连接离开电路板的三根线:电源、地、以及连到按钮的线。 最后你看到有很多元件,于是我有了一个绝妙的主意:花更多时间和金钱,为它制作一块 PCB?为什么?因为这对任何需要类似功能的人来说都会很有用——只需让某个东西替自己按 X 次按钮。我自己就多次需要这种功能,比如那个愚蠢的空调…… 另一个原因是,我从未做过自己的 PCB,想学习制作过程。第三个原因,纯粹因为很酷。如果你不觉得,那你来错地方了。 ## 在 EasyEDA 中设计 (https://blog.tymscar.com/posts/opensourcedimmer/#designing-it-in-easyeda) 正如我所说,我从未使用过这类工具制作 PCB,但经过一番LLM提示后,我决定尝试 EasyEDA。说实话,过程比我想象的简单得多。你基本上需要画一个电路图,说明需要的所有芯片和元件,然后工具允许你显示连接关系——比如在图片中,我把连接标为“GND”或“3V3”等。所有相同名称的节点最终会被布线器连接起来。很整洁! EasyEDA 中的原理图 然后我需要告诉工具这些元件的实际型号,也就是真实的零件。这有助于 PCB 布局以及后续的物料清单。 进入 PCB 设计阶段后,你可以完全控制元件的位置,甚至可以在板上打印图案(我打印了开源硬件标志和我的用户名)。你还可以控制走线路径、元件位置、PCB 外形等等。 EasyEDA 中的 PCB 布局 你的浏览器不支持视频标签。 我的设计显然很简单,只是浅尝辄止。它是单层板,没有复杂的走线,不必担心线长或补偿弯曲等问题,但你可以做所有这些事,这非常酷! ## 制作出来 (https://blog.tymscar.com/posts/opensourcedimmer/#getting-it-made) 下一步是找一家制作 PCB 的公司!我选的是 JLCPCB。他们没有赞助我,只是我最终使用的厂商,而且体验非常棒——你可以选择板上真实元件的型号,以及是否让他们帮你焊接,或者你自己动手。 我只需要一块板,但最低订购量是五块,所以我选择了自己焊接大部分元件。但对于电容和电阻,我让他们来焊,因为它们极小,而且他们收费微不足道。 然后我下了订单,四天后就收到了板子。说实话,太棒了,难以用语言形容,但我觉得自己上瘾了。我需要做更多真实的东西! 五块板子到货时,小元件已经焊好 ## 编程 ATtiny (https://blog.tymscar.com/posts/opensourcedimmer/#programming-the-attiny) 我迫不及待地焊接了其余元件和导线,然后在面包板上用 ATtiny 测试了我简单的代码,成功了。 我实际上用了树莓派 3 来编程。空白的 ATtiny 没有 bootloader,所以不能像 Arduino 那样直接插 USB,需要专用的编程器。树莓派的 GPIO 引脚配合 avrdude 正好可以完成这项工作:从树莓派排针连接六根杜邦线到芯片,然后执行一条命令。 树莓派 3 与 ATtiny 连接用作编程器 第一次测试时,我没有直接把板子连到夜灯上,而是在输出引脚上接了一个 LED,观察它按顺序闪烁三次,然后永远停止(视频中实际上闪了四次,因为我后来才意识到只需要三次,哎呀)。 你的浏览器不支持视频标签。 ## 焊接到夜灯中 (https://blog.tymscar.com/posts/opensourcedimmer/#soldering-it-into-the-light) 成品板子,所有元件都已焊好 然后我连接好线路,焊接到夜灯上。非常困难,所有元件都很小,我对自己的焊接手艺并不特别自豪,但最终成功了! 一个奇怪的地方:板上的大电容实际上是反的,不知道为什么。幸好我用万用表检查了。 需要特别说明的是:因为这盏灯没有变压器,一旦我的板子接入,整个电路就与市电相连。这意味着要在接入之前刷写芯片,之后绝不能再插入 USB 线或连接树莓派。 焊接到夜灯中的板子 ## 结果 (https://blog.tymscar.com/posts/opensourcedimmer/#the-result) 请看它的全貌。 你的浏览器不支持视频标签。 “那阴影是什么?里面能看到电线吗?噫,这个项目好烂!” 首先,谁伤害了你?其次,我同意,但我不想冒险弄断焊点,因为我会哭。第三,我其实不在乎,我躺在床上它亮了就行。那些东西在扩散面板后面,不会在房间墙上投出影子,我很满意。 现在,当手表告诉我的手机我准备睡觉时,手机告诉 Home Assistant,Home Assistant 让开关打开,开关打开夜灯,夜灯启动我的小装置——它会延迟一小段时间(防止出 Bug)后按下按钮三次。这让我脸上露出大大的笑容。 ## 拿去自己做一个 (https://blog.tymscar.com/posts/opensourcedimmer/#take-it-and-make-your-own) 所有文件都在 GitHub 上:tymscar/button-presser (https://github.com/tymscar/button-presser),MIT 许可证,随你怎么用。里面包含 Gerber 文件(如果你想做一模一样的板子)、物料清单、原理图,以及芯片上运行的那几行 C 代码。 README 中还有两个必须先用万用表检查的步骤,因为这个方案只适用于内部电源轨为 4V 到 12V、且按钮按下时短接到地的设备。这涵盖了很多廉价小玩意,但不是全部。如果你的设备像我的一样直接由市电供电,开始之前请先阅读安全说明。 所以,去吧,为自己做一块傻傻的 PCB 吧。这个过程非常有趣且充满成就感。下次见!

相似文章

由Fable 5呈现的PCB

Lobsters Hottest

作者描述使用AI工具Fable 5自主设计一款基于RPI 2350的开发板PCB,遇到并解决了诸如DRC错误和元件选择等问题,该工具提供了协助。

采用MCU的NFC能量收集PCB名片

Hacker News Top

本文介绍了一款DIY名片设计,采用PCB板和NFC能量收集技术,无需电池即可驱动LED动画,涉及MCU实现和Charlieplexing等技术。