新闻中心

EEPW首页 > EDA/PCB > 设计应用 > “Let It Glow”:一块会唱歌、会发光的披头士 PCB 艺术板

“Let It Glow”:一块会唱歌、会发光的披头士 PCB 艺术板

作者: 时间:2025-11-17 来源: 收藏


在传统电子项目中,PCB 往往只是承载元件的“电路底板”;但在创客圈,越来越多人开始把 PCB 当作画布,把电子电路和视觉设计结合起来,做成真正意义上的“电子艺术”。

本文介绍的就是这样一个项目——The Beetles PCB ART,作者给它起了一个更有趣的名字:Let It Glow
它既是一块披头士主题的 PCB 艺术板,又是一台能播放披头士歌曲的音乐播放器,同时还是一盏 RGB 氛围灯。

很难给它一个单一的定义,但它很好地诠释了一个理念:

把电路板变成媒介,用焊盘和阻焊层画画,用芯片和 LED 讲故事。


1. 项目概述:电路 + 音乐 + 艺术的混合体

1.1 功能概览

Let It Glow 的核心特性:

  • 披头士主题 PCB 艺术板
    顶层 PCB 上是 60 年代风格的卡通 Beatles 插画,来源于 Pinterest,经处理后变为 PCB 图形。

  • 音乐播放器
    通过 Raspberry Pi Pico 2 + DFPlayer Mini 播放预存于 SD 卡中的 Beatles 曲目。

  • RGB 氛围灯
    底板上的 WS2812B RGB LED 从背后照亮上层艺术板,形成四色区域渐变光效。

  • 一体化结构
    PCB 艺术板作为前面板,电子主板与扬声器、电池、充电电源管理全部集成在后侧结构中,可放置在桌面或挂墙。

作者自己也说不太好定义这件作品——既不是单纯的台灯,也不是传统意义的播放器,而是一个“电子艺术 + 互动音乐盒”式的混合创作。


2. 材料与硬件清单

项目核心器件如下:

  • 主控与存储

    • Raspberry Pi Pico 2(RP2040 系列微控制器板)

    • Micro SD 卡(音乐文件存储)

  • 音频部分

    • DFPlayer Mini 音频模块

    • 扬声器(与 DFPlayer 直接连接)

  • 显示与光效

    • 多个 WS2812B RGB LED(数字可编程灯珠,串联构成灯带/灯圈)

    • SMD 指示 LED(0805 封装)

  • 电源与充电管理

    • IP5306 电源管理芯片(锂电升压 + 充电管理)

    • 锂电池(原计划 18650,最终使用 14500 3.7V,容量约 600mAh)

    • USB Type-C 接口(充电与供电)

    • 去耦电容:10 μF(1206)、100 nF(0603)

  • 控制与交互

    • 下一曲

    • 音量加

    • 音量减

    • 电源/模式(硬件侧)

    • 4×4 轻触按键(4 个),用于:

  • 结构与连接件

    • 定制 PCB(主板 + 前艺术层 PCB)

    • 3D 打印外壳(Fusion 设计)

    • M2.5 螺丝、M2.5 铜柱、CON5 连接头(自制公/母头组合)


3. PCB 艺术:从画到板的“视觉电路”

3.1 PCB Art 的个人演化

作者本身是喜欢绘画的,于是开始尝试把艺术和电子结合在 PCB 上:

  • 早期项目:Flux Capacitor(回到未来中的通量电容)发光板

  • 后续项目:Pandacorn(独角兽熊猫)、Halo、进击的巨人主题板、心形 Badge、R2-D2 等

  • 技术手法:

    • 利用顶/底层阻焊层开窗控制透光区域

    • 把 LED 放在板底,通过双层开窗让光直接透过插画区域

    • 利用铜箔 + 阻焊颜色对比,做“线稿 + 阴影效果”

这些经验最终沉淀为当前 Beatles 主题板的设计方法。

