DFPlayer verschiedene Versionen

Hab mal zum testen ‘TF Micro SD U-Disk BY8001-16P Arduino Audio Voice Module Board MP3 Player’ bestellt.

Mal schauen wie diese sich verhalten.

http://www.flyrontech.com/eproducts/?id=56

Update 25.02.2019: Pinkompatible sind sie nicht, kann man mit den hier verwendeten Platinen nicht nehmen.

Hallo Dennis, habe den JL Chip bekommen. Was waren deine Erfahrungen damit?

Bisher problemlos, rauscht etwas mehr als bei der ersten Box, kann aber auch am Lautsprecher liegen.

@paulaner
Hast Du den BY8001 noch weiter getestet? Ich habe jetzt gehört, der beherrscht auch Spulen, Rückgabe des (8-Zeichen-)Dateinamens und z.T. auch Advertisements (wobei ich nicht sagen kann, was z.T. bedeutet). Kannst Du das bestätigen?

@Peer
Ich habe ein paar BY8001 hier, getestet habe ich sie auf einen Breadboard.
Zum 1:1 Tausch gegen den original DFPlayer sind sie nicht Pinkompatible.


BY8001P

Erstmal habe ich A-C keine Widerstände drin, damit ich auf den richtigen Modus komme.
Ich habe damit nur die mir vom TonUINO bekannten Eigenschaften getestet, nun liegen sie rum.
Ob Spulen einer MP3 Datei geht, keine Ahnung, auch kann ich deine anderen Fragen nicht beantworten, sorry.

Sorry ich beschäftige mich auch z.Z. sehr wenig mit dem TonUINO und was damit zusammen hängt, bei dem Wetter haben Modelle, Boat, Plane, Copter, Car (Elektro, Verbrenner) Vorrang.

Ich habe mit etwas Googlen was Aussagekräftigeres gefunden: laut dieser Funktionsbeschreibung beherrscht der BY8001 tatsächlich vor- und zurückspulen und Ausgabe des Dateinamens.

Der Rest scheint wie beim DFPlayer zu sein. Zur Advertisement-Funktion (heisst hier play insertion) steht dort aber tatsächlich, dass die nicht bei TF-Karten geht. Demnach dürfte es für USB aber funktionieren…

3 „Gefällt mir“

Das wäre natürlich sehr cool.
Kann er auch die aktuelle Stelle im Track zurückgeben?

Laut dem bereits oben verlinkten Dokument ja!

  • 0x1C. Queries elapsed playback time
    in seconds (0-65535) of current
    track
  • 0x1D. Queries total playback time in
    seconds of current track
2 „Gefällt mir“

Es gibt auch eine Arduino-Library für den BY8001.

Klingt vielversprechend!
Wer wagt einen Versuch? :man_shrugging:t3:

Edit: bei ca. 3 Euro wäre es auf jeden Fall ein Versuch wert.
Die Frage wäre aber z.B. zu klären, wann speichert man den Fortschritt innerhalb des Tracks auf den Eprom? Nach Stop/Pause?
Haben wir noch genug Platz auf dem Eprom?

1 „Gefällt mir“

Wenn ich das Datenblatt des BY8001 richtig gelesen hab, kann man jedoch nicht zu einer speziellen Stelle im Track springen, lediglich „ein bisschen“ vor- bzw. zurückspulen. Wenn dieses „bisschen“ immer gleich ist, könnte man natürlich näherungsweise an die gewünschte Stelle springen, aber das wahrscheinlich nicht zuverlässig.

Ja das habe ich auch so verdtanden. Man konnte sich nur durch spulen und darauf folgendes abfragen der position ran tasten

Ob es Sinn macht, die Spulen-Funktion für das Speichern und Anspringen einer bestimmten gespeicherten Position zu verwenden, hängt in erster Linie davon ab, wie schnell das Spulen ist. Bei CD-Playern ist glaube ich die zweifache bis fünffache Geschwindigkeit üblich. Das könnte hier ähnlich sein.

Speichern sollte man nicht zu oft. Aber bei Stop/Pause und (wenn vorhanden) bei Initiierung der Abschaltfunktion dürfte ausreichend sein. Ansonsten könnte man auch über einen Timer jede Sekunde die Position speichern.

Es ist aber möglich, dass die Spulen-Funktion nicht um einen festen Wert vorspult, sondern das Vor- oder Zurückspulen aktiviert, welches dann solange läuft, bis ein Stop- oder Play-Signal kommt, oder bis der Track zuende ist. Dann könnte man (bei bekannter Spul-Geschwindigkeit) direkt zu jeder beliebigen Stelle im Track hinspulen.

Auch ohne die Möglichkeit, bestimmte Track-Positionen anzuspringen, habe ich eine Spulen-Funktion schon öfters vermisst. Man könnte das bei der 5-Tasten-Konfiguration sehr schön auf die Long-Press-Option der Previous- und Next-Tasten legen.

Hi,

ich habe inzwischen beide BY-Module getestet. Den
BY8001-16p ( mit integriertem Speicher mit Chinesischer Folklore :wink: incl. und mini USB Buchse )und den
BY8301-16p ( Mit Micro SD und Möglichkeit eine USB Buchse anzuschließen)

Die Player sind bis auf untereinander unterschiedliche Pin Belegung! Funktions-technisch identisch.
Die Pinbelegung ist auch wie schon von Paulaner erwähnt zum DFPlayer Mini ebenfalls unterschiedlich.

