Makuna / DFMiniMp3

Arduino library for the DFPlayer Mini Mp3 module. Please refer to the Wiki for more details. Please use the GitHub Discussions ask questions as the GitHub Issues feature is used for bug tracking.
GNU Lesser General Public License v3.0
146 stars 33 forks source link

SD Card Not Insterd + Power UP bug #42

Closed hhgyu closed 4 years ago

hhgyu commented 4 years ago

I can't speak English

change sendPacket function

    void sendPacket(uint8_t command, uint16_t arg = 0, uint16_t sendSpaceNeeded = c_msSendSpace)
    {
        uint8_t out[DfMp3_Packet_SIZE] = { 0x7E,
            0xFF,
            06,
            command,
            00,
            static_cast<uint8_t>(arg >> 8),
            static_cast<uint8_t>(arg & 0x00ff),
            00,
            00,
            0xEF };

        setChecksum(out);

    Serial.print("_lastSend : ");
    Serial.print(_lastSend);
    Serial.print(", _lastSendSpace : ");
    Serial.print(_lastSendSpace);
    Serial.print(", end : ");
    Serial.print((millis() - _lastSend));
    Serial.print(", _isOnline : ");
    Serial.println(_isOnline);
        // wait for spacing since last send
        while (((millis() - _lastSend) < _lastSendSpace) || !_isOnline)
        {
            // check for event messages from the device while
            // we wait
            loop();
            delay(1);
    Serial.print("_lastSend : ");
    Serial.print(_lastSend);
    Serial.print(", _lastSendSpace : ");
    Serial.print(_lastSendSpace);
    Serial.print(", end : ");
    Serial.print((millis() - _lastSend));
    Serial.print(", _isOnline : ");
    Serial.println(_isOnline);
        }

        _lastSendSpace = sendSpaceNeeded;
        _serial.write(out, DfMp3_Packet_SIZE);

        _lastSend = millis();
    }

log

Com Error 1 // 1. SD Card Not Insertd + PowerUP
Card inserted 2 // 2. SD Card Instert
//3. looped sendPacket
_lastSend : 925, _lastSendSpace : 600, end : 2503, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2504, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2509, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2514, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2520, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2526, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2532, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2537, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2543, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2549, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2555, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2560, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2566, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2572, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2577, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2583, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2589, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2595, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2600, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2606, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2612, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2618, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2623, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2629, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2635, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2640, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2646, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2652, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2658, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2663, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2669, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2675, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2681, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2686, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2692, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2698, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2703, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2709, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2715, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2721, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2726, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2732, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2738, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2744, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2749, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2755, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2761, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2767, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2772, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2778, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2784, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2789, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2795, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2801, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2807, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2812, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2818, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2824, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2830, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2835, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2841, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2847, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2852, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2858, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2864, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2870, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2875, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2881, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2887, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2893, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2898, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2904, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2910, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2915, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2921, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2927, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2933, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2938, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2944, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2950, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2956, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2961, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2967, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2973, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2978, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2984, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2990, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 2996, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3001, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3007, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3013, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3019, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3024, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3030, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3036, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3042, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3047, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3053, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3059, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3064, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3070, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3076, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3082, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3087, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3093, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3099, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3105, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3110, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3116, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3122, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3127, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3133, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3139, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3145, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3150, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3156, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3162, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3168, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3173, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3179, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3185, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3190, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3196, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3202, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3208, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3213, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3219, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3225, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3231, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3236, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3242, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3248, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3253, _isOnline : 0
_lastSend : 925, _lastSendSpace : 600, end : 3259, _isOnline : 0

example source

#include <DFMiniMp3.h>

int nMP3Index = 1;
bool isStoped = false;
bool isInsertSD = true;

long long nInsertedTime = 0;

class Mp3Notify
{
  public:
    static void OnError(uint16_t errorCode)
    {
      // see DfMp3_Error for code meaning
      Serial.println();
      Serial.print("Com Error ");
      Serial.println(errorCode);
      isInsertSD = false;
    }

