DFPlayer verschiedene Versionen

Hallo,
da mir auch eine Möglichkeit zum Spulen gefehlt hat, habe ich die Software auf ein BY8X0116P Modul portiert. Ich benutze einen USB-Stick, damit auch Advertisement funktioniert.

Zur Zeit sind die ursprünglichen Funktionen verfügbar + die folgenden neuen Funktionen:

  • Vor- und zurückspulen über die Lautstärketasten, wenn pausiert. Vorspulen 12-fach; Zurückspulen 8-fach
  • Schutz vor unbeabsichtigter Betätigung der Lautstärketasten (nächster/vorheriger Track), wenn die aktuelle Position im Track größer 5 Minuten ist. Aktion erfolgt erst nach erneuter Bestätigung innerhalb von 3 Sekunden.

Ich habe eine Adapterbibliothek geschrieben, mit der Schnittstelle der ursprünglich verwendeten DFMiniMp3 library. So sollten auch Portierungen auf Änderungen des Original Projektes leicht möglich sein.

Bei Interesse seht hier: https://github.com/R0Y4LTS/TonUINO

Interessanterweise habe ich rausgefunden, dass sich das BY8X01116P Modul die aktuelle Stelle in einem Track über das Ausschalten hinaus merkt, wenn man die SpotPlay-Funktion benutzt (Advertisement-Pedant beim BY…). Beim Starten dieses Tracks beginnt der Track an der gespeicherten Stelle. Das hat mich zwar gestört bei der Implementierung, aber vielleicht könnte es für bestimmte Funktionen auch nützlich sein.

Eigentlich wollte ich dich fragen @Thorsten, ob du wohl eine Variante von deiner „kleinen“ Platine für den BY8X0116P erstellen könntest. Aber ich habe gesehen, dass du gerade an sehr viel „größeren“ Sachen arbeitest. Aber vielleicht hast du ja trotzdem Interesse.

5 „Gefällt mir“

Das klingt doch super! Schaue mir das heute an.

3 „Gefällt mir“

Super, danke bei Gelegenheit propiere ich es aus.

Heute habe ich mal getestet.
Beim erstenmal kompilieren, sagte mir die IDE das wäre nicht für einen ‚Nano‘. Sehr verwunderlich.
Nach weiteren Versuchen hat er es anstandslos geflasht.

Nun habe ich dem Teil keinen Ton entlocken können. Meine Ausgabe auf der Konsole:

TonUINO+ Version 1.0
Timo Schulze

Basierend auf
TonUINO Version 2.0
© Thorsten Voß
Firmware Version: 0x92 = v2.0
Volume Down
Volume Down
Volume Down
Volume Down
Volume Up
Volume Up
Volume Up
Volume Up
Card UID: 02 48 99 1A
PICC type: MIFARE 1KB
Authenticating using key A…
Current data in sector:
1 7 00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF [ 0 0 1 ]
6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]

Reading data from block 4 …
Data in block 4:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Meine Fragen:
ABC des BY8001-16P werden mit 3,3k bestückt für die serielle Kommunikation, oder leer?
Ordner auf SD: 01 usw., 001.mp3 usw.?
Adverdisment Ordner auf USB Stick? Inhalt? von Thorsten?

Noch was ich vergessen habe?
3 Tasten sollten wie in der Konsole zusehen ist funktionieren. Eine Karte lesen auch.

Versuche mit einem weiteren Modul ABC Pins offen waren ok, serielle Wiedergabe ABC mit je 3,3k versehen auch.

Danke paulaner

Hi, bin gerade im Urlaub, daher nicht so gut ausgestattet, aber ich versuche deine Fragen zu beantworten.
Ich habe den BY… so eingesetzt wie ich ihn bekommen habe. Der einzige Widerstand ist der 1 kOhm, der auch von Thorsten vorgesehen war.
Ich benutze ausschließlich USB. Beides zusammen funktioniert aus meinen Erfahrungen nicht.

