Verzögerung bei neuer Karte

Hallo,

erstmal vielen Dank für dieses tolle Projekt und die Hilfe hier im Forum!

Ich habe gerade die erste Box (CubieKid-Platine, 5 Buttons) als Weihnachtsgeschenk für meinen Sohn zusammengebaut und komme jetzt bei einem Problem nicht weiter.

Ich habe dieses Thema gefunden und das scheint ein ähnliches Problem zu beschreiben, ich bin mir aber nicht sicher, dass mein Problem tatsächlich ein Hardware-Problem ist:

Wenn mehrere Lieder abgespielt wurden und dann eine neue Karte aufgelegt wird, dauert es ca. 10 Sekunden, bis das erste Lied der neuen Karte abgespielt wird.
Zuverlässig reproduzierbar mit:

  • Starten
  • Karte auflegen (Album-Modus)
  • Bis zum Start des zweiten Liedes warten
  • Neue Karte auflegen (Party-Modus)
    → Dauert ca. 10 Sekunden bis zum Start des neuen Liedes

Dann habe ich die SD-Karte neu formatiert mit dem SD Memory Card Formatter und neue Ordner kopiert (vorher 2 eigene Ordner, jetzt 7) und das Problem hat sich um ein Lied nach hinten verschoben, also passiert es erst nach dem Start des dritten Liedes. Nach dem zweiten Lied funktioniert ein Kartenwechsel problemlos ohne Verzögerung.

Ich versuche @marco-117 's Affenbox-Fork zu nutzen (v2.12). Habe ich etwas falsch verstanden, dass ich mit der CubieKid-Platine nicht jeden Fork nutzen kann? Habe leider von Elektrotechnik überhaupt keine Ahnung…ganz naiv habe ich angenommen, wenn die Pin-Belegung stimmt, sollte es klappen?
Komisch ist nämlich, dass das Problem mit @stephan 's Fork, der ja die CubieKid-Platine unterstützt, nicht auftritt. Zumindest ist es nach stundenlangem Hören von Kinderliedern und wilden Kartenwechseln bisher nicht aufgetreten :smile:

In der Konsole sieht man, dass ein „packet size“-Error vom DFPlayer kommt. Allerdings, wie gesagt, nur beim Affenbox-Fork. Hier die entsprechenden Ausgaben:

22:22:04.647 -> Affenbox v2.12 by Marco Schulz
22:22:04.647 -> forked from TonUINO by Thorsten Voß; licensed under GNU/GPL.
22:22:04.647 -> Information and contribution https://tonuino.de.
22:22:04.647 -> 
22:22:05.209 -> Firmware Version: 0x92 = v2.0
22:22:07.398 -> waitForTrackToFinish
22:22:07.398 -> waitForTrackToStart
22:22:07.726 -> track startet
22:22:08.757 -> nxt track
22:22:08.757 -> abort
22:22:08.757 -> nxt track
22:22:08.757 -> abort
22:22:08.757 -> track finish
22:22:08.757 -> set stby timer
22:22:08.757 -> milis 64122
22:22:12.226 -> ReadCardSerial fin
22:22:12.226 -> Card UID 
22:22:12.226 ->  1A  F3  7F  19 
22:22:12.226 -> PICC type MIFARE 1KB
22:22:12.226 -> Authenticating Classic using key A...
22:22:12.226 ->  FF  FF  FF  FF  FF  FF 
22:22:12.226 -> 0
22:22:12.226 -> Read block4
22:22:12.226 -> data on card 
22:22:12.226 -> folder 1
22:22:12.226 -> mode 2
22:22:12.226 -> special 0
22:22:12.226 -> special2 0
22:22:12.226 -> special3 0
22:22:12.226 -> special4 101
22:22:12.226 -> 1
22:22:12.226 -> 1
22:22:12.226 -> new tag
22:22:12.273 -> Album
22:22:12.273 -> disable stby timer
22:22:12.273 -> 15 mp3 in folder 1
22:22:12.273 -> play mp3 1
22:22:12.319 -> waitForTrackToStart
22:22:12.413 -> track startet
22:22:12.834 -> tag gone
22:22:59.885 -> nxt track
22:22:59.885 -> track 2
22:22:59.931 -> set stby timer
22:22:59.931 -> milis 115216
22:22:59.931 -> disable stby timer
22:23:03.581 -> ReadCardSerial fin
22:23:03.581 -> Card UID 
22:23:03.581 ->  FA  EE  81  19 
22:23:03.581 -> PICC type MIFARE 1KB
22:23:03.581 -> Authenticating Classic using key A...
22:23:03.581 ->  FF  FF  FF  FF  FF  FF 
22:23:03.581 -> 0
22:23:03.581 -> Read block4
22:23:03.581 -> data on card 
22:23:03.581 -> folder 2
22:23:03.581 -> mode 3
22:23:03.581 -> special 0
22:23:03.581 -> special2 0
22:23:03.581 -> special3 0
22:23:03.581 -> special4 101
22:23:03.581 -> 2
22:23:03.581 -> 2
22:23:03.581 -> new tag
22:23:13.602 -> packet sizeParty
22:23:13.789 -> shuffleQ
22:23:13.789 -> 30 mp3 in folder 2
22:23:13.789 -> play mp3 17
22:23:13.789 -> waitForTrackToStart
22:23:13.930 -> track startet
22:23:14.211 -> tag gone