    static void OnPlayFinished(uint16_t globalTrack)
    {
      Serial.println();
      Serial.print("Play finished for #");
      Serial.println(globalTrack);
      isStoped = true;
    }

    static void OnCardOnline(uint16_t code)
    {
      Serial.println();
      Serial.print("Card online ");
      Serial.println(code);
      isInsertSD = true;
      nInsertedTime = millis();
    }

    static void OnUsbOnline(uint16_t code)
    {
      Serial.println();
      Serial.print("USB Disk online ");
      Serial.println(code);
    }

    static void OnCardInserted(uint16_t code)
    {
      Serial.println();
      Serial.print("Card inserted ");
      Serial.println(code);
      isInsertSD = true;
      nInsertedTime = millis();
    }

    static void OnUsbInserted(uint16_t code)
    {
      Serial.println();
      Serial.print("USB Disk inserted ");
      Serial.println(code);
    }

    static void OnCardRemoved(uint16_t code)
    {
      Serial.println();
      Serial.print("Card removed ");
      Serial.println(code);
      isInsertSD = false;
    }

    static void OnUsbRemoved(uint16_t code)
    {
      Serial.println();
      Serial.print("USB Disk removed ");
      Serial.println(code);
    }
};

DFMiniMp3<HardwareSerial, Mp3Notify> mp3(Serial2);

void waitMilliseconds(uint16_t msWait)
{
  uint32_t start = millis();

  while ((millis() - start) < msWait)
  {
    mp3.loop();
    delay(1);
  }
}

void setup()
{
  Serial.begin(115200);
  Serial2.begin(9600, SERIAL_8N1, 16, 17);

  mp3.begin();
  mp3.reset();

  waitMilliseconds(100);

  if (!isInsertSD) {
    while (!isInsertSD) {
      waitMilliseconds(10);
    }

    mp3.reset();

    waitMilliseconds(10);
  }
  mp3.setVolume(5);

  uint16_t volume = mp3.getVolume();
  Serial.println(volume);
  Serial.println("getVolume END");

  uint16_t count = mp3.getTotalTrackCount();
  Serial.print("files ");
  Serial.println(count);
}

void loop()
{
  waitMilliseconds(1000);

  if (isInsertSD && (nInsertedTime != 0 || isStoped)) {
    Serial.print("MP3Index: ");
    Serial.println(nMP3Index);
    mp3.playMp3FolderTrack(nMP3Index++);
    isStoped = (isStoped) ? !isStoped : isStoped;
    nInsertedTime = 0;
    if (nMP3Index > 100)
      nMP3Index = 1;
  }
}

change listenForReply function

    uint16_t listenForReply(uint8_t command)
    {
        uint8_t replyCommand = 0;
        uint16_t replyArg = 0;

        do
        {
            if (readPacket(&replyCommand, &replyArg))
            {
                if (command != 0 && command == replyCommand)
                {
                    return replyArg;
                }
                else
                {
                    switch (replyCommand)
                    {
                    case 0x3d: // micro sd
                    case 0x3c: // usb
                        T_NOTIFICATION_METHOD::OnPlayFinished(replyArg);
                        break;

                    case 0x3F:
                        if (replyArg & 0x02)
                        {
                            _isOnline = true;
                            T_NOTIFICATION_METHOD::OnCardOnline(replyArg);
                        }
                        else if (replyArg & 0x01)
                        {
                            _isOnline = true;
                            T_NOTIFICATION_METHOD::OnUsbOnline(replyArg);
                        }
                        break;

                    case 0x3A:
                        if (replyArg & 0x02)
                        {
                            _isOnline = true;
                            T_NOTIFICATION_METHOD::OnCardInserted(replyArg);
                        }
                        else if (replyArg & 0x01)
                        {
                            _isOnline = true;
                            T_NOTIFICATION_METHOD::OnUsbInserted(replyArg);
                        }
                        break;

                    case 0x3B:
                        if (replyArg & 0x02)
                        {
                            T_NOTIFICATION_METHOD::OnCardRemoved(replyArg);
                        }
                        else if (replyArg & 0x01)
                        {
                            T_NOTIFICATION_METHOD::OnUsbRemoved(replyArg);
                        }
                        break;

                    case 0x40:
                        T_NOTIFICATION_METHOD::OnError(replyArg);
                        return 0;
                        break;

                    default:
                        // unknown/unsupported command reply
                        break;
                    }
                }
            }
            else
            {
                if (replyArg != 0)
                {
                    T_NOTIFICATION_METHOD::OnError(replyArg);
                    if (_serial.available() == 0)
                    {
                        return 0;
                    }
                }
            }
        } while (command != 0);

        return 0;
    }
