====== MP3-TF-16P ====== Small MP3 reader on micro SD. {{composants:mp3-tf-16p.jpg?200}} ===== Specifications ===== *supported sampling rates (kHz): 8/11.025/12/16/22.05/24/32/44.1/48 *24 -bit DAC output, support for dynamic range 90dB, SNR support 85dB *fully supports FAT16 , FAT32 file system, maximum support 32G of the TF card, support 32G of U disk, 64M bytes NORFLASH *a variety of control modes, I/O control mode, serial mode, AD button control mode *advertising sound waiting function, the music can be suspended. when advertising is over in the music continue to play *audio data sorted by folder, supports up to 100 folders, every folder can hold up to 255 songs *30 level adjustable volume, 6 -level EQ adjustable ===== Usage ===== Datasheet should be provided. Uses "DFRobotDFPlayerMini.h" library. {{composants:mp3-tf-16p_specs.jpg?300}} ===== Demo ===== {{composants:mp3-tf-16p_demo_wiring.jpg?500}} ++++ Arduino 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); void setup() { mySoftwareSerial.begin(9600); Serial.begin(115200); 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); } Serial.println(F("DFPlayer Mini online.")); myDFPlayer.volume(15); //Set volume value. From 0 to 30 myDFPlayer.play(1); //Play the first mp3 } void loop() { static unsigned long timer = millis(); if (millis() - timer > 3000) { timer = millis(); //myDFPlayer.next(); //Play next mp3 every 3 second. } 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 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; } } ++++ ===== Ressources ===== *[[https://www.instructables.com/id/Tutorial-of-MP3-TF-16P/|Instructables basic tutorial]] *[[http://acoptex.com/project/288/basics-project-065a-mp3-tf-16p-mini-mp3-player-module-at-acoptexcom/|More indepth tutorial]]