DFPlayer Indexierung

Hallo Zusammen,

ich habe ein Problem mit der Indexierung beim DFPlayer.

Ich nutze den DFPlayer an einem Arduino Pro Mini 5V - 16bit.
Ich verwende die Library DFPlayerMini_Fast (mit der regulären tritt das Problem ebenfalls auf)
Die SD-Karte ist formatiert FAT32, alle Dateien sind 0001.mp3 - 0010.mp3 benannt und auch in der Reihenfolge auf die Karte in den Ordner /mp3 kopiert.

Ziel ist es auf Button-Druck einen zufälligen Track (von 10 vorhandenen Tracks) aus dem mp3 Ordner abzuspielen.

Mein Code ist einfach gehalten:

#include <SoftwareSerial.h>
#include <DFPlayerMini_Fast.h>


SoftwareSerial mySerial(10, 11); // RX, TX
DFPlayerMini_Fast myMP3;


int randomInt;
int bt1 = 3;

void setup()
{
  
  pinMode(bt1, INPUT_PULLUP);

  Serial.begin(115200);
  mySerial.begin(9600);
  myMP3.begin(mySerial);
  Serial.println("Lautstärke Max");
  myMP3.volume(25);
}

void loop()
{
  if (digitalRead(bt1)==false)
  {
    randomInt = random(1, 11);
    Serial.println("Zufälliger Sound");
    Serial.println(randomInt);
    //myMP3.playNext();
    myMP3.play(randomInt);
    delay(2000);
  }
}

Schaltung siehe angehängtes Bild.

Mein Problem:

Auf Button-Druck werden zwar zufällige Nr generiert, aber sie stimmen nicht mit den Dateien überein. Dh. random generiert die 9 und abgespielt wird die Nr.5. Es ist allerdings nicht zufällig wie die Dateien abgespielt werden, es werden quasi jede 2. Datei abgespielt:

Wenn Random 1 generiert - wird 1 abgespielt
2 generiert - wird nichts gespielt
3 generiert - wird 2 gespielt
4 generiert - wird nichts gespielt
5 generiert - wird 3 abgespielt
6 generiert - wird nichts abgespielt
7 generiert - wird 4 abgespielt
8 generiert - wird nichts abgespielt
9 generiert - wird 5 abgespielt
10 generiert - wird nichts abgespielt

Ich stehe irgendwie auf dem Schlauch und komme nicht dahinter? Was übersehe ich ;-/

Danke

blendit360:
... in den Ordner /mp3 kopiert.

Wäre dann nicht playFromMP3Folder die richtige Wahl?

Was mich an deinem "Dateiaufruf" wundert ist, dass du nur Zahlen ausgibst.
Ich habe in Erinnerung, (ist schon etwas länger her, die letzte DFPlayer Programmierung) dass man den kompletten Namen übertragen muss.

Oder sollte ich mich da täuschen ?

HotSystems:
Oder sollte ich mich da täuschen ?

Aus der Doku:

[sup]◆ play()
void DFPlayerMini_Fast::play ( uint16_t   trackNum ) 

Play a specific track.

Parameters
    trackNum The track number to play.

◆ playFromMP3Folder()
void DFPlayerMini_Fast::playFromMP3Folder ( uint16_t   trackNum ) 

Play a specific track in the folder named "MP3".

Parameters
    trackNum The track number to play. [/sup]

agmue:
Aus der Doku:

Ja, danke.....stimmt.
Ich habe grad selbst nochmal nachgelesen.

Allerdings der "play" Aufruf aus dem mp3-Ordner ist so auch ok.

agmue:
Aus der Doku:

[sup]◆ play()

void DFPlayerMini_Fast::play ( uint16_t  trackNum )

Play a specific track.

Parameters
    trackNum The track number to play.

◆ playFromMP3Folder()
void DFPlayerMini_Fast::playFromMP3Folder ( uint16_t  trackNum )

Play a specific track in the folder named “MP3”.