Makuna commented 4 years ago

this code seems rather drastic and counter productive.

  if (!isInsertSD) {
    while (!isInsertSD) {
      waitMilliseconds(10);
    }
    mp3.reset();
    waitMilliseconds(10);
  }

Only call reset once, don't keep calling like you are doing here.

Also, it has been found some chips are sending multiple notifications values and the code was updated to support them. A new release has not been made with the changes, but if you get the latest from github it should improve the notification consistency. Please compare your old sketchs to the new examples as the notification callbacks have changed.

hhgyu commented 4 years ago

Updated library

The problem did not solve

#include <DFMiniMp3.h>

bool isStoped = true;
bool isInsertSD = false;

long long nInsertedTime = 0;

class Mp3Notify
{
  public:
    static void OnError(uint16_t errorCode)
    {
      // see DfMp3_Error for code meaning
      Serial.println();
      Serial.print("Com Error ");
      Serial.println(errorCode);
      isInsertSD = false;
      isStoped = true;
    }

    static void OnPlayFinished(DfMp3_PlaySources source, uint16_t track)
    {
      Serial.println();
      Serial.print("Play finished for #");
      Serial.println(track);
      isStoped = true;
    }

    static void OnPlaySourceOnline(DfMp3_PlaySources source)
    {
      if (source & DfMp3_PlaySources_Sd)
      {
        Serial.println("Card online ");
        isInsertSD = true;
        nInsertedTime = millis();
      }
      if (source & DfMp3_PlaySources_Usb)
      {
        Serial.println("USB Disk online ");
      }
    }

    static void OnPlaySourceInserted(DfMp3_PlaySources source)
    {
      if (source & DfMp3_PlaySources_Sd)
      {
        Serial.println("Card inserted ");
        isInsertSD = true;
        nInsertedTime = millis();
      }
      if (source & DfMp3_PlaySources_Usb)
      {
        Serial.println("USB Disk inserted ");
      }
    }

    static void OnPlaySourceRemoved(DfMp3_PlaySources source)
    {
      if (source & DfMp3_PlaySources_Sd)
      {
        Serial.println("Card removed ");
        isInsertSD = false;
        isStoped = true;
      }
      if (source & DfMp3_PlaySources_Usb)
      {
        Serial.println("USB Disk removed ");
      }
    }
};

DFMiniMp3<HardwareSerial, Mp3Notify> mp3(Serial2);

void waitMilliseconds(uint16_t msWait)
{
  uint32_t start = millis();

  while ((millis() - start) < msWait)
  {
    mp3.loop();
    delay(1);
  }
}

void setup()
{
  Serial.begin(115200);
  Serial2.begin(9600, SERIAL_8N1, 16, 17);

  mp3.begin();
  mp3.reset();

  waitMilliseconds(100);
  if (!isInsertSD) {
    while (!isInsertSD) {
      waitMilliseconds(10);
    }

    //mp3.reset();
    waitMilliseconds(100);
  }

  mp3.setVolume(20);

  uint16_t volume = mp3.getVolume();
  Serial.print("volume ");
  Serial.println(volume);

  uint16_t count = mp3.getTotalTrackCount(DfMp3_PlaySource_Sd);
  Serial.print("files ");
  Serial.println(count);
}

