ESP8266 播放 mp3
其实早就想做一个mp3播放器,但是一直没有时间,借着这次高考周放假,可以开始自己的开发。
准备工作
- 购置需要用到的模块
ESP8266 Nodemcu 作为开发板
OLED 0.96寸 128x64 作为显示屏
面包板*2,杜邦线若干
MicroSD模块
摇杆模块
音频放大模块 - 选择nodemcu是因为操作简便,适合新手
- 两块面包板是因为普通的面包板接上一块nodemcu就没空间了,没办法插杜邦线了
- 用microSD模块是因为DFPlayer虽然更适合播放mp3,而且音质什么的没得比,但是我查阅资料却没找到他能操作文件的库(而且它不小心被我搞坏了),要想实现我的一些操作能想到的只有这个模块
- 加上音频放大模块(LM386)的原因是适用于esp8266的mp3库(ESP8266Audio)音量不可调,而且噪音很大,所以买这个模块(最好用电阻器可以调音量)来弥补这些缺陷。
库的选择
- OLED 库我在b站上看到多使用AdfruitSSD1306的库,但是这个库无论怎么测试我都没办法在esp8266上点亮OLED,所以放弃,换成了一个在别的网站上看到的库(随后附上),就可以用了
注意:OLED后面写的不一定是I2c地址
我的OLED后面写的是0x78,但是测试发现只有0x3c可用 - microSD模块
至于怎样读写SD卡,内置库中有SD.h,然后网上有人推荐使用TMRpcm,但是编译的时候被告知这个库适用于avr,esp不能用,所以就另辟蹊径,找到了ESP8266Audio库,这个库很全,除了SD卡播放,还支持SPIFS(闪存播放),甚至还要网络流播放
至于怎么接线随后后补充(找到esp8266定义引脚的头文件就可以了),然而播放出来的效果比起DFPlayer差的不是一丁半点,后续还在改进,敬请最终效果
重新开始
最近学业挺繁忙的,加上我不太经常使用arduino开发,就鸽了好长一段时间,现在重新开始,预计这个暑假之内能把它做完。
首先是我的想法:
- 因为esp8266自带的闪存不太够用,而我们的mp3需要用个OLED屏幕,这就需要大量的像素数据(用取模软件得到的),把它们放在sd卡里面最合适不过了!
- sd卡除了放像素数据,还要放歌曲等信息,所有就需要设计一些文件架构,来符合我们的需求,这个后面再决定
- OLED作为显示器,可以显示当前天气(从网络获取)和时间,也可以显示sd卡内有什么东西,然后可以通过摇杆来操控(暂时没想到什么可以代替的),选中歌曲,进行播放等,还可以加自己想要的模块,比如说温湿度传感器等
- 为了显示中文,也需要把要用到的中文的字体取模后放到/fonts文件夹下,文件名就是中文字名,然后要用直接取出即可
- 此外,我还会搭建本地服务器(tomcat+javaweb)(网络服务器同理),实现网络上传歌曲到单片机,以及做网络服务器等,这些应该能在暑假前做完,然后过程会一一发布,供大家参考和提出建议。
文章分开写
这篇文章好像有点长了,阅读起来可能有障碍,所以我把其他的部分放到一个专栏里面,有兴趣了解的可以自行订阅(完全免费) 专栏连接跳转