3.2 Beatles 主题前板设计思路

  • 在 Pinterest 上寻找符合风格的 Beatles 卡通图

  • 将图片导出,并根据 PCB 尺寸缩放

  • 转换格式:JPG → 黑白单色 BMP,方便导入 PCB CAD

  • 在 PCB 软件中作为 Logo 导入,映射到顶层铜/阻焊:

    • 黑色区域:转为铜层/金属图形,用于“挡光”与线条表现

    • 白色区域:作为阻焊开窗,形成透光孔洞

  • 同样的开窗在底层也做一份,使 RGB LED 的光可以穿透整块板

结果就是:RGB LED 在主板上,下方发光;上层艺术板通过控制“哪里遮光、哪里透光”,把导线和阻焊变成“画面的一部分”。


4. 3D 结构与工业设计:把艺术板装进一个完整的设备里

在开始绘制 PCB 之前,作者先在 Fusion 360 中构建了整个装置的 3D 模型。这一步尤其重要,原因有两点:

  1. 结构定尺寸,反推 PCB 尺寸与布局

    • 扬声器位置决定 PCB 面积与开孔位置

    • 锂电池、Type-C 口、按钮位置共同影响主板形状

  2. 声学与机械结合考虑

    • 扬声器需要稳定支撑

    • 出音孔、腔体体积直接影响音质

3D 模型完成后,再生成外壳 STL 文件,通过 3D 打印出整套外壳,使 PCB 与外壳高度贴合,形成一个完整的“桌面设备”。


5. PCB 设计:主板 + 艺术板双板结构

整个电路系统分为两块 PCB:

  • Main Board(主板): 承载所有电子功能(Pico、DFPlayer、IP5306、RGB、按键、电源接口等)

  • Front Art Layer(前艺术板): 主要是插画和按键,做可视化 + 透光面板

5.1 主板电路结构

  1. 主控与音频通信

    • Raspberry Pi Pico 2 作为核心控制器

    • DFPlayer Mini 的 RX/TX 与 Pico 的 GPIO(如例程中 7、8)通过软串口通信

    • Pico 控制音量、曲目切换,根据 DFPlayer 状态做后续控制

  2. 按键接口

    • GPIO12:下一曲按键

    • GPIO13:音量加

    • GPIO14 / 15:音量减 / 备用(不同实现可能略有差异)

    • 使用一个 CON5 连接器将前板按键引出至 Pico 的 GPIO:

    • 按键采用 INPUT_PULLUP,默认高电平,按下接地,逻辑简单可靠

  3. RGB 灯效

    • 使用 24 颗 WS2812B 串联,构成 LED 环或灯条

    • 第一个 LED 的 DIN 接 Pico 的 GPIO0

    • 所有 LED 的 VCC 接 5V,GND 接地

    • 每颗 LED 就近放置一个去耦电容(10 μF + 100 nF 组合),保证电源稳定

  4. 电源管理

    • 从 3.7V 锂电升压至 5V

    • 充电管理与充电指示

    • 欠压/过压保护

    • IP5306 负责:

    • 14500 锂电池直接焊接到 PCB 的电池焊盘


6. PCB 制造与 DFM 检查(简要)

电路设计完成后,导出 Gerber 文件,提交 PCB 厂生产。
在实际工程中,作者使用了 HQDFM 这类 Gerber 查看与 DFM 分析工具,提前检查:

  • 阻焊开窗是否正确

  • 过孔与焊盘尺寸是否符合工艺

  • 器件间间距是否足够

这种“自检 + 厂家 DFM”的组合,可以在打样前发现一部分潜在问题,减少返工。


7. 主板装配:从焊膏到可工作的电路系统

7.1 SMD 器件贴装与回流

  1. 使用针筒将焊膏(63/37 Sn/Pb)点涂到每个 SMD 焊盘

  2. 使用镊子放置:

    • WS2812B RGB LED

    • IP5306 电源管理芯片

    • 配套的电阻、电容等

  3. 将 PCB 放至加热板或小型回流台上,加热至约 200°C 左右,使焊膏熔化并重新固化,完成所有贴片器件焊接