void loop()
{
  if (isInsertSD && isStoped) {
    int nAdcData = analogRead(32);
    if (nAdcData > 2000) {
      isStoped = false;
      mp3.playMp3FolderTrack(1);
    }
  }

  waitMilliseconds(100);
}
hhgyu commented 4 years ago
                    case 0x3A:
                        _isOnline = true;
                        T_NOTIFICATION_METHOD::OnPlaySourceInserted(static_cast<DfMp3_PlaySources>(replyArg));
                        break;

Successd log

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
_lastSend : 34, _lastSendSpace : 50, end : 0, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 0, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 4, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 9, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 14, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 19, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 25, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 30, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 36, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 41, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 46, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 52, _isOnline : 1

Com Error 1
Card inserted 
_lastSend : 88, _lastSendSpace : 600, end : 2790, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 0, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 4, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 9, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 15, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 20, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 26, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 31, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 37, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 42, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 48, _isOnline : 1
hhgyu commented 4 years ago

reset is Card Insertd Only One fired

  if (!isInsertSD) {
    while (!isInsertSD) {
      waitMilliseconds(10);
    }
    mp3.reset();
    waitMilliseconds(10);
  }

reset removed. error log Not Working module

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
_lastSend : 34, _lastSendSpace : 50, end : 0, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 0, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 4, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 9, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 14, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 19, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 25, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 30, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 36, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 41, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 46, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 52, _isOnline : 1

Com Error 1
Card inserted 
_lastSend : 88, _lastSendSpace : 600, end : 2790, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 0, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 4, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 9, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 15, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 20, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 26, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 31, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 37, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 42, _isOnline : 1
_lastSend : 2878, _lastSendSpace : 50, end : 48, _isOnline : 1

Com Error 129
volume 0
_lastSend : 2929, _lastSendSpace : 50, end : 10000, _isOnline : 1
files 100

Final Success log

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
_lastSend : 34, _lastSendSpace : 50, end : 0, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 1, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 4, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 9, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 14, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 20, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 25, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 30, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 36, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 41, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 46, _isOnline : 1
_lastSend : 34, _lastSendSpace : 50, end : 52, _isOnline : 1

