ESP32播放MP3音乐-无需SD卡-WM8978-ESP32解码MP3
ESP32播放MP3音乐(无需SD卡和外置RAM)
无需SD卡,FLASH大小4MB,非常适合用于智能家居的语音提示或者在线播放音乐。
一般来说,一个语音提示文件的MP3格式的大小约5KB,而未压缩的wav格式的大小则为60KB左右。如果拿2MB的FLASH空间来存储MP3格式的语音提示文件,则其数量要远大于WAV格式。
wav格式或pcm格式是未压缩格式,ESP32可以直接播放的,无需解码
所需硬件:ESP32开发板(带32Mbit FLASH)、WM8978模块。
ESP32也可以使用内置的DAC来播放音乐,但据他人所言会影响其他资源的使用,故此处使用WM8978,同时也省去了一片功放芯片。
模块是某宝上买的,附送有资料,但除了I2C之外,其他的并不适用于ESP32。
1. 烧录我上传的固件文件(见文末)
完成烧录
2. 硬件连接
(WM8978) LRCK >>> (ESP32)GPIO 25
(WM8978) SCLK >>> (ESP32)GPIO 26
(WM8978) SDIN >>> (ESP32)GPIO 22
(WM8978) MCLK >>> (ESP32)GPIO 0
(WM8978) SCL >>> (ESP32)GPIO 15
(WM8978) MCLK >>> (ESP32)GPIO 14
模块3.3V供电,插入耳机。
3. 复位ESP32
复位后会循环播放固件里的MP3音乐,立体音。
打开串口可以查看播放进度
划重点-代码实现流程:
1. 使用I2C协议来配置WM8978模块
2. 初始化ESP32的I2S通信接口
3. 建立数据缓冲,大于4096字节
4. 从FLASH读取一个扇区(4096字节)
5. 转为解码所需的stream比特流形式(本例子用的是开源的mad MP3解码库)
6. 开始MP3解码
7. 解码4096字节完成后,把PCM数据通过I2S送入WM8978模块
8. 重复第四步,直至结束
坑:注意MP3数据不要一帧一帧(一帧大小有几百字节)地解码-播放,这会导致奇怪的声音出现(解码出错)。
测试固件下载链接:https://download.csdn.net/download/DTXK1024/11972783
固件的下载积分我调整不了,如果你是需要某宝花钱买才可以下载CSDN的资源,那么可以私聊我或者评论里留下你的邮箱,我有时间会把资源发到你邮箱。
代码我整理后再放出
END
ESP32播放MP3音乐-无需SD卡-WM8978-ESP32解码MP3相关推荐
- ESP32基于Arduino框架,SD卡+MAX98357模块+MP3播放器
ESP32基于Arduino框架,SD卡+MAX98357模块+MP3播放器
- android 音乐播放器 获取sd卡所有音乐文件,Android Studio音乐播放器无法读取SD卡,只有内部存储器...
我很抱歉,如果这原来是一个愚蠢的问题,它可能会成为一个快速修复,但我只是无法弄清楚.我在android studio中创建了音乐播放器,并且没有任何sdcard上的歌曲不会显示在列表视图中,只有内部内 ...
- 华为鸿蒙OS摄像头,首款华为鸿蒙OS摄像头开售:分布式看家新神器 无需SD卡
1月5日0点,华为智选海雀智能摄像头Pro将正式开售,这是首款搭载HarmonyOS的智能摄像头. 这款摄像头具备HarmonyOS.安全内置存储.AI智慧侦测+.2K超高清画质四大卖点. 其原价29 ...
- 鸿蒙os拍摄功能,首款华为鸿蒙OS摄像头开售:分布式看家新神器 无需SD卡
1月5日0点,华为智选海雀智能摄像头Pro将正式开售,这是首款搭载HarmonyOS的智能摄像头.这款摄像头具备HarmonyOS.安全内置存储.AI智慧侦测+.2K超高清画质四大卖点. 其原价299 ...
- 使用Arduino开发ESP32(13):SD卡的使用
文章目录 目的 SDMMC方式 常用方法 使用示例 SPI方式 常用方法 使用示例 注意事项 总结 目的 对于嵌入式设备来说SD卡也是个比较好用的功能,比如用来存放设备的配置文件.日志文件.执行脚本. ...
- android把音乐存到sd卡上,如何将音乐文件从原始文件夹保存到SD卡中android
嗨,我需要将音乐文件保存到SD卡我试过使用下面的代码只有文件夹在SD卡中创建的文件夹没有音乐文件保存任何一个建议我在哪里我做了错误...如何将音乐文件从原始文件夹保存到SD卡中android Fill ...
- android把音乐存到sd卡上,将离线音乐移动到Spotify for Android到SD卡 | MOS86
如果您是受欢迎的Spotify音乐流媒体服务的高级用户,您可以知道其优点之一是可以下载播放列表,并在手机上离线播放.不好的是,它可以吃掉你的手机 如果由于某种原因,Spotify将缓存(离线音乐)保存 ...
- 【原创】ESP32+NTC热敏电阻测温SD卡采集OLED显示,Begabung_TC250
摘要 利用ESP32设计一款八通道热敏电阻采集方案,并使用SD卡采集及OLED显示,通过Arduino_IDE编写.本产品在淘宝店Begabung发售,型号:TC250. 内容 零件准 ...
- 音频剪辑合成 php,mp3音乐剪辑合成用哪个软件 比mp3剪切合并大师好用的mp3剪切合并器方案...
说到铃声制作,相信很多童鞋的第一疑问那就是怎么剪辑mp3音乐,上网搜索mp3剪辑软件玲琅满目,很多门外汉就比较纳闷mp3音乐剪辑合成用哪个软件好,~ o(* ̄▽ ̄*)o 小编算不算内行人,但经常用到一 ...
- 基于FPGA的SD卡音乐播放器之完结篇
基于FPGA的SD卡音乐播放器之完结篇 目录 前言 一.WAV格式 二.FIFO模块 三.音频-SD卡交互模块 四.锁相环模块 五.按键去抖模块 六.按键控制模块 总结 前言 前面已经介绍了WM873 ...
最新文章
- could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR 错误的解决办法
- Facebook Messenger正式登陆Android Auto车载信息娱乐平台
- photo常用快捷键
- 笔记-计算机网络基础-网络存储技术
- python 速度 memmap_浅析Python 读取图像文件的性能对比
- php os darwin,解决Mac os(10.12.6) 编译php7提示“/usr/lib/system/libsystem_darwin.dylib”找不到...
- xen虚拟机管理xm的用法
- Oracle 10g Audit(审计) --- 记录登录用户在Oracle中的所有操作(转)
- 字符串匹配之KMP算法详解
- CSS系统学习之CSS简介
- 解决虚拟机下Linux无法联网以及无法查看ip问题
- 计算机组成原理课件ppt6,唐朔飞 计算机组成原理课件6.ppt
- 微软认知语音服务 语音识别
- 二叉树遍历的转换C++实现
- input换行输入_小白也能学的Python基础语法-变量与输入和输出
- 最详细的java思维导图
- (简单有效)vivo手机怎么不root激活Xposed框架
- a36.ansible 生产实战案例 -- 基于kubeadm安装kubernetes v1.23 -- 集群部署(一)
- GYM 101350 I. Mirrored String II
- 送你给你最爱的人,表白神器!!!
热门文章
- matlab代码运行教程(如何运行下载的代码)
- Python全栈工程师特训班第四期-直播回放-CSDN就业班-专题视频课程
- python全栈工程师薪资待遇_java,python和全栈工程师学那个在未来更有前途?
- ImageIO 先read再write 文件变小了
- spyder4升级到spyder5出现缺少依赖库spyder_kernels问题解决
- spyder的变量窗口显示不全
- 马尔可夫------马尔可夫不等式
- 无线路由器打印机服务器设置,路由器 打印机服务器设置方法
- iOS开发iPhone竖屏icon尺寸与启动页尺寸汇总
- 【kafka】kafka windows Invalid UTF-8 middle byte 0xfe