esp32录音功能开发_自制基于ESP32的音频播放器
自制一台音乐播放器会很有趣,因此,在本篇文章中,我们将使用ESP32微控制器制作一个有趣的音频播放器,只需将一个扬声器连接到ESP32即可获得音效。本文中,我们将使用LM386、扬声器和ESP32来播放音乐文件。音频输出的音量可能不会很大,但该应用显示了ESP32开发板播放音频文件的功能。
所需的组件
● ESP32开发板
● LM386放大器模块
● 8欧姆扬声器
● 跳线
电路原理图
ESP32音乐播放器的电路图如下-
ESP32-Audio-Player-Circuit-Diagram.jpg (83.87 KB, 下载次数: 1)
2020-12-29 10:00 上传
要在ESP32上播放声音,我们需要一个扬声器。扬声器通过LM386音频放大器模块连接。放大器模块的Vcc和GND引脚连接到ESP32的VIN和GND,而放大器模块的IN引脚连接到ESP32的GPIO 25引脚。 GPIO 25是2个DAC(数模转换器)引脚之一。
ESP32音乐播放器的完整连接如下所示:
ESP32-Music-Player.jpg (73.17 KB, 下载次数: 1)
2020-12-29 10:00 上传
准备音频文件
要在ESP32开发板上播放音频,我们需要.wav格式的音频文件,因为ESP32仅可以播放.wav格式的音频文件。
因此,第一步将是获取要在ESP32上播放的文件。之后,下载并安装Audacity Audio Editor App。该应用程序将用于更改文件类型、采样率和其他属性。
安装完成后,打开Audacity应用程序,然后转到File > Open,然后选择要编辑的音频文件。首先需要更改的是采样率。要在ESP32上播放音频文件,由于ESP32的内存不足,因此采样率应为8000到16000。因此,将Project Rate更改为16000。
Audacity-App.png (44.88 KB, 下载次数: 1)
2020-12-29 10:02 上传
之后,转至File > Export > Export as WAV,将音频文件保存为.wav格式。
Audacity-Audio--Editor-APP.png (31.45 KB, 下载次数: 1)
2020-12-29 10:03 上传
现在,在下一个窗口中,文件类型选择WAV(Microsoft),Encoding格式选择Unsigned 8-bit PCM,然后单击Save。
Audacity-Audio-Editor.png (28.43 KB, 下载次数: 1)
2020-12-29 10:04 上传
现在,我们需要一个十六进制编辑器应用程序来为音频文件生成十六进制代码。因此,请从给定的链接下载并安装十六进制编辑器(HxD)。之后,打开应用程序,然后转到File > open,然后打开.wav文件。这将为.wav文件生成十六进制代码。
HEX-Editor-for-Hex-Code.jpg (57.61 KB, 下载次数: 1)
2020-12-29 10:05 上传
然后使用ctrl + A选择完整的代码,转到Edit > Copy as > C,以C语言格式复制代码。
ESP32-Audio-Player-Setup.jpg (54.13 KB, 下载次数: 1)
2020-12-29 10:03 上传
然后将此代码粘贴到Arduino IDE中。
代码说明
在该代码中,我们将使用XTronical提供的XT DAC音频库。可以从此处下载XT DAC音频库。
首先在代码中包含所有必需的库。 SoundData.h文件包含要播放的.Wav文件的十六进制代码。
在接下来的代码中,创建一个XT_Wav_Class类型的对象,此DAC音频类将.wav数据作为参数使用该对象。 DacAudio,主要的播放器类对象,其中25是连接放大器引脚的DAC引脚号。
XT_Wav_Class Sound(sample);
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的GPIO25。现在将ESP32连接到笔记本电脑并上传代码。上载代码后,ESP32将开始播放音频。声音质量可以使用放大器模块的电位器进行更改。
希望您喜欢这个项目。如果您有任何疑问,请在本帖下面进行回复。
esp32录音功能开发_自制基于ESP32的音频播放器相关推荐
- linux 音频播放器源码,基于Linux的音频播放器的设计 源代码.doc
嵌入式操作系统 课程设计 源代码 设计题目: 基于Linux的音频播放器的设计 院 系: ********* 班 级: ******** 组 别: 第1组 学 号: ****** 姓 名: 起止日期: ...
- 基于python的音频播放器_基于python实现音乐播放器代码实例
基于python实现音乐播放器代码实例,一首,函数,按钮,布局,音乐 基于python实现音乐播放器代码实例 易采站长站,站长之家为您整理了基于python实现音乐播放器代码实例的相关内容. 核心播放 ...
- esp32录音功能开发_【安信可ESP32语音开发板专题①】ESP32-A1S音频开发板之离线语音识别控制LED灯...
本博客学习由 一.前言 离线语音,顾名思义:在不连网络的状态下,产品能识别语音指令并执行相应的控制输出. 安信可基于乐鑫ESP32芯片开发的ESP32-A1S开发板智能语音助手,可支持唤醒词引擎(Wa ...
- esp32录音功能开发_使用ESP32音频采样
本文概述 ESP32是下一代的, 具有WiFi和蓝牙功能的微控制器.它是总部位于上海的Espressif的继任者, ESP8266微控制器是非常受欢迎的产品, 并且对于爱好者来说是革命性的产品. ES ...
- 最简单的基于FFMPEG+SDL的音频播放器
===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...
- 最简单的基于FFMPEG+SDL的音频播放器 ver2 (采用SDL2.0)
===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...
- 最简单的基于FFMPEG SDL的音频播放器
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! ==== ...
- 最简单的基于FFMPEG+SDL的音频播放器:拆分-解码器和播放器
===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...
- 最简单的基于FFMPEG+SDL的音频播放器 拆分-解码器和播放器
===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...
最新文章
- 关于“INS-40922 Invalid Scan Name – Unresolvable to IP address”
- Matlab绘图函数一览
- python五十七:str与repr,类似于 java对象中的tostring()方法
- Spring事务传播
- php create()方法,ThinkPHP中create()方法自动验证实例
- 真正的大学老师,是那些无需打卡和考评,也会不可遏止地要去读书写作和上课的人...
- java 返回js,Javascript返回上一页
- 基于JAVA+SpringBoot+Mybatis+MYSQL的汽车租赁系统
- 什么是软件测试,软件测试需要注意些什么?
- BZOJ - 2115 独立回路 线性基
- c语言程序有哪几类词汇,c语言是什么 必背词汇有哪些
- 基于Android的阳台浇花控制系统设计
- 【初等概率论】 01
- linux磁盘加密bitlocker,Azure Disk Encryption(Azure磁盘加密)能用在Linux和Windows下
- boost电路输出电流公式_boost计算公式
- @自我怀疑的开发者:你够优秀吗?
- Excel日期变数字问题
- 激情巴布部落畅快一日游
- idea的几个好用快捷键、常用配置(包括git)、jdk和javaSE和javaEE、创建一个SE工程、debug、创建一个Web工程、打war包
- 计算机提示存储空间不足怎么办,电脑提示存储空间不足,无法处理此命令是什么原因?怎么解决?...