7.2 通孔器件焊接

  • 从 PCB 顶面插入:

    • Raspberry Pi Pico 的母排针

    • DFPlayer Mini 的母排针

    • Type-C 接口

    • 自制 CON5 连接头

    • 电感与部分大封装器件

  • 翻转 PCB,使用电烙铁逐个焊接通孔焊点,保证机械与电气连接可靠

  • 最后,将 Pico 与 DFPlayer 插入对应母座,主板装配完成


8. RGB 灯效测试代码解析

主板装好后,第一件事不是直接播放音乐,而是先验证 RGB 灯带是否工作正常。测试代码基于 Adafruit NeoPixel 库:

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

#define PIN        0
#define NUMPIXELS  25    // 实际可根据板上 LED 数调整

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

#define DELAYVAL 100

void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  pixels.begin();
}

void loop() {
  pixels.clear();
  for (int i = 0; i < NUMPIXELS; i++) {
    pixels.setPixelColor(i, pixels.Color(0, 150, 0));  // 绿色
    pixels.show();
    delay(DELAYVAL);
  }
}

测试点:

  • 数据线是否正确连接到第一个 WS2812 的 DIN

  • 5V 电源是否能稳定驱动全部 LED

  • 是否存在“半条灯不亮”之类的焊接或布线问题

看到 LED 按预期逐个点亮,就说明整个 RGB 子系统工作正常。


9. 前艺术层装配与扬声器、电池集成

9.1 艺术板按键焊接

前艺术板上包含 4 个 4×4 轻触开关:

  • 将按键插入 PCB 指定孔位

  • 翻面后逐个焊接,保证按键平整、牢固

  • 按键引脚通过 CON5 接头与主板的对应 GPIO 相连

9.2 扬声器接线

  • 扬声器正极 → DFPlayer 的 Speaker 1 引脚

  • 扬声器负极(GND)→ DFPlayer 的 Speaker 2 引脚

DFPlayer 内置功放,这种接法形成一个简易单声道音频通路,不需要额外功放。

9.3 电池接入

  • 原本计划使用 18650,但出于体积考虑改用 14500 电池

  • 两者标称电压同为 3.7V,14500 体积更小但容量约减半

  • 电池正负极直接焊接到板载电池焊盘,经 IP5306 升压与充电管理


10. 主控代码解析:音乐控制 + LED 氛围

这是项目中最核心的一段代码(简化整理后):

#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
#include <Adafruit_NeoPixel.h>

SoftwareSerial mySerial(7, 8); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

const int totalSongs = 4;
int currentSong = 1;
int currentVolume = 20;

// 按键引脚
const int nextPin    = 12;
const int volUpPin   = 13;
const int volDownPin = 14;

// LED 配置
#define LED_PIN     0
#define LED_COUNT   24
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);

  pinMode(nextPin,    INPUT_PULLUP);
  pinMode(volUpPin,   INPUT_PULLUP);
  pinMode(volDownPin, INPUT_PULLUP);

  strip.begin();
  strip.show();

  if (!myDFPlayer.begin(mySerial)) {
    Serial.println("DFPlayer Mini not found");
    while (true);
  }

  myDFPlayer.volume(currentVolume);
  delay(1000);
  myDFPlayer.play(currentSong);
  updateLEDs();
}

void loop() {
  // 歌曲播放结束自动切下一曲
  if (myDFPlayer.available()) {
    uint8_t type = myDFPlayer.readType();
    if (type == DFPlayerPlayFinished) {
      currentSong++;
      if (currentSong > totalSongs) currentSong = 1;
      myDFPlayer.play(currentSong);
    }
  }

  // 长按切歌
  static unsigned long nextPressStart = 0;
  if (digitalRead(nextPin) == LOW) {
    if (nextPressStart == 0) nextPressStart = millis();
    if (millis() - nextPressStart >= 1000) {
      currentSong++;
      if (currentSong > totalSongs) currentSong = 1;
      myDFPlayer.play(currentSong);
      nextPressStart = 0;
      while (digitalRead(nextPin) == LOW); // 等待松开
    }
  } else {
    nextPressStart = 0;
  }

  // 音量加
  if (digitalRead(volUpPin) == LOW) {
    delay(200);
    if (currentVolume < 30) currentVolume++;
    myDFPlayer.volume(currentVolume);
    while (digitalRead(volUpPin) == LOW);
  }

  // 音量减
  if (digitalRead(volDownPin) == LOW) {
    delay(200);
    if (currentVolume > 0) currentVolume--;
    myDFPlayer.volume(currentVolume);
    while (digitalRead(volDownPin) == LOW);
  }
}

