风筝
发表于: 2020-12-29 10:18:55 | 显示全部楼层

自制一台音乐播放器会很有趣,因此,在本篇文章中,我们将使用ESP32微控制器制作一个有趣的音频播放器,只需将一个扬声器连接到ESP32即可获得音效。本文中,我们将使用LM386、扬声器和ESP32来播放音乐文件。音频输出的音量可能不会很大,但该应用显示了ESP32开发板播放音频文件的功能。


所需的组件

●    ESP32开发板

●    LM386放大器模块

●    8欧姆扬声器

●    跳线


电路原理图

ESP32音乐播放器的电路图如下-

ESP32-Audio-Player-Circuit-Diagram.jpg

要在ESP32上播放声音,我们需要一个扬声器。扬声器通过LM386音频放大器模块连接。放大器模块的Vcc和GND引脚连接到ESP32的VIN和GND,而放大器模块的IN引脚连接到ESP32的GPIO 25引脚。 GPIO 25是2个DAC(数模转换器)引脚之一。


ESP32音乐播放器的完整连接如下所示:

ESP32-Music-Player.jpg


准备音频文件

要在ESP32开发板上播放音频,我们需要.wav格式的音频文件,因为ESP32仅可以播放.wav格式的音频文件。


因此,第一步将是获取要在ESP32上播放的文件。之后,下载并安装Audacity Audio Editor App。该应用程序将用于更改文件类型、采样率和其他属性。


安装完成后,打开Audacity应用程序,然后转到File > Open,然后选择要编辑的音频文件。首先需要更改的是采样率。要在ESP32上播放音频文件,由于ESP32的内存不足,因此采样率应为8000到16000。因此,将Project Rate更改为16000。

Audacity-App.png


之后,转至File > Export > Export as WAV,将音频文件保存为.wav格式。

Audacity-Audio--Editor-APP.png

现在,在下一个窗口中,文件类型选择WAV(Microsoft),Encoding格式选择Unsigned 8-bit PCM,然后单击Save。

Audacity-Audio-Editor.png


现在,我们需要一个十六进制编辑器应用程序来为音频文件生成十六进制代码。因此,请从给定的链接下载并安装十六进制编辑器(HxD)。之后,打开应用程序,然后转到File > open,然后打开.wav文件。这将为.wav文件生成十六进制代码。

HEX-Editor-for-Hex-Code.jpg


然后使用ctrl + A选择完整的代码,转到Edit > Copy as > C,以C语言格式复制代码。

ESP32-Audio-Player-Setup.jpg


然后将此代码粘贴到Arduino IDE中。


代码说明

在该代码中,我们将使用XTronical提供的XT DAC音频库。可以从此处下载XT DAC音频库


首先在代码中包含所有必需的库。 SoundData.h文件包含要播放的.Wav文件的十六进制代码。


在接下来的代码中,创建一个XT_Wav_Class类型的对象,此DAC音频类将.wav数据作为参数使用该对象。 DacAudio,主要的播放器类对象,其中25是连接放大器引脚的DAC引脚号。

  1. XT_Wav_Class Sound(sample);
  2. XT_DAC_Audio_Class DacAudio(25,0);
复制代码

setup()函数中,以115200的波特率初始化串口监视器,用于调试。

  1. void setup() {
  2.   Serial.begin(115200);
复制代码

loop()函数中,用数据填充声音缓冲区,然后检查声音是否正在播放,如果没有,则在循环中播放声音。

  1. void loop() {
  2.   DacAudio.FillBuffer();               
  3.   if(Sound.Playing==false)      
  4.     DacAudio.Play(&Sound);      
  5.   Serial.println(DemoCounter++);      
  6. }
复制代码

测试ESP32音频播放器

代码准备就绪后,通过LM386或其他放大器模块将​​扬声器连接到ESP32的GPIO25。现在将ESP32连接到笔记本电脑并上传代码。上载代码后,ESP32将开始播放音频。声音质量可以使用放大器模块的电位器进行更改。


希望您喜欢这个项目。如果您有任何疑问,请在本帖下面进行回复。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 56 | 回复: 109



手机版|

GMT+8, 2024-12-21 20:50 , Processed in 0.048879 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表