{"id":9040,"date":"2020-10-18T12:35:05","date_gmt":"2020-10-18T12:35:05","guid":{"rendered":"https:\/\/wolles-elektronikkiste.de\/arduino-controlled-dfplayer-mini"},"modified":"2026-06-13T14:44:04","modified_gmt":"2026-06-13T14:44:04","slug":"arduino-controlled-dfplayer-mini","status":"publish","type":"post","link":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini","title":{"rendered":"Arduino controlled DFPlayer Mini"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">About this Post<\/h2>\n\n<p>Now that I\u2019ve written about the YX5300 MP3 player module <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/mp3-player-yx5300\" target=\"_blank\" rel=\"noopener noreferrer\">in my last post<\/a>, I\u2019d like to focus on controlling the DFPlayer Mini with the Arduino.<\/p>\n<ul>\n<li>Technical Specifications and Pin Assignment<\/li>\n<li>File structure of the SD card<\/li>\n<li>Circuit for serial control with Arduino<\/li>\n<li>The DFRobotDFPlayerMini Library<\/li>\n<li>Ein eigener Sketch mit Men\u00fcf\u00fchrung<\/li>\n<li>Control via pushbuttons<\/li>\n<li>DFPlayer Mini vs. YX5300 Module<\/li>\n<\/ul>\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini-1024x548.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"548\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini-1024x548.webp\" alt=\"\" class=\"wp-image-19609\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini-1024x548.webp 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini-300x161.webp 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini-768x411.webp 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini-1536x823.webp 1536w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini-1320x707.webp 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Small but mighty, the DFPlayer Mini<\/figcaption><\/figure>\n\n<h2 class=\"wp-block-heading\">Specifications \/ Features of the DFPlayer Mini<\/h2>\n\n<h3 class=\"wp-block-heading\">Overview<\/h3>\n\n<p>The DFPlayer Mini is available for 5\u201310 euros on <a href=\"https:\/\/smile.amazon.de\/\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon<\/a> or other online stores. The module\u2019s small size is truly impressive, as it\u2019s barely larger than the micro SD card slot. I find it equally impressive that it even includes an amplifier, allowing you to connect speakers rated up to 3 watts directly. You can find a datasheet for the DFPlayer Mini online, for example, <a href=\"http:\/\/www.picaxe.com\/docs\/spe033.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>. Here are a few key specs:    <\/p>\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Voltage supply <\/td><td>3.2 &#8211; 5.0 V<\/td><\/tr><tr><td>Current consumption (standby)<\/td><td>~ 20 mA<\/td><\/tr><tr><td>Supported file types<\/td><td>MP3 and WAV<\/td><\/tr><tr><td>Supported SD cards<\/td><td>Micro SD(HC) up to 32 GB<\/td><\/tr><tr><td>Format<\/td><td>FAT16 \/ FAT 32<\/td><\/tr><tr><td>Communication <\/td><td>Seriell RX\/TX, baud rate: 9600<\/td><\/tr><tr><td>USB port<\/td><td>USB 2.0 (Flashdrive \/ PC)<\/td><\/tr><tr><td>Audio outputs<\/td><td>Speakers &#8211; up to 3W (built-in amplifier)<br\/>DAC (for headphones or an amplifier)<br\/><\/td><\/tr><\/tbody><\/table><\/figure>\n\n<h3 class=\"wp-block-heading\">Pinout<\/h3>\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Anschlussschema_DFPlayer.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"476\" height=\"350\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Anschlussschema_DFPlayer.jpg\" alt=\"Pinout and pin functions of the DFPlayer Mini\" class=\"wp-image-1173\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Anschlussschema_DFPlayer.jpg 476w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Anschlussschema_DFPlayer-300x221.jpg 300w\" sizes=\"auto, (max-width: 476px) 100vw, 476px\" \/><\/a><figcaption class=\"wp-element-caption\">Pinout of the DFPlayer Mini<\/figcaption><\/figure>\n<\/div>\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Anschluesse_DFPlayer.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"929\" height=\"732\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Anschluesse_DFPlayer.webp\" alt=\"\" class=\"wp-image-19611\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Anschluesse_DFPlayer.webp 929w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Anschluesse_DFPlayer-300x236.webp 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Anschluesse_DFPlayer-768x605.webp 768w\" sizes=\"auto, (max-width: 929px) 100vw, 929px\" \/><\/a><\/figure>\n\n<p>Please note that you must connect a 1-k\u03a9 resistor in front of the RX input; otherwise, a very unpleasant, loud hum will occur.&nbsp;<\/p>\n<p>The Adkeyx and IOx connectors are a pretty ingenious feature that allows you to control the DFPlayer Mini largely using buttons. More on that below.&nbsp;<\/p>\n\n<h3 class=\"wp-block-heading\">Folder and file structure of the SD card<\/h3>\n\n<p>The DFPlayer Mini expects directory and file names to follow a specific format. The rules for file naming and the maximum number of files per directory depend on the type of directory. &nbsp;<\/p>\n\n<p>Note: If you&#8217;re having problems with the SD card, check to see if it has multiple partitions. Sometimes the SD card has a small boot partition that can cause issues.  I described how to fix the problem in <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/mp3-player-yx5300\" target=\"_blank\" rel=\"noopener noreferrer\">my last post<\/a>. &nbsp;<\/p>\n\n<h4 class=\"wp-block-heading\">1. Root directory<\/h4>\n\n<p>The root directory of the SD card can hold up to 3,000 WAV or MP3 files. They must be named 0001.mp3 (or 0001.wav), 0002.mp3 \u2026 3000.mp3. However, there is a peculiar issue here: the files must be copied in the exact order of their names. If you tell the module to play 0001.mp3, but 0007.mp3 was copied first, then 0007.mp3 will be played. Personally, I would avoid copying files to the root directory. Other directories do not have this problem.      &nbsp;<\/p>\n\n<h4 class=\"wp-block-heading\">2. Standard folders<\/h4>\n\n<p>You can create 99 standard folders, which must be named according to the pattern 01, 02, 03 \u2026 99. Each folder can hold up to 3,000 files, but only the first 255 can be accessed directly via serial commands. This means that a command like &#8220;play file number 627&#8221; is not possible in the standard folders, and you would have to navigate through them using &#8220;next&#8221; commands. The file names must follow the structure 001xxxxx.mp3 (or wav), 002xxxxx.mp3, \u2026 255xxxxx.mp3. Here, \u201cxxxxx\u201d can be chosen freely and may have more than the 5 digits indicated here. Spaces are also allowed.&nbsp;<\/p>\n\n<h4 class=\"wp-block-heading\">3. Special folder &#8220;MP3&#8221;<\/h4>\n\n<p>This folder must be named exactly &#8220;MP3&#8221;.&nbsp; It can hold up to 3,000 files with the naming convention 0001.mp3 (or wav), 0002.mp3, \u2026 3000.mp3. Unlike the main directory, all files are directly accessible, and there are no issues with the order.&nbsp;<\/p>\n\n<h4 class=\"wp-block-heading\">4. Special folder &#8220;ADVERT&#8221;<\/h4>\n\n<p class=\"wp-block-paragraph\">The same rules apply as for the MP3 directory. The ADVERT directory has a special function. If you play a song from one of the other directories and call a file from the ADVERT directory, the former song is only interrupted. After the ADVERT play is finished, the former song continues. It&#8217;s like an advertisement and that&#8217;s how the name of the directory already suggests it. <\/p>\n\n<h2 class=\"wp-block-heading\">The circuit for serial operation <\/h2>\n\n<p>The circuit for operation via the serial interface is relatively simple. Note that a 1 k\u03a9 resistor must be placed in front of the DFPlayer module\u2019s RX input. <\/p>\n<p>Note: In my circuit, I power the DFPlayer using power from the Arduino. When using larger speakers, up to the max.  3 watts, keep in mind that the Arduino&#8217;s total power consumption should not exceed 500 mA. &nbsp;<\/p>\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Fritzing-1024x448.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"448\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Fritzing-1024x448.webp\" alt=\"\" class=\"wp-image-19613\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Fritzing-1024x448.webp 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Fritzing-300x131.webp 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Fritzing-768x336.webp 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Fritzing-1536x672.webp 1536w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Fritzing-1320x578.webp 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Fritzing.webp 1590w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">DFPlayer Mini control with the Arduino &#8211; the circuit<\/figcaption><\/figure>\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Schaltung-1-1024x814.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"814\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Schaltung-1-1024x814.webp\" alt=\"\" class=\"wp-image-19615\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Schaltung-1-1024x814.webp 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Schaltung-1-300x238.webp 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Schaltung-1-768x610.webp 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Schaltung-1-1536x1221.webp 1536w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Schaltung-1-1320x1049.webp 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Schaltung-1.webp 1700w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">And this is what the circuit looks like on the breadboard<\/figcaption><\/figure>\n\n<h3 class=\"wp-block-heading\">Fixing the initial crackling noise<\/h3>\n<p>When you power on the module or reset it, you will initially hear an unpleasant crackling sound. You can prevent this with a simple hardware hack (thanks to Tomas for the tip!). The amplifier on the board has a mute pin that\u2019s connected to GND via a 0\u03a9 resistor. Carefully remove this resistor and solder a wire to the contact facing the outside of the module. Connect the wire to an Arduino pin. Use OUTPUT\/HIGH to mute the module before initialization, then activate the amplifier with OUTPUT or INPUT\/LOW.     <\/p>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\"><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/mute_pin.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"942\" height=\"606\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/mute_pin.webp\" alt=\"\" class=\"wp-image-26203\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/mute_pin.webp 942w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/mute_pin-300x193.webp 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/mute_pin-768x494.webp 768w\" sizes=\"auto, (max-width: 942px) 100vw, 942px\" \/><\/a><figcaption class=\"wp-element-caption\">Connecting a mute pin<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\"><\/div>\n<\/div>\n\n<h2 class=\"wp-block-heading\">Control via the library<br\/>DFRobotDFPlayerMini<\/h2>\n\n<p>Controlling the DFPlayer Mini with an Arduino isn&#8217;t difficult, since there are a number of libraries available on GitHub. I use the <a href=\"https:\/\/github.com\/DFRobot\/DFRobotDFPlayerMini\" target=\"_blank\" rel=\"noopener\">DFRobotDFPlayerMini<\/a> library, but that doesn&#8217;t mean the others are bad. I simply tried it first and stuck with it.   <\/p>\n<p>As usual, you install the library by downloading the ZIP file and extracting it into the &#8220;Arduino\\libraries&#8221; folder. The included example sketch, &#8220;FullFunction.ino,&#8221; provides a good overview of all the functions. I&#8217;ve modified it slightly so that you can call up the commands via the serial monitor. Here is the result:   <\/p>\n<\/p>\n<div class=\"scroll-paragraph-long\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-group=\"FullFunction_Modified.ino\" data-enlighter-title=\"FullFunction_Modified.ino\">\/***************************************************\n FullFunction.ino example of the DFRobotDFPlayerMini library.\n Modified by Wolfgang Ewald.\n \n DFPlayer - A Mini MP3 Player For Arduino\n &lt;https:\/\/www.dfrobot.com\/product-1121.html&gt;\n \n ***************************************************\n This example shows the all the function of library for DFPlayer.\n \n Created 2016-12-07\n By [Angelo qiao](Angelo.qiao@dfrobot.com)\n \n GNU Lesser General Public License.\n See &lt;http:\/\/www.gnu.org\/licenses\/&gt; for details.\n All above must be included in any redistribution\n ****************************************************\/\n\n\/***********Notice and Trouble shooting***************\n 1.Connection and Diagram can be found here\n&lt;https:\/\/www.dfrobot.com\/wiki\/index.php\/DFPlayer_Mini_SKU:DFR0299#Connection_Diagram&gt;\n 2.This code is tested on Arduino Uno, Leonardo, Mega boards.\n ****************************************************\/\n\n#include \"Arduino.h\"\n#include \"SoftwareSerial.h\"\n#include \"DFRobotDFPlayerMini.h\"\n\nSoftwareSerial mySoftwareSerial(10,11); \/\/ RX, TX\nDFRobotDFPlayerMini myDFPlayer;\nvoid printDetail(uint8_t type, int value);\n\nvoid setup()\n{\n  mySoftwareSerial.begin(9600);\n  Serial.begin(9600);\n  \n  Serial.println();\n  Serial.println(F(\"DFRobot DFPlayer Mini Demo\"));\n  Serial.println(F(\"Initializing DFPlayer ... (May take 3~5 seconds)\"));\n  \n  if (!myDFPlayer.begin(mySoftwareSerial)) {  \/\/Use softwareSerial to communicate with mp3.\n    Serial.println(F(\"Unable to begin:\"));\n    Serial.println(F(\"1.Please recheck the connection!\"));\n    Serial.println(F(\"2.Please insert the SD card!\"));\n    while(true);\n  }\n  Serial.println(F(\"DFPlayer Mini online.\"));\n  printHelp();\n  \n  myDFPlayer.setTimeOut(500); \/\/Set serial communication time out 500ms\n  \n  \/\/----Set volume----\n  myDFPlayer.volume(10);  \/\/Set volume value (0~30).\n \/\/ myDFPlayer.volumeUp(); \/\/Volume Up\n \/\/ myDFPlayer.volumeDown(); \/\/Volume Down\n  \n  \/\/----Set different EQ----\n  myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);\n\/\/  myDFPlayer.EQ(DFPLAYER_EQ_POP);\n\/\/  myDFPlayer.EQ(DFPLAYER_EQ_ROCK);\n\/\/  myDFPlayer.EQ(DFPLAYER_EQ_JAZZ);\n\/\/  myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);\n\/\/  myDFPlayer.EQ(DFPLAYER_EQ_BASS);\n  \n  \/\/----Set device we use SD as default----\n\/\/  myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK);\n  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);\n\/\/  myDFPlayer.outputDevice(DFPLAYER_DEVICE_AUX);\n\/\/  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SLEEP);\n\/\/  myDFPlayer.outputDevice(DFPLAYER_DEVICE_FLASH);\n  \n  \/\/----Mp3 control----\n\/\/  myDFPlayer.sleep();     \/\/sleep\n\/\/  myDFPlayer.reset();     \/\/Reset the module\n\/\/  myDFPlayer.enableDAC();  \/\/Enable On-chip DAC\n\/\/  myDFPlayer.disableDAC();  \/\/Disable On-chip DAC\n\/\/  myDFPlayer.outputSetting(true, 15); \/\/output setting, enable the output and set the gain to 15\n}\n\nvoid loop(){\n  if(Serial.available()){\n    readCommand();\n  }\n \n  if (myDFPlayer.available()) {\n    printDetail(myDFPlayer.readType(), myDFPlayer.read()); \/\/Print the detail message from DFPlayer to handle different errors and states.\n  }\n}\n\nvoid readCommand(){\n  char cmd = ' ';\n  int value1, value2 = 0;\n  cmd = Serial.read();\n  value1 = Serial.parseInt();\n  value2 = Serial.parseInt();\n \n  switch(cmd){\n    case 'h': \n      printHelp();\n      break;\n      \n    case '&gt;':\n      myDFPlayer.next();\n      break;\n      \n    case '&lt;':\n      myDFPlayer.previous();\n      break;\n      \n    case 'p':\n      if(value2 == 0) myDFPlayer.play(value1);\n      else if(value1 != 0) myDFPlayer.playFolder(value1, value2);\n      break;\n\n    case 'P':\n      if(value2 == 0) myDFPlayer.playMp3Folder(value1); \n      else if(value1 != 0)myDFPlayer.playLargeFolder(value1, value2);\n      break;\n    \n    case '+':\n      myDFPlayer.volumeUp(); \n      break;\n      \n    case '-':\n      myDFPlayer.volumeDown();\n      break;\n      \n    case 'v':\n      myDFPlayer.volume(value1);\n      break;\n      \n    case 'b':\n      myDFPlayer.pause();\n      break;\n\n    case 's':\n      myDFPlayer.start();\n      break;\n          \n    case 'z':\n      myDFPlayer.sleep();\n      break;\n      \n    case 'L':\n      if(value1 == 0) myDFPlayer.enableLoopAll();\n      else myDFPlayer.loopFolder(value1);\n      break;\n    \n    case 'l':\n      if(value1 == 0) myDFPlayer.disableLoopAll();\n      else myDFPlayer.loop(value1);\n      break;\n    \n    case 'A':\n      myDFPlayer.advertise(value1);\n      break;\n    \n    case 'a':\n      myDFPlayer.stopAdvertise();\n      break;\n    \n    case 'q':\n      if(value1 == 1) Serial.println(myDFPlayer.readState()); \n      else if(value1 == 2) Serial.println(myDFPlayer.readVolume());\n      else if(value1 == 3) Serial.println(myDFPlayer.readEQ());\n      else if(value1 == 4) Serial.println(myDFPlayer.readFileCounts());\n      else if(value1 == 5) Serial.println(myDFPlayer.readFolderCounts());\n      else if(value1 == 6) Serial.println(myDFPlayer.readCurrentFileNumber());\n      break;\n    default:\n      Serial.println(\"Ung\u00fcltiges Kommando\");\n      break;\n  }\n\n}\n\nvoid printHelp(){\n  Serial.println(F(\"DFPlayer Commands:\"));\n  Serial.println(F(\" h - help\"));\n  Serial.println(F(\" &gt; - next \"));\n  Serial.println(F(\" &lt; - previous\"));\n  Serial.println(F(\" p3 - play file 3\"));\n  Serial.println(F(\" p3,5 - play folder 3, file 5\"));\n  Serial.println(F(\" P3,5 - play large folder 3, file 5\"));\n  Serial.println(F(\" P3 - play file 3 in MP3 folder\")); \n  Serial.println(F(\" + - volume up\"));\n  Serial.println(F(\" - - volume down\"));\n  Serial.println(F(\" v10 - set volume to 10\"));\n  Serial.println(F(\" b - Pause\"));\n  Serial.println(F(\" s - start \"));\n  Serial.println(F(\" z - sleep \"));\n  Serial.println(F(\" L - enable loop all\"));\n  Serial.println(F(\" l - disable loop all\"));\n  Serial.println(F(\" L3 - loop folder 3\"));\n  Serial.println(F(\" l3 - loop file 3\"));\n  Serial.println(F(\" A3 - advertise file 3\"));\n  Serial.println(F(\" a - stop advertise \")); \n  Serial.println(F(\" qx - query No. x\"));\n  Serial.println(F(\"     x = 1 - read state\"));\n  Serial.println(F(\"     x = 2 - read volume\"));\n  Serial.println(F(\"     x = 3 - read equalizer\"));\n  Serial.println(F(\"     x = 4 - read file counts\"));\n  Serial.println(F(\"     x = 5 - read current file number\"));\n  Serial.println(F(\"     x = 6 - read file counts in folder\"));\n  Serial.println(F(\"     x = 7 - read folder counts\"));\n}\n\nvoid printDetail(uint8_t type, int value){\n  switch (type) {\n    case TimeOut:\n      Serial.println(F(\"Time Out!\"));\n      break;\n    case WrongStack:\n      Serial.println(F(\"Stack Wrong!\"));\n      break;\n    case DFPlayerCardInserted:\n      Serial.println(F(\"Card Inserted!\"));\n      break;\n    case DFPlayerCardRemoved:\n      Serial.println(F(\"Card Removed!\"));\n      break;\n    case DFPlayerCardOnline:\n      Serial.println(F(\"Card Online!\"));\n      break;\n    case DFPlayerUSBInserted:\n      Serial.println(\"USB Inserted!\");\n      break;\n    case DFPlayerUSBRemoved:\n      Serial.println(\"USB Removed!\");\n      break;\n    case DFPlayerPlayFinished:\n      Serial.print(F(\"Number:\"));\n      Serial.print(value);\n      Serial.println(F(\" Play Finished!\"));\n      break;\n    case DFPlayerError:\n      Serial.print(F(\"DFPlayerError:\"));\n      switch (value) {\n        case Busy:\n          Serial.println(F(\"Card not found\"));\n          break;\n        case Sleeping:\n          Serial.println(F(\"Sleeping\"));\n          break;\n        case SerialWrongStack:\n          Serial.println(F(\"Get Wrong Stack\"));\n          break;\n        case CheckSumNotMatch:\n          Serial.println(F(\"Check Sum Not Match\"));\n          break;\n        case FileIndexOut:\n          Serial.println(F(\"File Index Out of Bound\"));\n          break;\n        case FileMismatch:\n          Serial.println(F(\"Cannot Find File\"));\n          break;\n        case Advertise:\n          Serial.println(F(\"In Advertise\"));\n          break;\n        default:\n          break;\n      }\n      break;\n    default:\n      break;\n  }  \n}<\/pre>\n<p>\u00a0<\/p>\n<\/div>\n<p>\n\n<p><a href=\"https:\/\/wolles-elektronikkiste.de\/en\/mp3-player-yx5300\" target=\"_blank\" rel=\"noopener noreferrer\">In my last post<\/a>, I showed how to control the YX5300 MP3 module using a smartphone. This could be adapted here with relatively little effort.  <\/p>\n\n<h3 class=\"wp-block-heading\">If the query does not work<\/h3>\n<p>As with so many components, there are also inexpensive knockoff versions of the DFPlayer Mini. These generally work, but fail when queried (\u201cq-commands\u201d). Visually, the original and the knockoff usually differ only in the labeling on the ICs on the back of the module:  <\/p>\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/dfplayer_orig_vs_fake-1024x400.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"400\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/dfplayer_orig_vs_fake-1024x400.webp\" alt=\"\" class=\"wp-image-26202\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/dfplayer_orig_vs_fake-1024x400.webp 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/dfplayer_orig_vs_fake-300x117.webp 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/dfplayer_orig_vs_fake-768x300.webp 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/dfplayer_orig_vs_fake-1536x600.webp 1536w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/dfplayer_orig_vs_fake-1320x516.webp 1320w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/dfplayer_orig_vs_fake.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Left: Original, right: Replica<\/figcaption><\/figure>\n\n<h3 class=\"wp-block-heading\">Does it work without a library? <\/h3>\n\n<p>Controlling the DFPlayer Mini with Arduino isn&#8217;t rocket science, even without a library, since the datasheet is fairly easy to understand. Here&#8217;s what the command structure looks like: <\/p>\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Kommandostruktur-1024x455.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"455\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Kommandostruktur-1024x455.webp\" alt=\"\" class=\"wp-image-19617\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Kommandostruktur-1024x455.webp 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Kommandostruktur-300x133.webp 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Kommandostruktur-768x341.webp 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/Kommandostruktur.webp 1287w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n<p>Each command sequence begins with &#8220;7E&#8221;. This is followed by VER (version), which is always &#8220;FF&#8221;. &#8220;Len&#8221; indicates the command length in bytes. The start byte, end byte, and checksum are not included in this count. Normally, this results in six bytes. &#8220;CMD&#8221; is the actual command; a list of commands can be found in the datasheet. &#8220;Feedback&#8221; controls whether you want a response from the module. There is only &#8220;01&#8221; for feedback and &#8220;00&#8221; for no feedback. &#8220;para1&#8221; and &#8220;para2&#8221; are\u2014not surprisingly\u2014the command parameters. These are also listed in the datasheet. The checksum provides additional security, but it can also be omitted. The datasheet explains how to calculate the checksum.           &nbsp;<\/p>\n<p>Here is an example. To play a specific file in a default directory, the command 0x0F is used. If file 002 is to be played in folder 01 and no feedback is required, the command sequence without a checksum is:  <\/p>\n<p><code>7E FF 06 0F 00 01 02 EF<\/code><\/p>\n<p>The bytes are transmitted one by one using &#8220;Serial.write(<em>x-th byte<\/em>)&#8221;. Here, &#8220;Serial&#8221; should be replaced with &#8220;SoftwareSerial&#8221;. Implementing the commands is quite a labor-intensive task, so it\u2019s a relief that libraries exist. But personally, I always like to understand what\u2019s happening behind the scenes.   &nbsp;<\/p>\n\n<h2 class=\"wp-block-heading\">Control via pushbuttons<\/h2>\n\n<p>Controlling the DFPlayer Mini with an Arduino or other microcontrollers isn&#8217;t the only option. As mentioned above, many functions can also be accessed via the Adkeyx and IOx connections on pins 9, 11, 12, and 13. &nbsp;<\/p>\n<p>The IOx pins are connected to GND via buttons. Depending on whether you press the button briefly or hold it down, the next track will play or the volume will increase, or the previous track will play or the volume will decrease. &nbsp;<\/p>\n<p>With ADKEYx connectors, you can achieve various functions by adding additional resistors. I tried it, and it works perfectly. <\/p>\n<p>By the way, &#8220;Segment X&#8221; refers to &#8220;play file No. X.&#8221; However, the order in which the files are copied is crucial here, regardless of the directory type. &nbsp;<\/p>\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini_SpeakerAnschluss.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"742\" height=\"385\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini_SpeakerAnschluss.jpg\" alt=\"Circuit diagram for connection of pushbuttons to ADKEY and IO without resistors\" class=\"wp-image-1245\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini_SpeakerAnschluss.jpg 742w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini_SpeakerAnschluss-300x156.jpg 300w\" sizes=\"auto, (max-width: 742px) 100vw, 742px\" \/><\/a><figcaption class=\"wp-element-caption\"><br\/>Connecting pushbuttons to ADKEY and IO without resistors<\/figcaption><\/figure>\n\n<figure class=\"wp-block-image size-large\"><a href=\"&lt;!--[CDATA[https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini_Adkey.webp]]--&gt;\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"715\" src=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini_Adkey-1024x715.webp\" alt=\"\" class=\"wp-image-19619\" srcset=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini_Adkey-1024x715.webp 1024w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini_Adkey-300x210.webp 300w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini_Adkey-768x537.webp 768w, https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/DFPlayer_Mini_Adkey.webp 1092w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Connecting Pushbuttons to ADKEY Using Resistors<\/figcaption><\/figure>\n\n<h2 class=\"wp-block-heading\">DFPlayer Mini vs. YX5300<\/h2>\n\n<p>Now that I\u2019ve tested both modules, I have to say that they are quite similar in terms of functionality. However, the DFPlayer Mini offers significantly more flexibility thanks to its pushbutton functions than the YX5300 module. Another advantage of the DFPlayer Mini is that it has pins for connecting speakers or an amplifier. Plus, the module is very compact. The advantage of the YX5300 module, on the other hand, is the 3.5mm jack, to which you can connect headphones or (active) speakers directly.     If you don&#8217;t like too much DIY, the YX5300 might be a better fit for you. <\/p>\n\n<h2 class=\"wp-block-heading\">Support requested<\/h2>\n<p>Did you enjoy this post? And did you notice that this website is ad-free? If you&#8217;d like to help me keep it that way, then follow <a href=\"https:\/\/wolles-elektronikkiste.de\/en\/support-me\" target=\"_blank\" rel=\"noopener\">this link<\/a>.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to control the DFPlayer Mini with Arduino or buttons; specifications and properties; folder and file structure; DFRobotDFPlayerMini library<\/p>\n","protected":false},"author":1,"featured_media":7933,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[576],"tags":[644,648,649,652,650,654,646,642],"class_list":["post-9040","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sound-en","tag-control-the-dfplayer-mini","tag-dfplayer-mini-arduino-en-2","tag-dfplayer-mini-circuit","tag-dfplayer-mini-library","tag-dfplayer-mini-technical-data","tag-dfrobotdfplayermini-library-2","tag-mp3-en-2","tag-programming-dfplayer-mini"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Arduino controlled DFPlayer Mini &#8226; Wolles Elektronikkiste<\/title>\n<meta name=\"description\" content=\"Control the DFPlayer Mini with Arduino or buttons; technical data and properties; folder and file structure; DFRobotDFPlayerMini library\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arduino controlled DFPlayer Mini &#8226; Wolles Elektronikkiste\" \/>\n<meta property=\"og:description\" content=\"Control the DFPlayer Mini with Arduino or buttons; technical data and properties; folder and file structure; DFRobotDFPlayerMini library\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini\" \/>\n<meta property=\"og:site_name\" content=\"Wolles Elektronikkiste\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-18T12:35:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-13T14:44:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/digital-1295560_960_720.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Wolfgang Ewald\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wolfgang Ewald\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini\"},\"author\":{\"name\":\"Wolfgang Ewald\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"headline\":\"Arduino controlled DFPlayer Mini\",\"datePublished\":\"2020-10-18T12:35:05+00:00\",\"dateModified\":\"2026-06-13T14:44:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini\"},\"wordCount\":1526,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/digital-1295560_960_720.jpg\",\"keywords\":[\"Control the DFPlayer Mini\",\"DFPlayer Mini Arduino\",\"DFPlayer Mini circuit\",\"DFPlayer Mini library\",\"DFPlayer Mini technical data\",\"DFRobotDFPlayerMini library\",\"MP3\",\"Programming DFPlayer Mini\"],\"articleSection\":[\"Sound\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini\",\"name\":\"Arduino controlled DFPlayer Mini &#8226; Wolles Elektronikkiste\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/digital-1295560_960_720.jpg\",\"datePublished\":\"2020-10-18T12:35:05+00:00\",\"dateModified\":\"2026-06-13T14:44:04+00:00\",\"description\":\"Control the DFPlayer Mini with Arduino or buttons; technical data and properties; folder and file structure; DFRobotDFPlayerMini library\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini#primaryimage\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/digital-1295560_960_720.jpg\",\"contentUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/digital-1295560_960_720.jpg\",\"width\":720,\"height\":720,\"caption\":\"Post image for Controlling DFPlayer with Arduino\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\\\/arduino-controlled-dfplayer-mini#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arduino controlled DFPlayer Mini\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#website\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en\",\"name\":\"Wolles Elektronikkiste\",\"description\":\"Die wunderbare Welt der Elektronik\",\"publisher\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/en#\\\/schema\\\/person\\\/b774e4d64b4766889a2f7c6e5ec85b46\",\"name\":\"Wolfgang Ewald\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"url\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"contentUrl\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\",\"width\":512,\"height\":512,\"caption\":\"Wolfgang Ewald\"},\"logo\":{\"@id\":\"https:\\\/\\\/wolles-elektronikkiste.de\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/cropped-Logo-1.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Arduino controlled DFPlayer Mini &#8226; Wolles Elektronikkiste","description":"Control the DFPlayer Mini with Arduino or buttons; technical data and properties; folder and file structure; DFRobotDFPlayerMini library","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini","og_locale":"en_US","og_type":"article","og_title":"Arduino controlled DFPlayer Mini &#8226; Wolles Elektronikkiste","og_description":"Control the DFPlayer Mini with Arduino or buttons; technical data and properties; folder and file structure; DFRobotDFPlayerMini library","og_url":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini","og_site_name":"Wolles Elektronikkiste","article_published_time":"2020-10-18T12:35:05+00:00","article_modified_time":"2026-06-13T14:44:04+00:00","og_image":[{"width":720,"height":720,"url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/digital-1295560_960_720.jpg","type":"image\/jpeg"}],"author":"Wolfgang Ewald","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Wolfgang Ewald","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini#article","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini"},"author":{"name":"Wolfgang Ewald","@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"headline":"Arduino controlled DFPlayer Mini","datePublished":"2020-10-18T12:35:05+00:00","dateModified":"2026-06-13T14:44:04+00:00","mainEntityOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini"},"wordCount":1526,"commentCount":3,"publisher":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/digital-1295560_960_720.jpg","keywords":["Control the DFPlayer Mini","DFPlayer Mini Arduino","DFPlayer Mini circuit","DFPlayer Mini library","DFPlayer Mini technical data","DFRobotDFPlayerMini library","MP3","Programming DFPlayer Mini"],"articleSection":["Sound"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini","url":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini","name":"Arduino controlled DFPlayer Mini &#8226; Wolles Elektronikkiste","isPartOf":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#website"},"primaryImageOfPage":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini#primaryimage"},"image":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini#primaryimage"},"thumbnailUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/digital-1295560_960_720.jpg","datePublished":"2020-10-18T12:35:05+00:00","dateModified":"2026-06-13T14:44:04+00:00","description":"Control the DFPlayer Mini with Arduino or buttons; technical data and properties; folder and file structure; DFRobotDFPlayerMini library","breadcrumb":{"@id":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini#primaryimage","url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/digital-1295560_960_720.jpg","contentUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/04\/digital-1295560_960_720.jpg","width":720,"height":720,"caption":"Post image for Controlling DFPlayer with Arduino"},{"@type":"BreadcrumbList","@id":"https:\/\/wolles-elektronikkiste.de\/en\/arduino-controlled-dfplayer-mini#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/wolles-elektronikkiste.de\/en"},{"@type":"ListItem","position":2,"name":"Arduino controlled DFPlayer Mini"}]},{"@type":"WebSite","@id":"https:\/\/wolles-elektronikkiste.de\/en#website","url":"https:\/\/wolles-elektronikkiste.de\/en","name":"Wolles Elektronikkiste","description":"Die wunderbare Welt der Elektronik","publisher":{"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wolles-elektronikkiste.de\/en?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/wolles-elektronikkiste.de\/en#\/schema\/person\/b774e4d64b4766889a2f7c6e5ec85b46","name":"Wolfgang Ewald","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","url":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","contentUrl":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png","width":512,"height":512,"caption":"Wolfgang Ewald"},"logo":{"@id":"https:\/\/wolles-elektronikkiste.de\/wp-content\/uploads\/2019\/03\/cropped-Logo-1.png"}}]}},"_links":{"self":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/9040","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/comments?post=9040"}],"version-history":[{"count":2,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/9040\/revisions"}],"predecessor-version":[{"id":26208,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/posts\/9040\/revisions\/26208"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media\/7933"}],"wp:attachment":[{"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/media?parent=9040"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/categories?post=9040"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wolles-elektronikkiste.de\/en\/wp-json\/wp\/v2\/tags?post=9040"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}