DFPlayer verschiedene Versionen

Kannst du denn den Player allein starten mit einer Brücke zwischen ADKEY1 und GND ?

Im Prinzip läuft der Player mit dem Chip bei mir. Allerdings werden bestimmte Funktionen nicht korrekt unterstützt. z.B. liefert getFolderTrackCount() mehr Dateien als es sollte (58 statt 33, habe das aber nicht näher untersucht). Im Bereich playAdvertisement() gibt es ebenfalls Probleme die andere Chips nicht haben. Den Com error 3 hab ich auch ab und zu beobachtet (bei zu schnellem Tastendrücken z.B. oder einfach so beim Start). Nach dem stromlos machen hat es dann aber auch mal Funktioniert. Ich vermute die Firmware ist einfach extrem Buggy. Dann ist mir noch aufgefallen, daß ein sehr lauter Einschaltton vorhanden ist. Viel lauter als bei anderen Playern. Mehr ab ich dann auch nicht mehr getestet, ich kann Player mit diesem Chip (zumindest mit dem aktuellen Firmwarestand von selbigem) nicht für den TonUINO empfehlen. Ich habe die #hardware FAQ entsprechend angepasst.

Die Hersteller werden aber vermutlich alle auf diesen Chip wechseln müssen, da der ursprüngliche Chip auf dem die meisten DFPlayer bis dato basieren nicht mehr hergestellt wird. Kann man nur hoffen, daß andere da eine bessere und kompatiblere Firmware hinbekommen.

Das habe ich nicht probiert. Dieses direkte Abspielen ersetzt ja nicht alle Funktionen, die man über die serielle Schnittstelle hat, oder?
Aktuell ist für weitere Tests etwas die Luft raus, weil die letzte Box mit dem letzten funktionieren DFPlayer fertig ist.

@stephan: Danke für deine Recherche.
Ich nehme an, den Chip mit einer aktuelleren, gefixten Firmware (falls es denn in Zukunft eine gibt) nachträglich zu bespielen ist (für normale Bastler) nicht möglich? Falls nicht, wären sie für mich aktuell ein Fall für den Elektroschrott. hmpf

Dann hoffe ich, dass die mittlerweile bestellte neue Charge (mit …-24SS Chip) bei mir dieses Mal die richtige ist. Falls ich in Zukunft nochmal eine Box (oder ähnliches) bauen sollte.

Das hoffe ich auch.
Auch wenn es ein bisschen Off-topic wird:
Wie ist das aber bei den ganzen Boxen, die einen „eingebauten“ DFPlayer (SD-Kartenmodul +x?) auf ihrer Platine haben, wie bspw. die AiO-Platine bzw. beim ESPuino Ansatz? Dort ist doch auch ein SD-Kartnemodul angesteuert, also vermutlich auch ein Chip mit entsprechender Firmware? Sprich wenn der klassische DFPlayer in Zukunft nicht mehr verfügbar ist, wäre das eine einfache Alternative für zukünftige Bastler?

Das ist ja alleine deswegen schon nicht möglich weil niemand ausser dem Hersteller die Firmware hat.

Das sind Äpfel und Birnen. Nur weil etwas einen SD-Card Slot hat ist da ja nicht zwingend ein Chip drauf der in hardware mp3 dekodiert. Das von dir angesprochene Projekt dekoriert die mp3s in Software.

Die neue Lieferung funktioniert. :slight_smile:

Die heißen zwar auch nicht wie beworben und der große Chip hat auch nur 16 Pins, aber ein erster Test hat funkioniert.

Drauf steht: GD3200B 201225679F

Ich hätte also noch iirc 8 Stück MP3-TF-16P mit MH2024K-16SS Chip herumliegen.
Die sind jetzt kostenfrei abzugeben. Wer Bedarf hat, darf sich gern melden.

Hallo Bastelmatz, hallo zusammen,

bei uns hat der Osterhase auch einen Tunoino gebracht, nur leider hab ich das Thema etwas unterschätzt.
Der Player läuft zwar, d.h. er Spielt Musik ab, wenn man eine Karte aufgelegt hat und willkürlich Tasten gedrückt hat, jedoch spielt er die Ansagen nicht ab. D.h. er ist kaum bedienbar.
Nach etwas Recherche bin ich dann darauf gestoßen, dass es ggf. am SD Kartenleser liegt. Ich habe auch einen GD3200B 201207679F. Letzteres sollte der Datecode des chips sein.
Bestelmatz, funktioniert bei dir alles einwandfrei? Wenn ja, was hast du gemacht? Welche Firmware nutzt du?
Auf der Karte sind natürtlich die beiden Ordner „advert“ und „mp3“ drauf.
Vielen Dank für eure Hilfe.
VG
Michael