void updateLEDs() {
  for (int i = 0; i < LED_COUNT; i++) {
    if (i < 6) {
      strip.setPixelColor(i, strip.Color(255, 255, 0));   // 黄色
    } else if (i < 12) {
      strip.setPixelColor(i, strip.Color(255, 0, 128));   // 品红
    } else if (i < 18) {
      strip.setPixelColor(i, strip.Color(0, 255, 255));   // 青蓝
    } else {
      strip.setPixelColor(i, strip.Color(0, 255, 0));     // 绿色
    }
  }
  strip.show();
}

10.1 库说明

  • SoftwareSerial:在指定 GPIO 上模拟串口,用于与 DFPlayer 通信

  • DFRobotDFPlayerMini:提供简单 API 来控制 DFPlayer:playvolume、读状态等

  • Adafruit_NeoPixel:驱动 WS2812B,控制每一颗 RGB LED 的颜色

10.2 交互逻辑

  • 按键功能

    • nextPin:长按约 1s → 切换下一首

    • volUpPin:短按 → 音量 +1,最大 30

    • volDownPin:短按 → 音量 -1,最小 0

    • 电源按钮则多为硬件电路实现(如 IP5306 按键或电源开关),未在此代码中作为 GPIO 读取

  • 曲目管理

    • totalSongs = 4,轮询播放 1~4 号曲目

    • 当 DFPlayer 报告 PlayFinished 时自动切下一首

  • 灯效映射

    • 区域 1:黄色

    • 区域 2:偏粉紫

    • 区域 3:青蓝

    • 区域 4:绿色

    • 24 颗 LED 被划分为 4 个区域,每 6 颗一种颜色:

    • 这四个区域在实体板上对应 Beatles 插画的不同区域,从而形成具有分区感的背光效果

灯效逻辑非常简单,但在艺术板的透光设计配合下,视觉效果却非常“合成感”。


11. 最终装配与整机形态

11.1 双板连接

  • 使用自制的 CON5 公/母头“直插桥接件” 把前艺术板与主板连接

  • 在前板四个安装孔上拧入 M2.5 PCB 铜柱

  • 将前板对准主板上的对应孔与连接器位置压合并锁紧,完成电气与机械双重连接

11.2 外壳与整体固定

  • 3D 打印外壳容纳了扬声器与锂电池

  • 主板 + 前板组合安装在外壳上,通过 M2.5 螺丝锁紧

  • 外形效果类似一块“有插画的发光音乐盒”,可以平放在桌面,也可通过背面的挂孔挂墙


12. 效果与意义:电路板不止是电路板

完成后的 Let It Glow:

  • 播放的是 Beatles 歌曲

  • 呈现的是 Beatles 主题的卡通插画

  • 背后是完整的电源管理、灯效控制、音频播放、电路设计与机械结构整合

它不是单纯的音箱,也不是简单的灯牌,而是一件融合了:

  • 视觉设计

  • 音乐内容

  • 电子工程

  • 结构设计

的综合作品。

从工程视角看,这个项目很好地体现了几个要点:

  1. PCB 不再只是“功能承载”,而是设计的一部分
    铜、阻焊、丝印都被纳入“视觉系统”。

  2. 多学科融合
    工业设计(3D 外壳)、电子硬件(电源、音频、电路)、嵌入式软件(Pico 控制)、视觉艺术(插画与透光)在一个小项目中全部出现。

  3. 可扩展性强
    未来可以很容易加入:

    • 音乐与灯效同步(节奏闪烁)

    • 触摸按键或手势控制

    • USB 或 BLE 升级为“可编程氛围音箱”


关键词:

评论


相关推荐

技术专区

关闭