
ESP32音乐氛围灯
简介
设计一款可以操控WS2812B的灯珠音乐氛围灯,同时主控部分还可以与氛围灯进行独立拆分,拆分后可作为独立开音频开发板进行其它开发操作。
简介:设计一款可以操控WS2812B的灯珠音乐氛围灯,同时主控部分还可以与氛围灯进行独立拆分,拆分后可作为独立开音频开发板进行其它开发操作。开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
一、主要功能介绍
1.通过I2S麦克风拾取外部音源进行FFT变换后驱动TFT显示屏及WS2812B灯板进行音乐频谱显示,可通过按钮对频谱模式、灵敏度及亮度进行调整;
2.通过TFT及触摸屏实现在16*16像素画板上作画,并推送至WS2812B灯板进行显示;
3.对MP3进行解码后输出至I2S放大电路实现音频播放。
二、电路设计
1.主控采用ESP32-WROOM-32模块,焊接简单。另外ESP32支持几乎所有IO映射,使用起来不用太担心IO不能使用某些功能;
2.音频输入采用I2S麦克风,这里使用的是ICS43434,比之前使用过的INM441要灵敏很多倍;
3.音频输出采用支持I2S的NS4168芯片,可驱动最大4欧2.5W喇叭。选用这个主要是8脚芯片焊接简单,外部元件也少,可以方便的集成在板子上;
4.音频播放文件存储在SD卡上,采用SPI接口与主控相连接;
5.电阻触摸屏和TFT通过共用SPI接口与主控相连接;
6.一个五向摇杆按键连接IO0\34\35\36\39实现按键控制功能;
7.一个LED灯用来指示电源状态;
8.一个轻触开关用来重置系统;
9.使用CH340C设计了自动下载电路,方便进行开发;
10.电源使用TYPE-C直接进行5V供电,板载AMS1117作为3.3V供电电源;
11.考虑免费打样尺寸,设计了65mm*65mm灯板电路板,可使用四块进行拼版。
三、程序设计
程序使用arduino IDE
1.交互方式采用触屏和按键相结合的方式(触屏采样影响主进程),触屏和TFT共用VSPI;
2.SD卡模块单独使用HSPI;
3.I2S麦克风和I2S放大芯片使用独立的IO接口,即各自占用3个IO。
四、外观设计
外壳使用立创EDA设计。分为灯板外壳和主控外壳,主控外壳可直接在灯板外壳背部进行嵌入,使其成为一体。灯板的前面板使用立创的面板。下方是实物图,由于后面提到的栅格预留的偏差量和天线预留孔位反了所以下方图不是一体的。
主控外壳
灯板外壳
灯板加上面板
灯板和主控合体
五、功能展示
见下方视频
六、存在问题
1.音频输出芯片使能引脚直接接在了VBUS输入上,因此在不使用该模块时可能存在喇叭底噪及功耗问题,如果后续不使用TFT的背光控制可使用以上引脚对NS4168进行使能控制;
2.第一版设计时只看到说34、35、36、39引脚只可作为输入引脚,就想当然的拿来做了按键控制,结果发现这几个引脚都没有上拉,导致按键读数一直为低电压。通过飞线解决,并对电路图进行了升版,加入了上拉电阻;
按键飞线
3.考虑板子空间使用的TFT是焊接接口的,但是容易出现焊接不到位而导致触摸功能不正常的情况,可借助PCB板子压住FPC来进行焊接,防止虚焊发生;
4.在外壳设计上也遇见了两个问题。一个是灯板外壳的设计考虑的装配偏差余量太小,导致灯板无法扣进灯板格栅中,可通过打磨格栅孔解决;另一个是在设计灯板外壳和主控外壳是,前后面有点没分清楚,导致灯板外壳上预留的板载PCB天线的孔位反了(本来应该是左偏移,打出来的是右偏移了,差了6mm),导致主控无法完全推进灯板外壳中,已在外壳设计文件中进行修正;
天线孔位错位
5.使用的免费版字库生成的bin文件导致实际显示MP3文件名字时有缺失。
设计图

BOM


评论