Oha, danke für den Hinweis. :flushed:
Ich hatte es nur kurz an meiner Coinbox getestet, weil ich dort den DFPlayer einfach wechseln kann.
Es hatte anfangs funktioniert. Dann habe ich den alten DFPlayer wieder reingesteckt und die GD3200B nicht weiter im Einsatz / getestet.

Ich habe es nochmal an der Coinbox getestet und scheinbar ist da wirklich etwas falsch/anders mit dem Chip. Sporadisch bekomme ich den Com Error 3, manchmal spielt er einen Titel ab, meistens nur den Coin-Sound Advertisement Titel. Welche Befehle aus der Bibliothek von Makuna da nun richtig funktionieren und welche nicht, und/oder ob es grundlegende Probleme/Unterschiede bei der seriellen Kommunikation sind … ich habe keine Ahnung.

Vielleicht funktionieren andere Bibliotheken?
Vermutlich müsste man ausgiebigere Tests an Hardware bzw. Software machen, um der Sache auf den Grund zu gehen.

Scheinbar findet man dazu per einfachem Googlen auch nicht viele Infos.
Hier habe ich noch eine kurze Diskussion bez. DFPlayer Chips/Typen gefunden. Allerdings (aktuell) auch ohne gewinnbringende Info bez. des GD3200B.

Hallo zusammen,

ich habe ebenfalls den GD3200B (5x per Aliexpress 5x Az-Delivery Amazon) leider habe ich das gleiche Problem, was @mihi beschreibt. Je nachdem was ich auf den SD-Karten(2GB;16GB,32GB ordentlich formatiert) habe werden entweder nur Admin Menu Sound oder nur Hörspiele abgespielt. zwischendurch hatte ich auch alle Funktionen aber da war nur ein Soundfile auf der SD-Karte.

Ich habe mir jetzt nochmal andere bestellt, trotzdem finde ich das sehr ärgerlich.
Der GD3200B Chip, scheint sich zunehmend zu verbreiten oder hatte ich nur Pech?
Hat einer eine Idee, was ich noch probieren könnte?

Der Serielle Monitor erkennt fleißig Signale, gibt auch keine Fehlermeldungen aus.

Ich habe nun einen JC AA20HFJ648-94 bekommen, damit funktioniert bisher alles wie gewollt.

Hattest du die Player bei AZ-Delivery reklamiert? Oder einfach neue bestellt? Wenn ja, wo?

@Manuel AZ-Delivery schicke ich mit entsprechendem Grund und Bewertung zurück., auf einen Umtausch/Rückabwicklung wollte ich jetzt nicht warten bzw. da hatte ich nicht drüber nachgedacht.
Die neuen habe ich bei Ebay bestellt, aus Deutschem Lager mit schneller Lieferzeit -> bei berrybase/Sertronics GmbH

Ich habe versucht den GD3200B Chip zu analysieren und zum Laufen zu bekommen.
Leider nur mit Teilerfolg.

Bei mir war das Abspielen von Advertisement und MP3 Track (also aus den Ordnern „advert“ und „mp3“) problematisch.

  • Advertisement abspielen funktioniert nur, wenn ein Titel gespielt wird.
  • mp3.start() -> Advertisement abspielen -> mp3.pause() verursacht Fehler
    • Nachher sind andere Funktionen u.U. auch fehlerhaft
      • bspw. der getFolderTrackCount wird falsch ermittelt oder es treten Com Error 3 auf
      • Diese Fehler treten auch nach Neustart / Neubeschreiben wieder auf
      • Einen Titel aus einem normalen Ordner 1-99 abspielen + ggf. Neustart scheinen das zu beheben.
  • playMp3FolderTrack war generell problematisch/fehlerhaft mit ähnlichen Folgefehlern wie oben

