DFPlayer Mini mit USB Stick betreiben

Weil? Geht bei mir ohne Probleme.

Build-Optionen wurden verändert, alles wird neu kompiliert
In file included from D:\AVR\TonUINO-DEV_2019-04-26\Tonuino\Tonuino.ino:1:0:

C:\Users\User\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h: In instantiation of ‘uint16_t DFMiniMp3<T_SERIAL_METHOD, T_NOTIFICATION_METHOD>::listenForReply(uint8_t) [with T_SERIAL_METHOD = SoftwareSerial; T_NOTIFICATION_METHOD = Mp3Notify; uint16_t = unsigned int; uint8_t = unsigned char]’:

C:\Users\User\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h:97:27: required from ‘void DFMiniMp3<T_SERIAL_METHOD, T_NOTIFICATION_METHOD>::loop() [with T_SERIAL_METHOD = SoftwareSerial; T_NOTIFICATION_METHOD = Mp3Notify]’

D:\AVR\TonUINO-DEV_2019-04-26\Tonuino\Tonuino.ino:732:14: required from here

C:\Users\User\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h:421:63: error: ‘OnUsbOnline’ is not a member of ‘Mp3Notify’

                         T_NOTIFICATION_METHOD::OnUsbOnline(replyArg);

                                                           ^

C:\Users\User\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h:432:65: error: ‘OnUsbInserted’ is not a member of ‘Mp3Notify’

                         T_NOTIFICATION_METHOD::OnUsbInserted(replyArg);

                                                             ^

C:\Users\User\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h:443:64: error: ‘OnUsbRemoved’ is not a member of ‘Mp3Notify’

                         T_NOTIFICATION_METHOD::OnUsbRemoved(replyArg);

                                                            ^

Mehrere Bibliotheken wurden für “EEPROM.h” gefunden
Benutzt: C:\Users\User\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.23\libraries\EEPROM
Nicht benutzt: C:\Users\User\Documents\Arduino\libraries\EEPROM
Mehrere Bibliotheken wurden für “MFRC522.h” gefunden
Benutzt: C:\Users\User\Documents\Arduino\libraries\MFRC522
Nicht benutzt: C:\Users\User\Documents\Arduino\libraries\MFRC522-1.4.3
exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.

Der Fix ist doch erst seit dem 1.5. in der DEV! :thinking:

Die fehlenden Zeilen habe ich doch händisch nachgetragen.
Du meinst doch die,

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 "));
}
};

Mit 1.0.2 geht es doch auch. Die Lib ist von mir händisch ergänzt wurden.

Aus
case 0x3d:

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

und in der DEV ino habe ich die Class geändert.
Mit 1.0.2 funktioniert es und mit 1.0.3 nicht.

Gerade eben zum 5mal probiert.

Das ist aber nicht die einzige Änderung… lade doch bitte einfach die 1.0.3 über die Library Manager…

Dann hast du da wohl irgendwas falsch gemacht. @paulaner, ganz ehrlich, glaubst du ich habe es nicht 3x kontrolliert bevor ich das ins öffentliche Repo pushe? Ich habe die aktuelle DEV gerade nochmal geladen - als ZIP - und entpackt. In der IDE geöffnet und sie baut problemlos! Meine eigene FW hat den gleichen Fix erhalten. Baut ebenfalls problemlos. Ich weiß nicht was es ist, aber irgend etwas machst du verkehrt. Ich habe ja eine Engelsgeduld, aber irgendwann…

Ok, ich habe die DEV vom 1.5.2019 gezogen und mit der Lib 1.0.3 kompiliert, das geht.

Ich werde mal meine Version mit der neuen vergleichen. Danke für deine Engelsgeduld. :blush:

Hallo mrmaddin
Ich finde die Idee mit dem USB stick super und habe auch eine Lösung für die Strombelastung des Arduino und die Abschaltung der Powerbank.
Dazu wird Pin D6 des Arduino benutzt und zusätzlich ein p-KanalMOSFET durch diesen angesteuert, der die +5V auf den Poweranschluss des USB-Ports schaltet.
Im Scetch müssen dazu ein paar Ergänzungen vorgenommen werden.
Am Einfachsten geht das durch die Suchen Funktion in der Arduino IDE.
Als Suchbegriff "shutdownPin " eingeben und die betreffenden Codezeilen der original-DEV Version kopieren und unmittelbar als nächste Zeile einfügen. Dann die Pinbezeichnung in UsbPowerPin umbenennen. Bei der define den Port 6 statt 7 angeben. So ist die Spannungsversorgung des USB sticks an die Sleep-Funktion angebunden und bei Aktivierung des Sleep-Modus wird der USB Stick abgeschaltet.
MOSFET muss ein P-Kanal Typ sein.
MOSFET wie folgt anschließen:
Sourche an +5V
Drain an USB-Power +
Gate an Pin D6 Arduino
Ich werde das so realisieren und denke es wird funktionieren.

