1. 项目概述当PCB不再是电路板而是你的个性徽章几年前当我第一次把一块画着复杂图案的PCB别在背包上引来朋友追问“这是什么芯片”时我意识到印刷电路板PCB的玩法远不止于机箱里的绿色底板。它可以是承载创意的画布是融合电子与艺术的媒介。今天分享的这个“调查兵团徽章”项目正是这种思路的一次具体实践——用标准的PCB工艺制作一个能发光、可佩戴的动漫主题徽章。这个项目的核心目标很明确制作一个基于《进击的巨人》中“驻扎兵团”徽章图案的、自带发光效果的PCB徽章。它不仅仅是一个装饰品更是一个完整的电子系统由Attiny13A微控制器驱动通过MOSFET控制15颗并联的0603封装红色LED实现呼吸灯效果并由一枚CR2032纽扣电池供电。整个过程涉及从图像处理到PCB设计从SMD表面贴装焊接再到单片机编程的全流程。无论你是想为自己喜欢的IP制作一个独特的周边还是想深入学习从电路设计到实物制作的全套技能这个项目都能提供一条清晰的路径。接下来我将拆解每个环节的技术细节与实操心得。2. 核心设计思路为什么是PCB而不是3D打印在开始画图之前一个根本性的选择摆在面前用什么作为徽章的基底常见的思路可能是3D打印一个外壳再把电路板塞进去。但我最终选择了将PCB本身作为主体结构这背后有几个关键的工程考量。2.1 结构一体化的优势与实现首先是重量和厚度的极致优化。一个典型的3D打印外壳加上内部的PCB、电池盒其厚度往往超过5mm重量也随之增加。而将PCB作为承载所有元件的基板其厚度可以控制在1.6mm标准FR4板材厚度加上背面的电池座和开关总厚度也能控制在3-4mm左右佩戴起来更轻便、贴服。更重要的是它实现了结构的一体化。PCB上的铜层和丝印层直接构成了徽章的图案和文字无需额外的面板或贴纸图案精度由制板厂的光绘工艺保证边缘清晰锐利且永不磨损。为了实现“发光徽章”的效果我采用了“背光穿透”的设计。徽章正面的玫瑰图案是丝印层通常是白色油墨。为了让背面的LED光能透到正面需要在对应图案区域的阻焊层Soldermask开窗。阻焊层是PCB上那层绿色的或其他颜色的油漆它绝缘并保护走线。开窗就是把这层油漆去掉露出下面的FR4玻璃纤维基板。FR4本身是半透明的尤其在薄层区域光线可以穿透。因此我在PCB背面对应玫瑰图案的区域做了一个大的阻焊层开窗在正面图案区域则做了许多不规则形状的小开窗。这样背面LED的光线就能穿过FR4基板从正面的开窗处透出形成图案发光的效果。注意FR4的透光性很弱且呈黄绿色。如果希望正面发光更均匀、明亮可以考虑使用白色阻焊油墨能反射更多光或者选择透光性更好的基板材料如聚酰亚胺但成本高。本项目因图案精细且LED数量有限追求的是若隐若现的暗红色辉光与“驻扎兵团”的沉稳气质相符因此标准FR4的微弱透光性反而成了优点。2.2 电路方案的取舍简约与可控的平衡电路的核心需求是驱动15颗LED并实现动态效果如呼吸、闪烁。最粗暴的方案是将LED直接接上电池和开关但这样只能常亮。为了控制需要一个微控制器MCU。对于这种低复杂度控制Attiny13A是性价比极高的选择。它仅有8个引脚1KB的Flash内存但足以运行一个PWM脉冲宽度调制呼吸灯程序。然而Attiny13A的单个IO口驱动能力有限典型值20mA无法直接驱动15颗并联的LED总电流可能超过100mA。因此我引入了AO3400 N沟道MOSFET作为开关管。MCU的PWM信号控制MOSFET的栅极GateMOSFET的漏极Drain连接LED串的阴极源极Source接地。这样MCU只提供控制信号大电流由MOSFET承担实现了“小马拉大车”。在原理图中我特意设计了一个“直通”选项。通过一个0欧姆电阻R6的焊盘可以选择短接它从而绕过MCU和MOSFET将LED直接连接到电池。同时另一个电阻R7的焊盘用于连接MCU控制通路。这个设计提供了灵活性如果只想做一个简单的常亮徽章可以省去编程步骤简化制作如果想升级效果随时可以焊上MCU部分。这种“可扩展性”设计在DIY项目中非常实用能适应不同制作者的需求和技能水平。3. PCB设计实战从图片到可生产的Gerber文件将一张动漫徽章的图片变成可以下单生产的PCB文件这个过程是创意落地的关键一步充满了细节和技巧。3.1 图像处理与导入首先需要找到一张高对比度、清晰的黑白徽章矢量图或位图。我使用的是驻扎兵团的玫瑰图案。由于我的PCB设计软件这里以常用的KiCad为例原作者用的OrCad原理类似通常只支持位图格式如BMP作为图形导入所以需要先将图片转换为BMP。如果原图是彩色的需要在图像处理软件如Photoshop、GIMP中将其转换为纯黑白1位色深并确保线条清晰没有杂点。在KiCad中导入图片的步骤是在PCB编辑器中选择“文件” - “导入” - “图形”。将图片导入到丝印层F.Silkscreen。丝印层是印制在PCB表面的白色或其他颜色油墨层用于标注元件位号、版本号或装饰图案。导入后图片会作为一个矢量图形集合由许多线段和填充区域构成存在。你需要仔细检查确保图形的边界闭合、无断点这关系到后续阻焊开窗的准确性。3.2 阻焊层开窗的艺术这是实现背光效果的核心操作。我们需要在正反两面的阻焊层上“挖洞”。正面Top Soldermask在导入的玫瑰图案内部使用“填充区域Fill Zone”或“图形填充”工具沿着图案边缘绘制出一个个不规则形状的填充区。关键是将这些填充区的图层属性设置为“顶层阻焊F.Mask”。在PCB制造中“阻焊层”文件默认是定义“哪里需要覆盖阻焊油墨”。因此在这里绘制图形意思就是“在这些图形区域不要覆盖油墨”即开窗。正面开窗要精细遵循图案本身的纹理这样光才能从特定的形状中透出。背面Bottom Soldermask在背面对应整个玫瑰图案的大致区域绘制一个大的、覆盖所有LED安装位置的填充区域同样将其图层属性设置为“底层阻焊B.Mask”。背面开窗面积大是为了让LED发出的光有足够的区域进入FR4基板。实操心得在绘制阻焊开窗图形时务必与实际的LED焊盘位置对齐。最好在PCB设计初期就先大致放置好LED的封装确保开窗区域能完全覆盖LED的出光面。可以使用设计软件的“3D视图”功能反复检查各层的叠加效果。3.3 布局、走线与设计检查元件布局需要综合考虑电气性能、焊接难度和美观。我将Attiny13A、MOSFET、电阻等小信号器件放在背面中央区域。15颗0603 LED则以玫瑰图案为中心呈放射状或阵列排列在背面开窗区域内确保光线能均匀向上照射。CR2032电池座和滑动开关作为较大的通孔元件THT也安排在背面边缘以降低整体厚度。走线方面LED全部并联并通过一条较宽的走线比如20mil连接到MOSFET的漏极另一条宽走线连接所有LED的阳极到电源正极以减少线路阻抗和压降。MCU的编程接口VCC, GND, RESET, SCK, MISO, MOSI引出了一组焊盘方便后续用烧录夹子连接。设计完成后必须运行电气规则检查ERC和设计规则检查DRC。重点检查所有网络是否连接正确有无短路或断路。阻焊层开窗图形是否与焊盘重叠应避免否则可能导致焊接不良。丝印层文字是否清晰且未与焊盘重叠。生成Gerber文件时务必包含以下层顶层铜F.Cu、底层铜B.Cu、顶层阻焊F.Mask、底层阻焊B.Mask、顶层丝印F.Silkscreen、边框层Edge.Cuts。向PCB制板厂如文中提到的PCBWAY提交时通常需要将这些Gerber文件打包成ZIP。4. 焊接组装全流程从SMD到THT的手工技巧收到打样回来的红色阻焊PCB后真正的挑战开始了。手工焊接如此多的0603封装元件需要耐心和正确的工具方法。4.1 锡膏涂布与贴片元件焊接对于背面的小尺寸SMD元件Attiny13A、AO3400、0603电阻使用锡膏和热风枪或加热板进行回流焊接是最高效、最可靠的方法。锡膏涂布我使用的是针管装的中温含铅锡膏Sn63/Pb37。将少量锡膏挤到干净的平面上用细头镊子或牙签蘸取微量锡膏仔细地涂到每个元件的焊盘上。量宁少勿多过多的锡膏在熔化后容易导致元件移位或桥连。贴片使用防静电镊子将元件逐一精准地放到对应的焊盘上。对于SOIC-8封装的Attiny13A要特别注意方向芯片上的凹点或斜角对应丝印框的标记。贴片过程要稳避免触碰已经涂好锡膏的其他焊盘。回流焊接我使用了一个自制的恒温加热板。将PCB背面朝下轻轻放置在已预热到约150°C的加热板上。然后缓慢升温至锡膏熔点183°C左右以上约200-220°C。此时可以看到锡膏瞬间熔化变成光亮的银白色元件会在表面张力作用下自动对齐此现象称为“自对中效应”。保持峰值温度10-20秒后关闭加热让PCB在加热板上自然冷却至室温或用镊子移至散热架上冷却。关键技巧加热和冷却过程切忌震动工作台。熔融的焊锡表面张力是元件归位的唯一力量震动会导致元件漂移。自制加热板务必注意温控均匀性中心与边缘温差过大会导致局部焊接不良。4.2 0603 LED的手工焊接要点15颗0603 LED需要在回流焊之后单独进行手工焊接。这是因为LED需要以“倒装”形式焊接——即发光面朝向PCB板子让光线射向FR4基板。标准回流焊无法实现这种定向。定位与固定先用烙铁在一个焊盘上上少量锡。然后用镊子夹起LED将其侧立将一端引脚对准已上锡的焊盘用烙铁加热焊盘使锡熔化同时将LED引脚插入移开烙铁锡凝固后LED即被固定在一侧。这个过程要快避免过热。完成焊接固定一侧后再焊接LED的另一只引脚。0603封装非常小烙铁头建议使用尖头或刀头温度设置在300-320°C之间。焊接时间控制在2-3秒内点到即止。完成后用放大镜检查焊点是否饱满、光亮有无桥连。极性检查0603 LED通常有一个绿色或黑色的标记代表阴极负极。在PCB设计时焊盘也需要做极性标记如方形焊盘为阳极圆形为阴极。焊接前务必核对一旦焊反LED不会发光。4.3 通孔元件焊接与整体测试最后焊接通孔元件CR2032电池座和滑动开关。电池座焊接将电池座引脚穿过PCB孔位从背面焊接。焊接时要确保电池座与PCB板面贴合平整。焊点要饱满因为这里需要承受电池更换时的机械应力。开关焊接同样注意安装平整度。焊接后可以滴一滴热熔胶或UV胶在开关壳体与PCB的接触边缘增强固定防止频繁拨动导致焊盘脱落。通电测试在装入电池和MCU前先进行基础测试。将万用表调到二极管测试档表笔接触LED焊盘的阴阳极注意此时电路是并联的测试任意一组都应能使所有LED微亮。如果某颗LED不亮检查其是否焊反、虚焊或损坏。确认所有LED通路正常后再安装已编程的MCU。5. 软件与烧录让Attiny13A“呼吸”起来硬件组装完成但徽章还没有“灵魂”。我们需要给Attiny13A编写并烧录程序。5.1 开发环境搭建与程序解析Attiny13A并非Arduino IDE默认支持的芯片需要安装第三方开发板支持包。我使用的是MicroCore它支持Attiny13系列。安装MicroCore在Arduino IDE的“首选项”-“附加开发板管理器网址”中添加https://mcudude.github.io/MicroCore/package_MCUdude_index.json。然后在“工具”-“开发板”-“开发板管理器”中搜索并安装MicroCore。程序代码解析实现呼吸灯效果的核心是模拟PWM。Attiny13A硬件上支持PWM的引脚有限但我们可以通过软件模拟。以下是一个简单的呼吸灯程序其原理是不断改变一个周期内高电平的时间比例占空比// 定义连接MOSFET栅极的引脚使用PB0即Arduino引脚0 int ledPin 0; int brightness 0; // 当前亮度值 int fadeAmount 5; // 每次亮度变化量 void setup() { pinMode(ledPin, OUTPUT); } void loop() { // 使用analogWrite函数输出PWM。Attiny13A在MicroCore支持下可以在指定引脚模拟PWM。 analogWrite(ledPin, brightness); // 更新亮度值 brightness brightness fadeAmount; // 当亮度达到上限或下限时反转变化方向 if (brightness 0 || brightness 255) { fadeAmount -fadeAmount; } // 控制变化速度delay(30)会得到较快的呼吸效果delay(100)则较慢。 delay(100); }这段代码会让LED亮度从0到255逐渐增加到达顶点后再逐渐减小如此循环形成呼吸效果。fadeAmount和delay的值可以调整呼吸的节奏和步进细腻度。5.2 使用Arduino作为ISP编程器Attiny13A需要一个编程器来烧录固件。最经济的方式是将一块Arduino Uno/Nano变成ISP在线系统编程烧录器。配置编程器在Arduino IDE中打开示例代码File - Examples - 11.ArduinoISP - ArduinoISP。将其上传到你的Arduino Uno板上。上传后在“工具”菜单中“编程器”一项选择“Arduino as ISP”。硬件连接按照下表连接Arduino Uno与Attiny13A需先将Attiny13A焊接到徽章PCB上或通过SOIC8测试夹连接Arduino Uno引脚Attiny13A引脚功能5VVCC (Pin 8)电源GNDGND (Pin 4)地D10RESET (Pin 1)复位D11MOSI (Pin 5)主出从入D12MISO (Pin 6)主入从出D13SCK (Pin 7)时钟重要在完成ArduinoISP程序上传后需要在Arduino Uno的RESET引脚和GND之间焊接一个10μF的电解电容负极接GND。这是为了在给目标芯片Attiny编程时防止Arduino Uno自身复位。烧录引导程序与程序在“工具”菜单中选择正确的开发板Attiny13、时钟内部9.6 MHz等选项。然后点击“烧录引导程序”。成功后再点击“通过编程器上传”来上传你的呼吸灯程序。避坑指南烧录失败最常见的原因是接线错误或接触不良。务必反复核对引脚定义。对于已焊接在复杂PCB上的MCU使用SOIC8烧录夹是救星它能通过弹簧针与芯片引脚接触无需焊接飞线。此外确保给Attiny13A供电的电压稳定5V不稳定的电源可能导致烧录过程出错。6. 调试、优化与项目总结完成所有步骤后装上电池拨动开关玫瑰图案应该会缓缓亮起又暗下呼吸效果就此呈现。如果效果不理想可以从以下几个方面排查6.1 常见问题与解决方案速查表现象可能原因排查与解决方法所有LED都不亮1. 电池没电或装反。2. 电源开关损坏或未接通。3. MOSFETAO3400损坏或焊接错误如D、S极接反。4. Attiny13A未工作或程序错误。1. 用万用表测电池电压应高于2.8V。2. 用万用表通断档检查开关。3. 检查MOSFET型号及焊接确认栅极G受MCU控制。4. 用编程器重新烧录一个简单的“常亮”测试程序。部分LED不亮1. 个别LED焊反、虚焊或损坏。2. 对应支路的PCB走线断裂。1. 用万用表二极管档单独测试不亮的LED。2. 用放大镜或万用表检查LED两焊盘间的PCB走线是否连通。LED亮度不均或闪烁1. 电池电量不足带载电压下降。2. 并联的LED未串联均流电阻本项目未使用。3. PWM控制信号不稳定。1. 更换新电池。2. 对于要求高的场合建议每颗LED串联一个10-22欧姆的小电阻。3. 检查MCU供电是否稳定程序逻辑是否正确。呼吸灯效果不流畅1. 程序中的delay()时间过长或过短。2.fadeAmount值设置过大导致亮度阶梯感强。1. 调整delay()值如从100改为30加快循环。2. 减小fadeAmount值如从5改为1使亮度变化更平滑。MCU无法烧录程序1. ISP接线错误或接触不良。2. Arduino作为ISP时未在RESET与GND间加10μF电容。3. Attiny13A芯片损坏。1. 双重检查接线使用烧录夹确保接触良好。2. 补上电容。3. 更换芯片尝试。6.2 项目优化与扩展思路这个基础项目有很多可以玩出花样的扩展方向色彩升级将单色0603 LED换成RGB LED如WS2812B迷你封装。但这需要升级MCUAttiny13A资源不足以驱动复杂的NeoPixel库可以换用Attiny85或ESP8266如ESP-01S实现流光溢彩的动态效果。交互增强增加一个微型振动传感器或光敏电阻。当检测到佩戴者运动或环境光变暗时自动点亮徽章更智能节能。结构改进在PCB正面透光区域覆盖一层半透明的彩色亚克力或扩散膜可以使发光更均匀并赋予颜色。背面可以用3D打印一个超薄的保护盖既美观又能保护元件。供电优化CR2032电池容量有限。如果追求更长续航可以考虑使用更小的可充电锂电池如LIR2032配合微型充电模块做成可重复充电的版本。回顾整个项目从一张图片到一枚会呼吸的徽章最大的成就感来自于跨越了软件、硬件、设计、工艺多个环节亲手将想法变为现实。PCB制造工艺的精度和可靠性为电子艺术创作提供了坚实的基石。过程中最深的体会是“细节决定成败”阻焊开窗的准确性、锡膏量的控制、焊接温度和时间每一个微小的操作都直接影响最终效果。对于想入门硬件DIY的朋友这类项目是一个绝佳的起点它涵盖了电子制作的核心流程复杂度适中成果又足够酷炫。下次或许可以试试把喜欢的游戏Logo、乐队标志也变成这样一个独一无二的发光徽章。