Daher wäre mein Lösungsansatz mit diesem Chip:

  • Alle MP3Track Aufrufe durch Titel in den Ordnern 1-99 ersetzen (oder notfalls ganz entfernen).
    • Im Prinzip sollte das kein großer Nachteil sein, da das Abspielverhalten das gleiche ist wie bei PlayFolderTrack
    • Man muss nur den Inhalt
      • in einer der Ordner 1-15 verschieben und die Titel per playFolderTrack16(folder, track) aufrufen -> mein Favorit
        • Dann kann/muss man die aktuelle 4-Ziffer-Nummierung beibehalten
      • oder auf mehrere Ordner verteilen und per playFolderTrack(folder, track) aufrufen
        • Dann muss man die Nummierung aber auf 3-Ziffern ändern und bei den Aufrufen die jeweiligen Ordner berücksichtigen
  • Advertisement Titel nur dann abspielen, wenn ein Titel abgespielt wird (also der Player busy ist).

Dann sollte der DFPlayer mit diesem Chip wie gewohnt funktionieren. Oder zumindest ausreichend gut. Ich habe es bisher nur an meiner Coinbox testen können, weil die anderen DFPlayer fest eingebaut sind.

Update

Nach den Erkenntnissen hier:

und ein paar weiteren Versuchen ist meine aktuelle Einschätzung der Einschränkungen bzw. nötigen Software-Anpassungen:

  • Advertisement abspielen funktioniert nur, wenn ein Titel gespielt wird.
  • Advertisement und MP3 Track erzeugen ein FinishTrack Event (iirc ist das bei den anderen DFPlayern nicht)
    - getFolderTrackCount(folderNumber) ignoriert den Ordner-Parameter
    • es gibt immer die Dateienanzahl des Ordners zurück, der gerade aktiv läuft
    • wenn kein Titel läuft, den Wert der letzten Abfrage, als ein Titel lief.
  • Unter Umständen sind einzelne Verzögerungen (delays) nötig, bspw. nach dem Starten des Players bzw. eines Titels

Advertisement und MP3 Track funktionieren sonst wie gewohnt.

Für das getFolderTrackCount Problem nutze ich aktuell einen „000 - Silence.mp3“ Track (1 Minute Stille :slight_smile:), den ich in jeden Ordner (zumindest mal 01-99) platziere und vor der Abfrage abspiele. So bekommt der Nutzer von der Abfrage nichts mit und ich bin sicher, dass der aktuell, laufende Titel aus dem Ordner ist, den ich auch abfragen will.

  • WIP: Evt. könnte man die Abfrage-Ergebnisse auch speichern und beim nochmaligen getFolderTrackCount-Aufruf für einen bereits ermittelten Ordner nur diesen Wert zurückgeben und ein erneutes Abspielen vermeiden. Schließlich ändert sich die Anzahl der Dateien auf der SD-Karte während des Abspielens i.d.R. nicht.

Das ist aber doch keine Einschränkung sondern „by design“.

Sowohl der Player auf meiner AiO (MH-ET LIVE (MH2024K-24SS)) als auch der in meinem Classic-Aufbau (JL) erzeugen das ebenfalls.

Ja das sollte auch so sein (und zwar idealerweise nur einen, leider gibts auch Player die erzeugen zwei). Bei Advertisements will man das aber auf keinen Fall haben.

Ja irgendwie schon.
Aber mit den anderen Playern konnte man die eben auch abspielen, wenn gerade nichts lief. Man konnte den Player starten ohne konkret einen Titel abzuspielen und konnte Advertisement Titel nutzen. Jetzt müsste ich dafür

  • eine Titel-Kopie bei den MP3 Tracks ablegen (und MP3 statt Advertisement abspielen, wenn nichts läuft)
  • oder vorher einen „Silence“-Track laden/starten (und nachher pausieren)
  • oder irgendeinen Musik-Titel laden/starten, hoffen das bis zum Abspielen des Advertisement nichts anderes zu hören ist (und nachher pausieren)

Ist also eine Einschränkung der Zweckentfremdung. :wink:

Aber das bringt mich auf die Idee, im Falle eines pausierten Musik-Titels könnte ich den Player wieder starten/fortsetzen - vllt. spielt es das Advertisement dann ohne das vorher etwas vom Titel zu hören ist. Nachher natürlich wieder pausieren. Eine solche Funktion hatte ich schon drin, aber das hatte bei Programmstart Probleme gemacht, wenn ich eben noch keinen Musik-Titel gestartet hatte. Eine Erkennung, ob ein Musik-Titel gerade pausiert ist, war bisher nicht drin.