Ordner von 01-95. Titel pro Ordner 001.mp3 und aufwärts wie gehabt. Der mp3 Ordner muss mittels Skript convert-mp3-folder.sh in die Ordner 96-99 konvertiert werden. Der mp3-Ordner selbst und der advertisement-Ordner werden nicht mehr benötigt.

Ich hoffe es klappt bei dir.
Viel Erfolg.

Danke, schönen Urlaub.

Beim zweiten Versuch klappte es schon besser. Dein Programm wurde kompiliert und auf einen Nano geflasht. Ton bzw. Musik ist zu hören. Es funktioniert erstmal.

Jetzt der Unterschied zu deinem Setup, ändere ich aber auch noch versuchsweise.
BY8001-16P ist wie im Manual (serielle Kommunikation) beschrieben geändert, 3x 3.3k ABC!
Es funktioniert auch.
SD Karte ist die gleiche wie für Thorsten’s letzte Version. Also Ordner 001-075 (16GB) mit den mp3 Files drin, mp3 Ordner mit mp3, adverdisement Ordner mit mp3 drin, kein USB.

Hörspielmodus -> zufälligen Track wiedergeben
Hörbuch Modus -> kompletten Ordner spielen und Fortschritt merken
Party Modus -> Ordner in zufälliger Reihenfolge wiedergeben
Album Modus -> kompletten Ordner wiedergeben
Einzel Modus -> eine Datei aus dem Odrdner abspielen
Diese Modi (Karten) funktionieren.
Nicht alles (Karten, Modefier) funktionieren mit dem Setup.
Neue Karte lernen geht nicht. Karte wird als neu erkannt, Title spielt weiter, Konsole sagt Track beendet.
Keine Ansagen.

Naja, muß ich mal deine Struktur auf SD Karte bringen oder einen USB Stick nehmen.

Wenn ich es richtig verstanden habe:

  1. USB Stick
  2. für ‚Nutzdaten‘ Ordner 01-95
  3. im Ordner 001 bis 255.mp3
  4. mp3 Ordner, Dateien verschieben in die Ordner 96-99

Frage zu 4. Ordner 96 enthält nur mp3 mit 0 am Anfang
Ordner 97 nur mp3 mit 1 am Anfang
usw. 98 2 am Anfang und 99 3 am Anfang. OK?


Geändert am 22.07.2020, 1, 6, 8te getestet

Ergänzt: Das Wichtigste, Spulen geht!
Priorität: USB-Stick, SD Karte (kann das jemand bestätigen)
Danke paulaner

Hallo Paulaner,

Zu 1.: Ja, USB. Nur damit funktioniert Spotplay/Advertisement. Wird z.Z. aber nur für die ursprüngliche Trackansage und meine neue Skip-Protection benutzt. Zum Testen müsste der Rest auch mit der SD-Karte funktionieren.

Zu deiner Frage zu 4.: Nein so einfach ist die Zuordnung nicht, sondern so:

0000 - 0254 -> usb:/96/1 - usb:/96/255
0255 - 0509 -> usb:/97/1 - usb:/97/255
0510 - 0764 -> usb:/98/1 - usb:/98/255
0765 - 1019 -> usb:/99/1 - usb:/99/255

Ich würde dir nicht empfehlen das von Hand zu machen sondern das Skript convert-mp3-folder.sh zu nutzen.

Was meinst du genau mit Prio USB / SD? Die Umschaltung erfolgt per Kommando.

Danke für deine Erklärungen.
Ich fange mal von ‚hinten‘ an.

Ich dachte der wählt selbst SD/USB aus. Welcher Befehl/Kommando?
Das Skript ist ja schön doch sitz ich am Win 8.1 Rechner, aber deine Erklärung hilft mir ja.

Danke paulaner

Ja, du hast recht. Wenn beide Devices angeschlossen sind, müsste sich der Chip für eine entscheiden. Ich habe hauptsächlich ohne eingesteckte SD-Karte gearbeitet.

Es gibt in der BY… lib folgenden Befehl void setPlaybackDevice(BY8X0116P_PlaybackDevice device); mit dem man das Device auswählen kann.

Ich dachte auch das würde ich im setup auf USB setzen, mache ich aber nicht laut github.

ok, danke.

Ich habe noch folgendes Problem. Es werden immer nur halb soviel Dateien in der Konsole angezeigt wie im Ordner sind. Es werden dann auch nur diese abgespielt.
Erhöht man die Anzahl der Dateien in dem Ordner werden zwar wieder mehr angezeigt aber es ist wieder nur die Hälfte.
Bei 254 Dateien dann 127. Der Befehl ‚mp3.getFolderTrackCount(myCard.folder)‘ checkt doch aber den Ordner.

danke paulaner

Siehe:

Scheinbar verhält sich dein Modul hier anders… oder @R0Y4LTS hat double files auf der SD Karte und deswegen immer das doppelte?! (Weiß nicht ob ein Mac in Verwendung ist). Mach bei dir mal das / 2 weg.

Tatsächlich ist es ein Mac. Ggf. Muss das / 2 wieder raus und ich habe ein lokales Problem mit doppelten Dateien.

Super, danke dir Stephan.
An die Änderungen in der Library hab ich noch gar nicht gedacht.

Jetzt funktioniert es.
3 Dateien in Ordner 1
Album Modus -> kompletten Ordner wiedergeben

Danke paulaner

1 „Gefällt mir“

man dot_clean ist dein Freund. dot_clean räumt double files weg. Kannste ja mal checken. Vielleicht ist das wirklich das Problem.

1 „Gefällt mir“

Wahrscheinlich macht es Sinn, dass ich auch die konvertierten Ordner ins Repo einchecke. Werde ich Mittwoch oder Donnerstag angehen, wenn ich zurück bin.

ok, danke und immer mit der Ruhe.

paulaner

Ich möchte nicht nerven oder vorgreifen, doch bestehen noch Unklarheiten bei der Nummerrierung.
Da ich nicht so firm bin mit dem sed Befehl bitte ich um Aufklärung.

Wie ist die genaue Bezeichnung der ‚neuen‘ Files, lt. deiner Antwort wird aus 0001 -> 1 bis 0255 -> 255,
ist das richtig?

Möglichkeiten:
1 bis 255 oder 0001 bis 0255 oder aber 001 bis 255?

Danke paulaner

Hallo,
da ich noch am experimentieren bin und die meiste Zeit die Konsole zum Auswerten nehme,
habe ich unter anderem diese Zeilen ergänzt,
Serial.print(F("Volume Up ")); Serial.println(mp3.getVolume());
und
Serial.print(F("Volume Down ")); Serial.println(mp3.getVolume());

Hat zwei Vorteile wie ich finde, 1. gibt die aktuelle Lautstärkeeinstellung wieder und
2. bei LongPress wird nicht so schnell nach unten/oben geändert.

gruß paulaner

Kein Problem, ich finde es super, wenn sich damit jemand auseinander setzt.
Es sind normale Ordner, daher gelten die gleichen Konvention wie für die Nutzdaten.
001.mp3 - 255.mp3
Die Magie steckt auch nicht im sed sondern in dem printf in Zeile 21.

Da ich immer noch nicht ganz schlau geworden bin, habe ich mal ein Virtuelles Linux genutzt um dem ‚Problem‘ näher zu kommen.
grafik

Außer diesen CONVERTED_MP3_FOLDER mit den 4 ‚leeren‘ (96, 97,98,99 ) Ordnern und dem ebenfalls leeren ‚mapping.txt‘ wurde nichts gemacht.

Z.B. 0765 - 1019 -> usb:/99/1 - usb:/99/255
Da bekommt das File 0765.mp3 die Nummer 001.mp3 und landet in Ordner 99, richtig?

danke paulaner