Com Error 1
Card inserted 
_lastSend : 88, _lastSendSpace : 600, end : 1210, _isOnline : 1
_lastSend : 1298, _lastSendSpace : 600, end : 100, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 100, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 104, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 110, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 116, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 121, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 127, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 133, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 139, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 144, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 150, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 156, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 161, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 167, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 173, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 179, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 184, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 190, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 196, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 202, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 207, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 213, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 219, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 225, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 230, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 236, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 242, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 247, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 253, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 259, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 265, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 270, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 276, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 282, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 288, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 293, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 299, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 305, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 310, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 316, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 322, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 328, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 333, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 339, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 345, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 351, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 356, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 362, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 368, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 373, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 379, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 385, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 391, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 396, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 402, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 408, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 414, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 419, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 425, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 431, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 436, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 442, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 448, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 454, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 459, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 465, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 471, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 477, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 482, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 488, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 494, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 499, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 505, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 511, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 517, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 522, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 528, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 534, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 540, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 545, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 551, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 557, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 563, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 568, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 574, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 580, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 585, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 591, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 597, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 603, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 608, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 614, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 620, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 626, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 631, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 637, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 643, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 648, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 654, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 660, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 666, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 671, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 677, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 683, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 689, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 694, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 700, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 706, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 711, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 717, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 723, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 729, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 734, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 740, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 746, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 752, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 757, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 763, _isOnline : 0
_lastSend : 1298, _lastSendSpace : 600, end : 769, _isOnline : 0
Card online 
_lastSend : 2071, _lastSendSpace : 50, end : 3, _isOnline : 1
_lastSend : 2071, _lastSendSpace : 50, end : 8, _isOnline : 1
_lastSend : 2071, _lastSendSpace : 50, end : 14, _isOnline : 1
_lastSend : 2071, _lastSendSpace : 50, end : 19, _isOnline : 1
_lastSend : 2071, _lastSendSpace : 50, end : 25, _isOnline : 1
_lastSend : 2071, _lastSendSpace : 50, end : 30, _isOnline : 1
_lastSend : 2071, _lastSendSpace : 50, end : 36, _isOnline : 1
_lastSend : 2071, _lastSendSpace : 50, end : 41, _isOnline : 1
_lastSend : 2071, _lastSendSpace : 50, end : 47, _isOnline : 1
_lastSend : 2071, _lastSendSpace : 50, end : 52, _isOnline : 1
volume 20
_lastSend : 2126, _lastSendSpace : 50, end : 22, _isOnline : 1
_lastSend : 2126, _lastSendSpace : 50, end : 22, _isOnline : 1
_lastSend : 2126, _lastSendSpace : 50, end : 26, _isOnline : 1
_lastSend : 2126, _lastSendSpace : 50, end : 32, _isOnline : 1
_lastSend : 2126, _lastSendSpace : 50, end : 37, _isOnline : 1
_lastSend : 2126, _lastSendSpace : 50, end : 43, _isOnline : 1
_lastSend : 2126, _lastSendSpace : 50, end : 48, _isOnline : 1
files 100
Makuna commented 4 years ago

Can you describe what your problem is? Use Google translator if you need to. Have you tried the examples I provide and do they work?

You have two locations in your modified code that send this same debug line with no way to tell which one is sending it. This makes it hard for someone else to even understand your problem.

_lastSend : 925, _lastSendSpace : 600, end : 2503, _isOnline : 0

proddy commented 4 years ago

I've had this "card not inserted" problem before. Turned out that module needs to be powered correctly. 3v3 is too little and 5v is too much. Use a LDO to try and get to around 4.2v. This was on an ESP32 mind you.

hhgyu commented 4 years ago

dfplayer does not work properly when power is applied without a memory card inserted.

It works properly when the power is applied with the memory card inserted.

If you insert the memory card after applying power without inserting it

OnError-> OnPlaySourceInserted

If power is applied while the memory card is inserted

OnPlaySourceOnline

The event fires.

Because OnPlaySourceInserted occurs when this event occurs

_isOnline = true;

I added this line

Schallbert commented 4 years ago

Hi, just a little comment here: Instead of a low dropout voltage regulator you might want to use a standard diode that supports enough current with flat characteristics, like 1A diode 1n4007. My player works well with 5V.
Make sure you prepare for a current surge. Use electrolyte cap >=100u if necessary behind diode for increased stability.

On 9 February 2020 22:09:55 CET, Proddy notifications@github.com wrote:

I've had this "card not inserted" problem before. Turned out that module needs to be powered correctly. 3v3 is too little and 5v is too much. Use a LDO to try and get to around 4.2v. This was on an ESP32 mind you.

proddy commented 4 years ago

@Schallbert thanks for sharing, good advice. I'll add a 1n4007 as you suggested. I also ended up not using an LDO but used a 1K resistor between the Rx and Tx to get it stable with 5V and so far its been ok.

Makuna commented 4 years ago

@hhgyu What platform are you using?

I have found a bug in SoftwareSerial for esp8266 (esp32?) that will cause problems due to bugs in the readBytes method.

But, I think I finally understand your problem. I can confirm this and I have some changes coming to correct this path.

Makuna commented 4 years ago

https://github.com/Makuna/DFMiniMp3/pull/43

Makuna commented 4 years ago

v.1.0.6