Bez. des FinishEvents:

Ich habe es in meinem Fork so gelöst (hoffe ich):

  • Beim Abspielen wird Ordner und Track Nummer gespeichert
    • Im FinishEvent kann ich dann Advertisement und MP3 Track Events anhand des Ordners rausfiltern
  • Das doppelte Event hatte ich mit einem MH2024K-24SS auch (mit dem GB3200B noch nicht)
    • Da das fast zur gleichen Zeit erscheint, wird das zweite Event ignoriert

Das mag bei dem ein oder anderen Player mit der ein oder anderen Firmware vielleicht gehen. Aber normalerweise bekommst du dann einen error 7 (DfMp3_Error_Advertise).

Ich verstehe auch das Problem hier nicht. Ich habe schon immer den Inhalt der Ordner mp3 und advert synchron gehalten und dann je nach Situation das ein oder das andere abgespielt. Adverts setze ich bei mir zudem nur sehr sparsam ein (da es eben auch Player gibt die dann finish track events haben, was dann unschön ist wenn der eigentliche Track vorbei ist, vor allem wenn es mehrere Adverts waren).

Das ist doch schon verwirklicht worden bei den Modifikationskarten, wo ein Jingle beim Auflegen oder deaktivieren über den advert ordner abgespielt werden. Da spielt man ein File ganz kurz an, spielt dann den Jingel und nochmal ganz kurz das File. Das hat bei mir aber bei einigen Playern Probleme gemacht, deshalb habe ich das bei mir für das Auflegen der Mod-Karte rausgenommen. Aber im Prinzip baut das darauf auf, dass ein advert-track nur bei laufender Wiedergabe eines normalen Titels abgespielt werden kann und diesen unterbricht. Nach dem Adverttrack wird der normale Track weitergespielt. Wie bei advert (Werbung) im Fernsehen, wo der Film für die Werbung pausiert wird. Grrrrrr !!!. Immer wenns spannend wird. Nach dem gleichen Prinzip funktioniert auch das Ansagen des aktuellen Tracks bei laufender Wiedergabe, wenn die pausetaste lange gedrückt wird.

1 „Gefällt mir“

Im DEV sind die Ordner leider nur teilweise identisch. Und im Code konnte ich keine entsprechende Stelle finden, wo Advertisement versucht wird und im Notfall (wenn der Player pausiert) dann halt MP3 track abgespielt wird.
Meistens wird halt einfach MP3 genutzt, weil der immer geht (mit dem entsprechenden Verlust der Fortsetzungsmöglichkeit).

Daher war das für mich bisher nicht so offensichtlich, dass man beide Ordner am besten synchron halten und alternativ nutzen sollte.

Bisher wollte ich primär Advertisement nutzen, um die Fortsetzungsmöglichkeit zu erhalten.
Aber ich werde das in Zukunft so nutzen, wie du geschrieben hast.

Du meinst diese Stelle(n)?

      if (isPlaying()) {
        mp3.playAdvertisement(261);
      }
      else {
        mp3.start();
        delay(100);
        mp3.playAdvertisement(261);
        delay(100);
        mp3.pause();
      }

So hatte ich das bisher bei mir auch drin. Beim GB3200B reicht nur start() nicht aus, weil vorher oder nachher ein Titel gespielt werden muss. Das könnte ich (wie im vorigen Beitrag geschrieben) durch einen Parameter zumindest erkennen - wenn noch kein Titel gespielt wurde, dann muss man halt MP3 Track nutzen - sonst könnte man den o.g. Weg (start -> advert -> pause) nutzen. Aber der GB3200B braucht außerdem wohl höhere Verzögerungen (delays) und dann hört man (je nachdem wie schnell der Titel startet) den Musiktitel kurz, bevor das Advertisement kommt. Ich habe mich daher für die Variante von stephan entschieden. Sinn gemäß:

      if (isPlaying()) {
        mp3.playAdvertisement(261);
      }
      else {
        mp3.playMp3FolderTrack(261);
      }

Damit bekomme ich dann bei den Modifiern immer sauber einen Ein- bzw. Ausschalt-Sound.