Möglichkeiten des DFPlayerMini

Ich möchte gerne einen Tonuino bauen, aber mit modifizierter Bedienung (ich mag keine doppelt belegten Tasten und schon gar keine, deren Funktion zeitabhängig wechselt). Mein Bedienkonzept sieht so aus:

  1. Lautstärkeregler nicht mit Tasten, sondern mit Drehregler (bekomme ich mit Analog(-verstärker)technik hin.
  2. Start und Stop sekundengenau im Track durch auflegen bzw. runternehmen des RFID
  3. Vorwärts- bzw. Rückwärtsspulen mit Drehgeber (z.B.: https://www.az-delivery.de/products/drehimpulsgeber-modul?_pos=1&_sid=34993ef90&_ss=r ), ca 1 sekunde pro Impuls.

Ich habe mich ein bisschen mit dem hier verwendeten mp3-Modul beschäftigt, musste aber lesen und bekam dann auch die Antwort von azdelivery, dass im Besondere das sekundengenaue Stoppen und Starten von den verwendeten Bibliotheken nicht unterstützt wird.
Gibt es hier eine Lösung für Tonuino oder ist eine solche angedacht? Vielleicht finden ja noch andere die von mir angedachte Steuerung gut. In einem anderen blog ( DFPlayer verschiedene Versionen ) habe ich gelesen, dass auch andere sich mit dem Problem des sekundengenauen Stoppens und Startens beschäftigen. Das geht aber anscheinend nicht mit jedem Playermodul oder jeder Bibliothek.
Vielen Dank für Tipps und Kniffe,
Bernhard

Du hast die Lange schon richtig erkannt, und das „Problem“ ist so alt wie das Forum. Der Chip kann das einfach nicht, womit wir (und kleine Kinder in der Regel auch) aber momentan gut leben können. Du musst also deinen Player mit einem anderen Chip bauen. Alternativen hast du ebenfalls schon gefunden (ggf. solltest du dich da mit ran hängen). Letzte Möglichkeit wäre noch der ESP32 o.ä. mit i2s Modul, da gibt es auch Leute die damit basteln. Ob das was für dich ist hängt davon ab wie deine Kenntnisse sind. Den Bereich dazu im Forum siehst du wenn du mindestens Level 1 in der Community erreicht hast.

Vielen vielen Dank für die wertvollen Tipps. Ich werde in den entsprechenden Foren auf Suche gehen. Meine Kenntnisse sind leider wenig bis gar nichts, was Arduino betrifft.
Zum Thema sekundengenau starten und stoppen: da scheinen meine Kinder anders als die Regelkinder zu sein, die Verwechslung von Stopp und Pause haben schon zu Familiendramen geführt…

Dann empfehle ich dir dringend erstmal den Standard zu bauen (sofern du möchtest) und sich dann von da weiter vorzutasten. Manchmal wird der Fehler gemacht zum Start zu viel zu wollen (ich kenne das aus anderen Hobbies von mir selber aus der Vergangenheit auch) und dann kommt schnell die Enttäuschung weil es nicht so funktioniert wie erhofft oder geplant.

Ich fürchte, dass Du recht hast, und werde noch mal in mich gehen.

Also ich habs bei mir so gemacht:
Vor (kurz): Titel vor
Vor (lang): Sprung zum letzten Titel in der Playlist (sofern die Playlist mehr als einen Titel hat)
Pause/Play: Ist nicht doppelt belegt, schaltet nur zwischen Pause und Play um
Zurück (kurz): Titel zurück bzw. wenn schon erster Titel der Playlist, dann Sprung ganz an den Anfang (*)
Zurück (lang): Sprung zum ersten Titel der Playlist, sofern die Playlist mehr als einen Titel hat
Drehencoder drehen: lauter/leiser
Drehencoder drücken (lang): Ausschalten
Drehencoder drücken (kurz): Einschalten

Muss hier an dieser Stelle erwähnen, dass es sich um das kürzlich vorgestellte Projekt ESP32 mit i2s-Output handelt. „Müssen“ deshalb, weil es sich um 3rd party handelt und in Hardware größtenteils bzw. in Software komplett vom Originalprojekt unterscheidet. Aber wenn ESP32 und i2s schon erwähnt werden, ist das ja quasi eine Steilvorlage :slight_smile: Ob das Bedienkonzept so passt, wird sich in Kürze zeigen, wenn die Kinder den Tonuino in die Hand kriegen.
(*) Normalerweise würde ich für mich eine weitere Belegung hinzufügen, so dass ich auch immer an den Anfang eines Titels springen kann. D.h. immer und nicht nur dann, wenn es der erste Titel ist. Aber ich glaube, dass das für kleine Kinder zu schwer zu begreifen ist. Lang drücken entspricht bei mir übrigens aktuell 700 ms.

Zu deiner Idee mit dem sekundengenauen Anspringen: Ich denke du wirst relativ schnell feststellen, dass das nur bedingt Sinn macht ohne eine Dynamik (und vermutlich auch ohne Display). Will heißen: Nehmen wir an, du willst an Punkt 4:00min springen. Das wären 240 Raster. Ich weiß gerade nicht auswendig, wieviele Raster so ein klassischer Drehencoder hat, aber so gefühlt musst das Ding da 15mal drehen. Da drehst dich ja tot. An der Stelle muss man halt eine Dynamik reinbringen, dass man in größeren Schritten springt, wenn man pro Zeitintervall x halt >= Raster auf dem Drehencoder ausgelöst hat. Aber dennoch stellt sich ja die Frage, wie man sowas visualisiert. Ich habe zwar keine Vorspulfunktion (weil ich das für kleine Kinder auch für zu schwer halte und die sowas vermutlich auch extrem selten brauchen) aber ich habe einen Fortschritt im Titel über einen Neopixel-Ring visualisiert. Auch für kleine Kinder ist das total eingängig. Aber ich habe gerade mal nachgeschaut: Vorspulen wäre mit der Library, die ich verwendet habe, möglich. Die Methode heißt audioFileSeek():


Wie schnell man spulen will, übergibt man dort als Übergabeparameter. Ohne es ausprobiert zu haben, hört sich das für mich weniger nach sekundengenauem Springen an, sondern eher so, dass man einen Drehencoder verwendet um vorzugeben, wie schnell man abspielen will. Auf den Basiswert zurücksetzen macht man dann am besten mit dem Button.

I see what you did there. :wink: Nix für ungut, aber bin mir nicht sicher dass das beste zum Start ist, aber give it a try. :popcorn:

Da hast du mit Sicherheit Recht. Aber zumindest weiß der Fragesteller jetzt, dass es in dieser Richtung schon was gibt und er im Zweifelsfalle nicht bei Null anfangen muss :slight_smile:
Denn bislang war dieser Fork vor allem eines: Ziemlich aufwändig :->

Hm, dann bist du eigentlich beim Standard-TonUINO genau richtig: eine „Stopp“-Taste gibt es nicht, nur Play/Pause. Außer man legt eine neue Karte auf - aber dass beim Auswählen einer anderen CD die alte stoppt, dürfte klar sein :wink:
Meine Tochter (5) war übrigens extrem irritiert, dass bei einem Kassettenspieler bei Stopp nicht alles von vorne beginnt :joy:

2 Like

Vielen Dank an alle für die wertvollen Hinweise. Das mit dem sekundengenauen (?) stoppen und starten bei Karte runternehmen oder auflegen habe ich tatsächlich so noch nicht gelesen oder gewusst. Das wäre ja super und damit der zweite Punkt meiner Wunschliste schon erfüllt. Ich möchte gerne erstmal bei Arduino bleiben (gehört ja schon zur Allgemeinbildung, sich mit dem Teil mal auseinanderzusetzen) und nach durchblättern des TonUINO.ino Programms denke ich, dass ich es auch hinbekomme, ein paar Sachen modifizieren. Ich will aber erst einmal klein anfangen mit der Standardbox und dann langsam an die Modifikationen gehen. Meine Fragen zum mp3-modul und den Chipalternativen (YX5200-24SS, BY8001) werde ich im schon erwähnten Thema DFPlayer verschiedene Versionen stellen.