1 „Gefällt mir“

Hi Thomas,
das ist toll. Danke, dass du die Optimierung mit uns teilst. Das werde ich in meiner nächsten Box auch so ergänzen. Fügst du noch ein Link zu dem MOSFET ein, den du verwendet hast?

Für Menschen, die Auto-Abschaltung mit Batterie-Packs nicht benötigen: Es geht auch ohne :wink: .

Gruß, Martin

Hier der Link zum MOSFET auf e-bay. Es handelt sich aber um SMD Bauteile, die sich aber mit den 6 pins gut auf einer 2,5mm Lochrasterplatte auflöten lasen.


Hier noch ein anderer Link.
Dieser MOSFET hat normale Pins kann für die UsbPower Schaltung verwendet werden, abfür die Aufweckfunktion der Powerbank, Siehe mein anderer Beitrag, nicht geeignet ist. Dafür ist die Tresholdspannung mit ca 4 V zu hoch.

@Thomas-Lehnert Vielleicht magst du das in Zukunft in ein posting packen Danke. :pray:

der FDC638P hat ca 65mOhm Rdson - sollte funktionieren, jedoch der IRF9120 mit 0.48Ohm hat evtl zu viel Spannungsabfall im eingeschalteten Zustand (0.5Ohm * 0.1A = 50mV)

Ich habe beide MOSFET ausprobiert. Der FDC638 funktioniert tadellos. Mit dem IRFD 9120 funktioniert das Aufwecken der Powerbank nicht. Habe ich aber auch so beschrieben. Ich habe für beide Funktionen, TonUINO Ein und Ausschalten, sowie USB Power für USB Stick jeweils den FDC638 verwendet.

Hat jemand schon Erfahrungen gesammelt, wie das Timing mit USB stick funktioniert.
Bei mir funktioniert grundsätzlich alles, sowohl mit SD Karte als auch mit USB stick. Einziger Unterschied ist, dass die Wiedergabe der Titel und Ansagen mit USB Stick deutlich verzögert im Vergleich zur SD Karte abläuft. Ich verwende einen Intenso Mini USB Stick USB-2, 32 Gb.
Habe im Moment keinen USB-3 Stick zum Vergleichen. Also wer hat da schon Erfahrungen.

Meine Erfahrungen sind da geteilt.

Ich habe hier etliche Sticks, 2.0/3.0, NoName, Name, USB Micro SD-Adapter etc., aber alles kann und werde ich nicht testen.
Warum, ich habe auch beim Einsatz von schnellen MicroSD Karten verzögerte Wiedergabe festgestellt.
Meiner Meinung nach kommt es von fragmentierten speichern.
Nach einer ordentlichen Übertragung auf die SD Karte hat sich das gegeben.

Mit meinem jetzigen 8GB Stick von SanDisk gibt es keine Probleme.


(von Tante Wiki)

Das wird keinen generellen Unterschied machen, USB3.0-Sticks werden nur im 2.0-Modus betrieben. Für SuperSpeed benötigt man weitere Datenleitungen sowie einen passenden Controller, den der DFPlayer wohl eher nicht hat.

Nachtrag: Manchmal sind in USB3.0-Sticks schnellere Speicherchips verbaut, von denen auch langsamere Verbindungen profitieren, aber von dem was ich bisher gelesen habe ist der Player der Flaschenhals.

1 „Gefällt mir“

Das DFPlayer USB Interface ist das Java der USB Interfaces. Quasi.

1 „Gefällt mir“

Hallo Martin,

wie genau kann ich denn den Code ändern, sodass ich den internen Speicher nutzen kann ? Im Arduino oder woanders ?

Ich werde nämlich einige dieser Module brauchen, sodass ich nicht jedes mal eine Speicherkarte verwenden will.

Wäre toll, wenn du mir da helfen kannst !

Viele Grüße
Moritz

Die Codeänderungen um statt der SD-Karte einen USB-Stick als Speichermedium verwenden zu können, kannst du dir in der Software von @Thomas-Lehnert ansehen. Dort gibt es

Immer, wenn das define auftaucht, musst du die Software anpasen. Du kannst natürlich auch einfach seinen Fork verwenden
Dann musst du aber genau schauen, dass du die defines auf deine Bedürfnisse anpasst und dich mit allen Änderungen vertraut machst. Die Software ist u.a. In der Software-FAQ verlinkt.

Du nutzt dann aber keinen internen Speocher, sondern schließt eine USB-Buchse am den Player an.