声控氛围灯:Arduino Nano + 麦克风模块 + WS2812B 灯珠
组件与材料
| Arduino Nano R3 | ×1 |
| 声音检测模块 (模拟输出) | ×1 |
| WS2812B 可编程灯带 (60 LED/m, 1 m) | ×1 |
| IKEA DROPPAR 玻璃罐 (最大号) | ×1 |
| PVC 管 (灯带支架) | ×1 |
| 泡沫板、热熔胶、5V 电源/降压模块 | 若干 |
所需工具
- 电烙铁、美工刀、剪刀
软件
- Arduino IDE + FastLED 库
项目灵感
参考 YouTube 频道 Natural Nerd 的同类项目,自行改进外壳与代码,实现音乐/环境声实时可视化的桌面氛围灯。

供电方案
- 方案 A:Nano USB 供电 (简易)
- 方案 B:12V 适配器 + LM2596 降压模块输出 5V 2A (推荐,驱动 60 灯珠更稳定)
信号链路
- 声音模块 OUT → Nano A0 (模拟输入)
- 灯带 DIN → Nano D6
- 共地、共 5V
外壳制作要点
- 罐盖玻璃易碎:套塑料袋敲碎、清理碎渣
- 泡沫板切圆盖替代玻璃,中心挖孔过 USB 线、麦克风模块
- PVC 管缠绕灯带呈螺旋上升,底部热熔胶固定在泡沫板
- 麦克风模块置于罐盖外侧,拾音更灵敏

核心算法 (代码精简版)
#include <FastLED.h>
#define NUM_LEDS 60
#define LED_PIN 6
#define MIC_PIN A0
#define MIC_LOW 0.0
#define MIC_HIGH 200.0
#define AVGLEN 5
#define LONG_SECTOR 20
CRGB leds[NUM_LEDS];
int avgs[AVGLEN], long_avg[LONG_SECTOR];
float fade_scale = 1.2;
struct { int r,g,b; } Color;
float fscale(float oMin, float oMax, float nMin, float nMax, float val, float curve) {
// 对数/指数映射,curve>0 拉伸高端,<0 拉伸低端
// 完整实现见原文
}
void setup() {
FastLED.addLeds<NEOPIXEL, LED_PIN>(leds, NUM_LEDS);
for (int i=0;i avg*0.8) return; // 去抖
insert(mapped, avgs, AVGLEN);
insert(avg, long_avg, LONG_SECTOR);
check_high(compute_average(long_avg, LONG_SECTOR)); // 动态判断高能段
int show = fscale(MIC_LOW, MIC_HIGH, 0, NUM_LEDS, avg, -1);
for (int i=0;i
关键点:
- 短时均值 (AVGLEN=5) 平滑信号
- 长时均值 (LONG_SECTOR=20) 判断音乐高潮,切换配色/衰减速度
fscale实现非线性映射,低音细腻、高音爆发- HOLD 功能可冻结画面
原理图
成本参考
约 RM 83 (约 ¥130),灯带占大头。适合桌面装饰、编程入门、送礼。
制造工艺
- 基于 Edge Impulse 的 TinyML 语言检测器:Arduino Nano 33 BLE Sense 实战
- Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
- Arduino 数字骰子:LCD 显示随机点数的电子骰子
- DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino UNO 与 DFPlayer Mini 播放音频完整指南
- DIY Arduino 加湿器控制器:继电器安全控制高压电路
- Arduino 声纳实时测距与 Processing 可视化
- MobBob:3D 打印智能机器人,Android 手机无缝控制,语音视觉一体
- Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
- Arduino 101 计步器:集成 DHT11 温湿度 + LCD 显示步数/距离/卡路里