DFPlayer Mini mit USB Stick betreiben

#1

Hallo zusammen,
nachdem unsere “Noninoni” (so sagt mein Sohn) nach einem Umbau nach jedem Track stoppte bin ich auf die Suche gegangen. Ich habe statt der Mikro-SD Karte eine USB Buchse an die entsprechenden Ports des DFPlayers angeschlossen und nach aussen geführt. Nach ein wenig Recherche habe ich den Fehler in der Lib DFMiniMP3 entdeckt. In Zeile 407 (Stand heute) wird der Return Code für das Ende eines Lieds ausgewertet. Das ist eine Bytekette, in der für die Mikro-SD-Karte das Byte 0x3d vorkommt. Wird von USB Stick oder sogar von internem Flash-Speicher (???) gespielt muss auf weitere Codes gehört werden, um den nächsten Track zu starten.

Ich habe Michael “Makuna” Miller eine Nachricht mit der Bitte zukommen lassen seinen Code zu erweitern. Wer das alles sofort möchte ergänzt den Code folgendermaßen:

Aus
case 0x3d:

mach
case 0x3d: // micro sd
case 0x3c: // usb

Anschließend muss die Lib neu kompiliert werden. Da ich nicht sicher bin, wie genau die Arduino IDE Dateien, die durch anderen Editoren geändert wurden überwacht, habe ich einmal ein anderes Board ausgewäht, kompiliert, zurück auf Arduino Nano gestellt und noch einmal kompiliert. Fertig ist der Lack.

Viel Spass mit USB Sticks,
Martin

4 Likes

TonUINO stoppt nach jedem Titel
#2

Guter Fund! Ich habe zwar hier noch niemanden getroffen, der USB oder gar externes Flash verwendet, aber wenn Makuna die zwei case hinzufügt - warum nicht. Wer weiß wofür es mal gut ist. Ich habe allerdings keinen Pullrequest gesehen. Hast du ihn ausserhalb von GitHub kontaktiert und die Anpassung nicht selbst gemacht?

0 Likes

#3

Ich hatte ihm erst einmal per Mail geschrieben. Ich habe jetzt ein Pull-Request erstellt.

Ich finde die interne Lösung mit der Micro-SD-Karte zu fummelig, um die Musik auf der Box zu tauschen. Die Verlängerung mit so einem Extender-Kabel lässt sich nur schwierig in die Box integrieren. Ein Mini-USB-Stick ist da eine hervorragende Angelegenheit.

Für einen übersichtlichen Obolus gibt’s gut verlötbare und integrierbare USB-Buchsen. Die Belegung geht so:
Schwarz = GND
Rot = +5V
Weiß = USB- / Data-
Grün = USB+ / Data+

Diese Mini-USB Verlängerung für die Stromversorgung passt nachdem man einen halben Millimeter auf jeder Seite entfernt hat super in den Schacht des originalen Lautsprecheranschlusses.

2 Likes

#4

Perfekt! Danke.

Ist echt ne sehr gute Idee, allerdings nicht 100% “tamper proof” oder? Wie verhinderst du, das $Kind den Stick abzieht? Und was mich interessieren würde, in Hinblick auf automatische Abschaltung einer evtl. vorhandenen Powerbank, wirkt sich der USB Stick Einsatz gegenüber der SD Karte negativ auf den Stromverbrauch aus? So daß die Powerbank nicht abschaltet? Hast du da Erfahrungen?

0 Likes

#5

Es ist nicht 100% sicher, das stimmt. Der USB-Stick geht dafür aber auch nicht ganz so schnell verloren, wie eine Micro-SD-Karte. Sollte es mein Kind schaffen ihn da rauszuziehen (sitzt straff und ist durch die kompakte Größe schwer zu greifen) , denke ich mir noch eine zusätzliche Sicherung aus.

Bezüglich der Autoabschaltung habe ich noch keine Erfahrung, an dieses “kostenlos” Feature der Powerbanks habe ich bishr noch nicht mal gedacht ^^ . Ich probiere es aus und gebe noch einmal Feedback.

0 Likes

#6

Kannst du dabei mal die Stromstärke messen (TonUINO einmal in Idle und einmal in Standby)?

Evtl. wäre die Verwendung eines USB-Stick statt einer SD-Karte ja die Lösung für SD-Verlängerungskabel verhindert Poweroff

0 Likes

TonUINO stoppt nach jedem Titel
#7

Danke für dein Update!!!
Habe gerade das DFMiniMP3 -Master bei Git runter geladen und das ZIP neu eingebunden.
Leider bekomme ich beim Kompilieren folgenden Fehler für alle USB Einträge
error: ‘OnUSBInserted’ is not a member of ‘Mp3Notify’ T_NOTIFICATION_METHOD::OnUSBInserted(replyArg);

Wo mache ich einen Fehler.
Finde die Idee mit dem mini USB Stick TOP!

0 Likes

#8

Ohne jetzt 100% sicher zu sein klingt es danach, dass du zwar die Lib neu eingespielt hast, aber die 3 neu definierten Methoden nicht implementiert hast. In Zeile 33 des aktuellen Tonuino Masters beginnt die Klasse MP3Notify. Die sollte nach deiner Bearbeitung in etwa so aussehen:

class Mp3Notify {
public:
  static void OnError(uint16_t errorCode) {
    // see DfMp3_Error for code meaning
    Serial.println();
    Serial.print("Com Error ");
    Serial.println(errorCode);
  }
  static void OnPlayFinished(uint16_t track) {
    Serial.print("Track beendet");
    Serial.println(track);
    delay(100);
    nextTrack(track);
  }
  static void OnCardOnline(uint16_t code) {
    Serial.println(F("SD Karte online "));
  }
  static void OnUSBOnline(uint16_t code) {
    Serial.println(F("USB Stick online "));
  }
  static void OnCardInserted(uint16_t code) {
    Serial.println(F("SD Karte bereit "));
  }
  static void OnUSBInserted(uint16_t code) {
    Serial.println(F("USB Stick bereit "));
  }
  static void OnCardRemoved(uint16_t code) {
    Serial.println(F("SD Karte entfernt "));
  }
  static void OnUSBRemoved(uint16_t code) {
    Serial.println(F("USB Stick entfernt "));
  }
};

Gruß, Martin

1 Like

#9

DANKE das war es!
Dachte die muss ich nur einfügen wenn ich auch einen USB nutzen möchte.

0 Likes

#10

Super, danke.
Ich habe die Library geändert, neue DEV geändert und hochgeladen, einen USB Stick genommen. Die SD Karte entfernt.
Alles ok.

0 Likes

#11

Makuna hat den PR mittlerweile gemerged. Du kannst die Library hier runterladen:

Über den Library-Manager bekommt man noch nich die Version mit der Anpassung, da muss erst ein neues Release gemacht werden. Wenn die Änderung ordentlich getestet wurde werde ich Makuna darum bitten.

2 Likes

#12

Bezüglich der Autoabschaltung habe ich noch keine Erfahrung, an dieses “kostenlos” Feature der Powerbanks habe ich bishr noch nicht mal gedacht ^^ . Ich probiere es aus und gebe noch einmal Feedback.

Gibt es mittlerweile Erfahrungen bezüglich Selbsabschaltung mit Nutzung eines USB Sticks.
Wie immer DANKE schon mal!!!

0 Likes