DIY音乐播放器的构建很有趣,我们之前使用Arduino和专用MP3模块构建了一些音乐播放器。现在,我们使用ESP32来构建一个有趣的音频播放器,在其中只需将一个额外的扬声器连接到ESP32即可获得音效。在这里,我们将使用LM386和带有ESP32的扬声器播放音乐文件。音频输出可能不会很大,但此应用程序显示了ESP32开发板播放音频文件的功能。
所需组件
- ESP32
- LM386放大器模块
- 8欧姆扬声器
- 跳线
电路原理图
ESP32音乐播放器的电路图如下-
要在ESP32上播放声音,我们需要一个扬声器。扬声器通过LM386音频放大器模块连接。放大器模块的Vcc和GND引脚连接到ESP32的VIN和GND,而放大器模块的IN引脚连接到ESP32的GPIO 25引脚。GPIO 25是2个DAC(数模转换器)引脚之一。
ESP32音乐播放器的完整设置如下所示:
LM386是音频放大器IC,您可以通过以下链接了解有关LM386的更多信息。
准备好音频文件
要在ESP32板上播放音频,我们需要 .wav 格式的音频文件,因为ESP32仅可以播放 .wav 格式的音频文件。
因此,第一步将是获取要在ESP32上播放的文件。之后,下载并安装Audacity Audio Editor App。该应用程序将用于更改文件类型,采样率和其他属性。
安装完成后,打开Audacity应用程序,然后转到 文件>打开, 然后选择要编辑的音频文件。
首先需要更改的是采样率。要在ESP32上播放音频文件,由于ESP32没有太多的内存,采样率应该在8000到16000之间。因此,将“项目费率”更改为16000。
之后,导航至“ 文件”>“导出”>“导出为WAV” 以将音频文件保存为 .wav 格式。
现在,在下一个窗口中,选择WAV(Microsoft)作为文件类型,选择Unsigned 8-bit PCM作为Encoding格式,然后单击 Save。
现在,我们需要一个十六进制编辑器应用程序来为音频文件生成十六进制代码。因此,请从给定的链接下载并安装十六进制编辑器(HxD)。之后,打开应用程序,然后转到“ 文件”>“打开” ,然后打开 .wav文件 。这将为 .wav文件 生成十六进制代码。
然后使用 ctrl + A 选择完整的代码,然后转到“ 编辑”>“另存为”>“ C” 以C语言格式复制代码。
然后将此代码粘贴到Arduino IDE中。
代码说明
页面末尾提供了非接触式ESP32音频播放器的完整代码。在这里,我们正在解释代码的一些重要部分。在此程序中,我们将使用XTronical的XT DAC音频库。可以从此处下载XT DAC音频库。
因此,像往常一样,通过包含所有必需的库来启动代码。SoundData.h文件包含的十六进制代码 .wav文件 将被播放。
#include“ SoundData.h” #include“ XT_DAC_Audio.h”
在下一行中,创建 XT_Wav_Class 类型的对象,此DAC音频类将 .wav 数据作为参数使用该对象。 DacAudio, 主要的播放器类对象,其中25是连接放大器引脚的DAC引脚号。
XT_Wav_Class声音(样本);XT_DAC_Audio_Class DacAudio(25,0);
在 setup() 函数内部,以115200的波特率初始化串行监视器,以进行调试。
void setup(){Serial.begin(115200);
在 loop() 函数内部,用数据填充声音缓冲区,并检查声音是否正在播放,如果没有,则在循环中播放声音。
void loop(){DacAudio.FillBuffer(); if(Sound.Playing == false)DacAudio.Play(&Sound); Serial.println(DemoCounter ++); }
测试ESP32音频播放器
代码准备就绪后,通过LM386或任何其他放大器模块将扬声器连接到ESP32的GPIO 25。现在将ESP32连接到笔记本电脑并上传代码。上载代码后,ESP32将开始播放音频。声音质量可以使用放大器模块的电位计进行更改。
希望您喜欢这个项目。下面给出了有效的视频和完整的代码,可以从此处下载 SoundData.h 头文件。如果您有任何疑问,请在评论部分中保留。