Ich dachte ich könnte beim BY8301 einen USB (Stummel)Stick mit 32GB per USB auf mini USB Adapter direkt anschließen.
Aber bei beiden Modulen ist es so das man die 5V selber nochmal zusätzlich speisen muss.
Daher habe ich den BY8001 genommen und eine günstige USB Buchse mit PCB genommen. Das war einfacher zu löten und für mich etwas übersichtlicher.

Mit den beiden Librarys von

(rOndl
und
NachtRave

habe ich die Module mit Spielen vom USB Stick auch zum Laufen gebracht.

Die Implementierung in den Code von Thorsten stellt sich für mich als schwierig dar, aber ich bleib mal dran.

Die eine Schwierigkeit

besteht darin das das BY Modul zwar Advertisments unterstützt ( heisst hier Spot play insertion function bzw Playback insertion from specific folder),
aber dafür keinen vordefinierten Ordner hat und es auch keinen vordefinierten Ordner gibt der Mp3 heissen muss.

Wenn man dafür einen Ordner (0-99) angibt kann man nur max 257 titel spielen. ( ja von 000-256)
Wenn man einfach eine Datei spielen will geht das nach Dateisystem Index 1-65535 (finde ich persönlich recht ungut)

Beim normalen Folder Play (in NachtRaves Lib >> playFolderFileIndex) Folder(0-99) Files(1-255)

Das heisst für die Ordner die Bisher advert und Mp3 heissen für den DFPlayer und von Thorsten bis 999 benutz werden muss man alternative Folder anlegen die beim BY nur 257 files beinhalten dürfen und dann dementsprechend die Soundfiles umbenennen und den Code anpassen damit die richtigen Ansagen kommen. Dann könnte es hinhauen.
Das hat bei mir bisher nur so halb geklappt. Aber da habe ich bestimmt noch ein paar Denkfehler drin und hab den Code von Thorsten im Detail vielleicht falsch interpretiert. Das Gerüst vom Code ist mir recht klar.

Zweites Problem

ist das ich den MP3Notify Bereich vom DFPlayer lib bisher auskommentieren musste weil es den in der gleichen Form für den BY-8001 nicht gibt, weil der etwas andere Codes zurückschmeisst und auch nicht so vielseitig.
Könnte evtl Probleme machen weil bei einer funktion ja nach dem Beendeten Track der nächste gespielt wird.

static void OnPlayFinished(uint16_t track) {
	Serial.print("Track beendet");
	Serial.println(track);
	delay(100);
	nextTrack(track);
}

Drittes Problem

die Funktion
mp3.getFolderTrackCount(myCard.folder);

bzw die Zeile

numTracksInFolder = mp3.getFolderTrackCount(myCard.folder);

funktioniert mit dem BY8001 so nicht da zwar eine ähnliche Funktion existiert, diese aber keine Argumente für einen angeforderten Ordner erlaubt, sondern nur den den Ihnalt des derzeitigen zählt.

daher kann myCard.folder aus dem myCard struct nicht eingesetzt werden.

Ich versuche da noch weiterzukommen, wäre aber um Tipps froh oder den vielleicht ein oder Anderen, der sich auch dran versucht.

Ich würde nämlich gerne die Spulen funktion des BY8001 nutzen da ich schon ein Gyro/accelerometer (MPU6050) dran hängen habe der Tapping rechts oder links erkennt für skippen und eben auch kippen für Spulen. Dann wäre da der gleiche Funktionsumfang wie bei der Box mit dem Löwen drin.

Grüße

Marc

Sollte

3 „Gefällt mir“

Ich bin noch immer am Überlegen, ob ich mir einen BY8001 hole, kann also selbst nichts testen. Kann man gür das Abfragen der Trackanzahl nicht kurz einen Track (bei minimaler Lautstärke) anspielen, nach vielleicht 100ms stoppen und dann die Anzahl der Tracks im nun aktuellen Ordner abfragen?

Und konntest Du die Funktionen zur Dateinamenabfrage, Tracklänge und aktueller Trackposition schon testen?

Hi Peer,

stimmt sowas hatte ich mir auch schon überlegt. Kurz Track anspielen bei 0 als Workaround.

Die Funktionen die Du ansprichst hatten mich bisher für meine belange noch nicht interessiert, aber gerne probier ich es mal. Melde mich.

Grüße

Marc

Also zum Thema Dateianamenabfrage, Tracklänge und Trackposition beim BY8001.

Das funktioniert soweit. Tracklänge und Trackposirion wird mit den NachtRave Library funktionen in ganzen Sekunden ausgegeben. Als Hex werte.

Trackname: Da wird aus 002Aramsamsam.mp3 ----> 002ARA~1.MP3

Im Datasheet nennen sie das (provides only FAT32 stored short file names (8 characters) which appear as abbreviated track title taken from FAT32 long file name (e.g., if naming with more than 8 characters)

Soweit so gut…

Grüße

Marc

1 „Gefällt mir“

Das ist super! Mehr als 8 Zeichen brauche ich nicht. Nur schade, dass es die MP3- und ADVERT-Ordner nicht gibt.

Das mit den 257 Dateien je Ordner kann übrigens nicht stimmen, da der Befehl ein Byte als Dateinummer an den BY8001 schickt. Also sind es höchstens 256 (0-255), wohlmöglich aber eben „nur“ 255 (1-255) Dateien je Ordner, wie beim DFPlayer. So oder so muss man bis zu 4 Ordner für die sonst in MP3 und Advert liegenden Dateien opfern. Das sollte ja gut machbar sein.

Cool! Danke für die Tests.
Hast Du schon ausprobiert wie schnell das Spulen funktioniert? Also wie schnell man wieder an eine gemerkte Stelle im Track spulen könnte?