I made an Arduino based music player using DFPlayer Mini

Sometimes using sound or voice gives an edge to a project. So in this tutorial I made an Arduino based music player using DFPlayer Mini

projectImage

Things used in this project

Hardware components

HARDWARE LIST
DFRobot DF Player mini
Arduino Mega 2560

Software apps and online services

 

Arduino IDE

Story

 

Sometimes adding sound or voice gives an edge to your project. Like the voice of any AI system or robot.

A way to create music is Arduino. But generating sound through Arduino is a very tedious task and the sound clarity is also very poor. The reason behind this is Arduino doesn’t have sufficient storage to store music and the DAC of the Arduino is only 8 bit.

 

So, to do this we need a music player and in this tutorial, I am going to use DFPlayer Mini with Arduino to build a music player.

 

The original article is published here

 

You can also watch the tutorial here

Schematics

projectImage

Code

 

Music player Arduino Code

CODE
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

#define pp 3
#define vu 4
#define vd 5
#define nxt 6
#define prv 7


int v= 20, pv=0;

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);

  
  pinMode(pp,INPUT_PULLUP);
  pinMode(nxt,INPUT_PULLUP);
  pinMode(prv,INPUT_PULLUP);
  pinMode(vu,INPUT_PULLUP);
  pinMode(vd,INPUT_PULLUP);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true){
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(v);  //Set volume value. From 0 to 30
  //myDFPlayer.play(1);  //Play the first mp3
}

void loop()
{
  Serial.println(pv);
  if(digitalRead(pp)==0){
    if(pv == 0){
    myDFPlayer.start();
    pv=1;
    }
    else if(pv == 1){
    myDFPlayer.pause();
    pv=0;
    }
  }
  if(digitalRead(nxt)==0){
    myDFPlayer.next();
  }
  if(digitalRead(prv)==0){
    myDFPlayer.previous();
    
  }
  if(digitalRead(vu)==0 && v<30){
    v=v+1;
    myDFPlayer.volume(v);
  }
  if(digitalRead(vd)==0 && v>0){
    v=v-1;
    myDFPlayer.volume(v);
  }
  delay(200);
  
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  }
}

void printDetail(uint8_t type, int value){
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerUSBInserted:
      Serial.println("USB Inserted!");
      break;
    case DFPlayerUSBRemoved:
      Serial.println("USB Removed!");
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
  
}
// Visit our main website: https://www.circuitician.com

The article was first published in hackster, January 10, 2022

cr: https://www.hackster.io/circuiTician/i-made-an-arduino-based-music-player-using-dfplayer-mini-c3c7c9

author: circuiTician

License
All Rights
Reserved
licensBg
0