Closed hhgyu closed 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.
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);
}
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
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
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
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.
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
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.
@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.
@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.
v.1.0.6
I can't speak English
change sendPacket function
log
example source
change listenForReply function