Ohne Probleme:

22:47:55.399 -> TonUINO JUKEBOX
22:47:55.399 -> by Thorsten Voß
22:47:55.437 -> Stephan Eisfeld
22:47:55.437 -> and many others
22:47:55.485 -> ---------------
22:47:55.485 -> flashed
22:47:55.538 ->   Dec 16 2021
22:47:55.538 ->   22:45:54
22:47:55.538 -> prefs read
22:47:55.538 ->   v1
22:47:55.538 -> prefs migrate
22:47:55.538 ->   -
22:47:55.584 -> init nfc
22:47:55.584 -> Firmware Version: 0x92 = v2.0
22:47:55.638 -> init mp3
22:47:57.570 ->    start 5
22:47:57.570 ->      max 10
22:47:57.570 ->     menu 5
22:47:57.617 ->       eq normal
22:47:57.617 ->    files 708
22:47:57.717 -> init 5 buttons
22:47:57.717 -> init 10m timer
22:47:57.770 -> init lvm
22:47:57.770 ->   ex-5.00V wa-4.80V sh-4.40V cu-4.75V (58.79%)
22:47:57.770 -> ready
22:48:07.461 -> read cl ok 13 37 B3 47 02 01 02 00 00 00 00 00 00 00 00 00
22:48:07.461 -> album-1-1/15
22:48:55.249 -> album-1-2/15
22:48:58.786 -> read cl ok 13 37 B3 47 02 02 03 00 00 00 00 00 00 00 00 00
22:48:58.941 -> party-2-1/30-(2)

Ich hoffe wirklich, dass ich einfach ein Software-Problem übersehen habe…der DFPlayer ist nämlich leider direkt auf die CubieKid-Platine gelötet und alles schon schön mit Heißkleber im Gehäuse befestigt…
Hat jemand eine Idee, was ich ändern/noch prüfen könnte?

Vielen Dank!

Die 10s kommen vom maximalen timeout der DFPlayer Mini Library. Da kommt besagter (als Beispiel) Fehler, dann wartetet er 10s und macht dann weiter. Das ist in der Regel ein timing Problem, also zwei commands zu schnell hintereinander oder sowas. Das is schwierig zu debuggen…

Kann man die nicht auf 2 Sekunden runter nehmen?
Ich denke wenn etwas nach 2 Sekunden schon nicht funktioniert, muss man nicht noch weitere 8 Sekunden warten?

Kann man, klar. Der Player braucht aber z.B. bei einer vollen SD Karte deutlich länger als 2s zum initialisieren oder auch zum abspielen nachdem eine Karte aufgelegt wurde. Es ist also besser hier das Problem zu beheben und nicht das Symptom.

@stephan kann es sein, dass du in deinem Fork nicht bei jeder Wiedergabe die Anzahl der Tracks in dem Ordner vom Player zählen lässt (getFolderTrackCount)? Das wäre auch ein Grund, warum es nur bei deinem Fork ohne Verzögerung klappt. Dann hätte ich den Verdacht, dass der Player die typisch schlampige Lötstelle hat

Nur beim auflegen der Karte, wenn die Playliste gebaut wird…

Stimmt. Ich hatte das mit case gerade mal wieder verpeilt. Das gilt ja für alle bis zum break. Vielleicht sollte man fremden Code auch nicht am Smartphone anschauen

Kann es sein, dass das eine Errormeldung ist?

Yap isses. Hatte @bithya ja auch entdeckt:

Wahnsinn, vielen Dank für die schnellen Antworten!

Das verlinkte Thema zur Fehlerbehebung beim DFPlayer beschreibt scheinbar ganz gut mein Problem, es hängt auch bei mir bei getFolderTrackCount. Allerdings ja nicht immer.
Ich habe heute Mittag dann doch wenigstens nochmal den Lautsprecher ausgebaut, um ein einigermaßen vernünftiges Foto vom DFPlayer machen zu können. Für mich als Löt-Laien sieht das aber nicht nach einer Verbindung von TX-Pin und SD-Karten-Halterung aus. Oder doch?
Edit: Habe ein altes Multimeter ausgekramt: Zwischen TX-Pin und SD-Karten-Halterung piepst nichts (beim Test mit GND schon), also sollte da wirklich keine Verbindung sein?

Soll heißen, ich sollte lieber den wahrscheinlich irgendwie fehlerhaften DFPlayer austauschen, weil es langfristig wahrscheinlich bei jedem Fork zu Problemen kommen wird (auch wenn deiner gerade scheinbar gut läuft), richtig?

Dann versuche ich wohl mit ein bisschen Gebastel im Code eine Zwischenlösung zu finden (delay(2500) vor getFolderTrackCount hilft zumindest in einigen Fällen, die Wartezeit zu verkürzen…), bis ich dann nach Weihnachten den DFPlayer austauschen (lassen) kann :disappointed: