【基于DFPlayer的红外遥控播放器】
Apple_tec. 于 2015-11-7 14:41 编辑
什么是DFPlayer?
DFPlayer Mini 是一款小巧且价格低廉的MP3模块,可以直接接驳扬声器。模块配合供电电池、扬声器、按键可以单独使用,也可以通过串口控制,作为Arduino UNO或者是任何有串口的单片机的一个模块。模块本身完美的集成了MP3、WAV、WMA的硬解码。同时软件支持TF卡驱动,支持FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠。
2015-7-18 22:02 上传
(396.68 KB)
2015-7-18 22:07 上传
(43.64 KB)
2015-7-18 23:05 上传
(123.73 KB)
详细技术规格见:http://wiki.dfrobot.com.cn/index.php?title=%28SKU:DFR0299%29DFPlayer_Mini%E6%A8%A1%E5%9D%97
以下是所需食材:(本来拍的很好,可惜文件太大无法上传。。。坑)
2015-7-18 22:26 上传
(72.56 KB)
2015-7-18 22:26 上传
(17.34 KB)
2015-7-18 22:26 上传
(36.56 KB)
首先要对红外遥控器进行解码,搭建如图所示电路:
2015-7-18 22:06 上传
(92.19 KB)
具体操作步骤这里不再赘述,详见:
http://www.geek-workshop.com/thread-2433-1-1.html
在刚刚电路的基础之上搭建以下电路:
2015-7-18 22:27 上传
(129.63 KB)
官方声明:此模块可以直接使用Arduino供电,并不会对Arduino本身造成任何影响。
如果使用Arduino供电,切记需要在串口通信端口上增加两个1K电阻用来消除噪音!
以下是搭建好的电路:
2015-7-18 22:38 上传
(42.97 KB)
2015-7-18 22:38 上传
(50.66 KB)
定义遥控器功能:
2015-7-18 22:39 上传
(34.46 KB)
代码如下:(已增加详细注释)
ARDUINO
/*
* name: DFPlayer_Mini_Mp3
* version: 1.0
* Author: Apple tec.<[email]godfights@163.com[/email]>
* Date: 2015-07-16
* Description: 红外遥控DFPlayer迷你板
* note: mp3 file must put into mp3 folder in your tf card
*/
#include <IRremote.h>
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
//定义对应16进制数值的常量名
#define POWER 0xFD00FF //电源
#define VOLUP 0xFD807F //VOL+
#define STOP 0xFD40BF //FUNC/STOP
#define PREV 0xFD20DF //后退/上一曲
#define PAUSE 0xFDA05F //暂停/播放
#define NEXT 0xFD609F //前进/下一曲
#define DOWN 0xFD10EF //下一页
#define VOLDOWN 0xFD906F //VOL-
#define UP 0xFD50AF //上一页
#define ZERO 0xFD30CF //0
#define EQ 0xFDB04F //EQ
#define REPT 0xFD708F //ST/REPT
#define ONE 0xFD08F7 //1
#define TWO 0xFD8877 //2
#define THREE 0xFD48B7 //3
#define FOUR 0xFD28D7 //4
#define FIVE 0xFDA857 //5
#define SIX 0xFD6897 //6
#define SEVEN 0xFD18E7 //7
#define EIGHT 0xFD9867 //8
#define NINE 0xFD58A7 //9
const int recvPin = 2; //红外接收器到ardunio的端口
boolean a = true; //播放逻辑设定
int i = 20; //初始化音量
int z = 0; //初始化音效
IRrecv recv(recvPin); //初始化接收
decode_results res; //储存接收到的数据
void setup() {
Serial.begin(9600); //初始化串口
recv.enableIRIn(); //允许接收数据
mp3_set_serial (Serial); //设置串行DFPlayer-mini mp3模块
mp3_set_volume (i); //初始化音量
mp3_set_EQ (z); //初始化音效
}
void loop() {
if(recv.decode(&res)) { //判断是否接受到数据
switch(res.value) { //判断按下的按钮
case POWER: //停止播放
if (a == false) {
a = !a;
mp3_stop ();
}
break;
case PREV: //上一首
if (a == true) {
a = !a;
}
mp3_prev ();
break;
case NEXT: //下一首
if (a == true) {
a = !a;
}
mp3_next ();
break;
case PAUSE: //暂停与播放(暂停具有断点播放)
if (a == true) {
a = !a;
mp3_play ();
}
else {
a = !a;
mp3_pause ();
}
break;
case VOLUP: //音量加
if (i < 30) {
i = i+1;
mp3_set_volume (i);
}
break;
case VOLDOWN: //音量减
if (i > 0) {
i = i-1;
mp3_set_volume (i);
}
break;
case EQ: //音效模式切换
if (z < 5) {
z = z+1;
}
else {
z = 0;
}
mp3_set_EQ (z);
break;
case REPT : //随机模式播放
if (a == true) {
a = !a;
}
mp3_random_play ();
break;
case ONE:
if (a == true) {
a = !a;
}
mp3_play (1);
break;
case TWO:
if (a == true) {
a = !a;
}
mp3_play (2);
break;
case THREE:
if (a == true) {
a = !a;
}
mp3_play (3);
break;
case FOUR:
if (a == true) {
a = !a;
}
mp3_play (4);
break;
case FIVE:
if (a == true) {
a = !a;
}
mp3_play (5);
break;
case SIX:
if (a == true) {
a = !a;
}
mp3_play (6);
break;
case SEVEN:
if (a == true) {
a = !a;
}
mp3_play (7);
break;
case EIGHT:
if (a == true) {
a = !a;
}
mp3_play (8);
break;
case NINE:
if (a == true) {
a = !a;
}
mp3_play (9);
break;
default:
;
}
recv.resume(); //接收下一个数据
}
}
代码中使用的DFPlayer mini库文件我已修改,增加了全曲循环功能。
(原装库文件请于http://wiki.dfrobot.com.cn/index.php?title=%28SKU:DFR0299%29DFPlayer_Mini%E6%A8%A1%E5%9D%97下载)
以下是修改后的库文件:
网盘下载http://pan.baidu.com/s/1dExdYV3
DFPlayer_Mini_Mp3.zip
一切顺利,你就会得到一个可以用红外遥控器控制的音乐播放器。
2015-7-18 22:55 上传
(47.28 KB)
2015-7-18 22:55 上传
(50.05 KB)
- 以下是使用 DFPlayer Mini Module 的注意事項,请仔细阅读!
*DFPlayer Mini 可以读取 MP3 & WAV 格式的文件(实测可以解码320K的超高品质音乐),但无法播放时长在1秒以下的音频。
*所有音乐文件一定要放在mp3文件夹内,而mp3文件命名需要是4位数字,例如"0001.mp3",放置在mp3文件夹下。如需中英文命名,可以添加在数字后。例如"0001hello.mp3"或者"0001后来.mp3",详见数据手册。
via - 极客工坊