基于 ESP 32 的音频播放器

网上有很多使用 ESP32 读取 SD 卡中的 MP3 文件并播放的示例,它们可能需要通过 I2S 协议或串口连接MP3 模块。其实没必要啊,ESP 32 自己就有 DAC 数模转换功能。在这个项目里,我们把它的其中一个 DAC 引脚连接到放大器上以驱动喇叭发出声音。音量不算很大但这个东西可以演示 ESP32 开发板直接播放音频文件的能力。

电路连接图

ESP32 播放音频的示例

如上图所示,电路很简单,功放模块的 Vcc 和 GND 分别连接到 ESP-32 的 VIN 和 GND 引脚,IN 引脚连接到 ESP-32 的 GPIO 25 DAC 引脚,另一端的两个引脚连接到喇叭就可以了,超级简单。

准备适用于 ESP32 播放的音频文件

如需让 ESP32 直接播放声音,我们需要特定格式的 .wav 文件。(mp3 等压缩过的音频文件需要解码,逻辑过于复杂)

有个叫作 Audacity 的音频编辑软件,开源免费又跨平台。我们可以用它来修改声音文件的格式、采样频率等信息,能很方便的生成 ESP32 所需的 wav 文件。它的官网地址是 https://www.audacityteam.org/ ,先去下载了安装好。

安装完成后,打开要用 ESP 32 播放的音频文件,如图所示。

Audacity 音频编辑软件界面

首先需要修改的是音频的采样频率。对 ESP32 来说,8000 – 16000 Hz 的频率是比较合适的,太高了它处理起来比较吃力。这儿我们将“项目采样率“设置为 16000Hz。

设置采样率为 16000Hz

然后,点击 文件->导出->导出为 WAV ,在保存窗口中,选择编码格式为 Unsigned 8-bit PCM,如图所示。

保存为 Unsigned 8-bit PCM

下一步,我们要把刚才保存的 wav文件转换为十六进制编码,推荐使用 HxD 这个16进制编辑器,也是个免费的小可爱,官网下载地址是这儿:https://mh-nexus.de/en/downloads.php?product=HxD20

下载并安装完成后,点击 文件->打开 菜单,打开刚才保存的 wav 文件。这样,窗口中就变成了这个 wav 文件的十六进制编码。使用快捷键 Ctrl+A 全选后,点击 编辑->复制为->C ,将这些十六进制编码复制为 C语言代码格式。

使用 HxD 将文件导出为 C 语言表示的数据

然后,将复制的内容粘贴到 sound.h 头文件中。

https://github.com/WeekendWarrior1/XTronical_XT_DAC_Audio_Mirror

https://www.instructables.com/ESP-32-Based-Audio-Player/

类似文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注