Parameters
    trackNum The track number to play. [/sup]

Das war der Fehler! Danke so funktionierts. Es wundert mich nur, dass play() dann trotzdem funktioniert!

HotSystems:
Was mich an deinem “Dateiaufruf” wundert ist, dass du nur Zahlen ausgibst.
Ich habe in Erinnerung, (ist schon etwas länger her, die letzte DFPlayer Programmierung) dass man den kompletten Namen übertragen muss.

Oder sollte ich mich da täuschen ?

Der Dateiaufruf funktioniert mit den Track-Nr.
Der Code sieht dann so aus und funktioniert:

#include <SoftwareSerial.h>
#include <DFPlayerMini_Fast.h>


SoftwareSerial mySerial(10, 11); // RX, TX
DFPlayerMini_Fast myMP3;


int randomInt;
int bt1 = 3;

void setup()
{ 
  pinMode(bt1, INPUT_PULLUP);
  Serial.begin(115200);
  mySerial.begin(9600);
  myMP3.begin(mySerial);
  Serial.println("Lautstärke Max");
  myMP3.volume(25);
}


void loop()
{
  if (digitalRead(bt1)==false)
  {
    randomInt = random(1, 11); // min - max
    Serial.println("Zufälliger Sound");
    Serial.println(randomInt);
    myMP3.playFromMP3Folder(randomInt);  
    delay(1000);
  }
}

Vielen Dank für die Hilfe!

blendit360:
Das war der Fehler! Danke so funktionierts. Es wundert mich nur, dass play() dann trotzdem funktioniert!

Das hängt mit dem Dateisystem zusammen.

Wenn Du die Karte formatierst und dann alle Dateien in das Hauptverzeichnis legst und Deinen (Ursprungs-)Sketch laufen lässt, geht das auch.

blendit360:
Das war der Fehler! Danke so funktionierts. Es wundert mich nur, dass play() dann trotzdem funktioniert!
Der Dateiaufruf funktioniert mit den Track-Nr.

Prima, dass es funktioniert und danke für die Rückmeldung.

Ich habe meinen Irrtum schon erkannt, danke.

Kurze Nebenfrage evtl. weiss es jemand zufällig.

Die LED auf dem DFPlayer, kann man die auslösen zu Stromsparzwecken oder ist das problematisch?

Danke

blendit360:
Die LED auf dem DFPlayer, kann man die auslösen zu Stromsparzwecken oder ist das problematisch?

Kann man.

Aber ist es wirklich sinnvoll, (3,3 - 2) V / 1 kΩ = 1,3 mA zu sparen?

Wenn man sich das Schaltbild dazu ansieht, sollte das problemlos funktionieren.

Ok, agmue war schneller.

agmue:
Kann man.

Aber ist es wirklich sinnvoll, (3,3 - 2) V / 1 kΩ = 1,3 mA zu sparen?

Naja, mit den LEDs am Pro Mini ist dass dann in der Summe schon mehr. Ich habe nur Platz für 2xAA leider.

blendit360:
Naja, mit den LEDs am Pro Mini ist dass dann in der Summe schon mehr. Ich habe nur Platz für 2xAA leider.

Na dann....wech damit und vorsichtig auslöten.

Mein ganzer Plan scheint eh nicht aufzugehen.

Der DFPlayer läuft entgegen seinen Angaben wohl nicht gut mit 3.3V. :roll_eyes:

Meine Frage: Hat jemand den DFPlayer schon mit 3.3V betrieben? Ich bekomme da nur ein Brummen und klackern. Dh. der Sound springt kurz an und dann nur noch lautes Brummen. Scheint als würde die Spannungsversorgung zusammenbrechen lt. anderen Foren.

blendit360:
Mein ganzer Plan scheint eh nicht aufzugehen.

Der DFPlayer läuft entgegen seinen Angaben wohl nicht gut mit 3.3V. :roll_eyes:

Meine Frage: Hat jemand den DFPlayer schon mit 3.3V betrieben? Ich bekomme da nur ein Brummen und klackern. Dh. der Sound springt kurz an und dann nur noch lautes Brummen. Scheint als würde die Spannungsversorgung zusammenbrechen lt. anderen Foren.

Wo holst du denn die 3,3V her.
Da muss schon ein bischen Strom vorhanden sein.

Am besten einen eigenen Spannungsregler spendieren, dann gibt es auch keine Geräusche.

HotSystems:
Wo holst du denn die 3,3V her.
Da muss schon ein bischen Strom vorhanden sein.

Am besten einen eigenen Spannungsregler spendieren, dann gibt es auch keine Geräusche.

Aktuell test ich es an einem Labor-Netzgerät. Selbst da bring ich es einfach nicht zum laufen.

blendit360:
Aktuell test ich es an einem Labor-Netzgerät. Selbst da bring ich es einfach nicht zum laufen.

Das sollte dann reichen.
Kannst du dann den Strom messen ?
Leider habe ich keine Vergleichswerte, da bisher noch nicht an 3,3V betrieben.

Ein zweites Modul hast du nicht zum Testen ?

blendit360:
Der DFPlayer läuft entgegen seinen Angaben wohl nicht gut mit 3.3V. :roll_eyes:

Ich habe es gerade mal mit einem ESP32 probiert und da muß ich Deine Aussage leider bestätigen. ESP32 über USB und DFPlayer mittels Netzteil und mit und ohne StepDown (wegen Spindelpoti feinfühliger einzustellen) versorgt. Ab 3,6 V hört das Schnattern im 25Ω-Lautsprecher langsam auf.

blendit360:
Mein ganzer Plan scheint eh nicht aufzugehen.

Dann bedarf es eines neuen Plans: VCC vom ProMini unbeschaltet, eine Spannung 4 bis 5 V an RAW vom ProMini und VCC vom Player.

Hallo,

ich habe bisher keinen DF-Player vernünftig mit 3,3V betreiben können, habe die bisher immer mit 5V betrieben. Ansonsten ist bei nutzbaren Lautstärken immer das "Schnatter" zu hören.
Ein "Schlaflied" Player für die Enkelin , läuft mit einen 5V Steckernetztteil 1A , von C.. einem WMos D1 (Nachnau) und einem DF Player. (beides von AZ) Lautsprecher 3W 8Ohm. Wlan ist abgeschaltet. Das Ding läuft jetzt seit einem Jahr und wird täglich genutzt.

Das Steckernetztteil wird über eine Rundbuchse in das Gehäuse geführt, und geht von da jeweils auf den DF Player und den Wmos. Beides sitzt auf einen Lötraster-Platine. Vor dem 5V Versorgungspin am Wmos sitzt eine Stechbrücke die ich rausnehmen kann wenn ich den Wmos am PC anschliesse ( z.B download) Zur Pegelanpassug Richtung Wmos gibts passende Widerstände.

Heinz

Hallo Zusammen,

Ich hab es jetzt gelöst (zumindest funktioniert es so). Die Lösung war den Arduino in der Spannungsversorgung nach dem DFPlayer zu hängen. Scheint als würde der Arduino soviel Strom ziehen, dass der DFPlayer den Lautsprecher nicht richtig ansprechen kann (leider über meinem Verständnis). Ich hänge mal zwei Bilder an, so funktioniert es aktuell bis 3.2V (Labor-Netzteil). Ist nicht die schönste Lötarbeit, aber ich werds nicht zu einem Wettbewerb anmelden :). Ich hoffe man kann es nachvollziehen.

Das ganze hat einen Switch für ON/Off, einen Button um im Code myMP3.playFromMP3Folder(randomInt); auszulösen und eine Stromversorgung über aktuell 4xAA. Ich weiss, der DFPlayer ist bis 5V angegeben, aktuell funktioniert es so, bereits seit 2h ohne Ausfall. Eventuell teste ich mit 3xAA.

Grüße
Frank