Forum: Projekte & Code Projekt fertiggestellt: MP3 Player für Kinder auf ATTiny-Basis


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Tim schrieb:
> Habe diverse Verstärker getestet und immer laute Störgeräusche.
> Wie kann ich das unterbinden?

Verkabele das mal so:
 
       _____________________________________
      /                                     \
     +------------+                          |
     |       _____|______                ____|_____
     |      |            |  Audio L+R   |          |
Bat ===     | Verstärker |==============| DFPlayer | 
     |      |____________|              |__________|
     |            |\_________________________/
     +------------+ 

Wichtig ist,

a) dass der Verstärker so nahe wie möglich an die Batterie angebunden 
wird, mit dicken Kabeln. Begründung: Spannungsabfall minimieren, damit 
die Spannung möglichst stabil ist.

b) Die Plus-Leitung vom DF-Player gehört direkt an die Batterie. 
Begründung: Spannungsabfall an der Plus-Leitung des Verstärkers soll den 
DF-Player nicht betreffen.

c) Die Masse Leitung vom DF-Player gehört direkt an den Verstärker, 
nicht an die Batterie! Begründung: Der Verstärker verstärkt die 
Differenz zwischen seinem Masseanschluss und seinem Audioeingang. Der 
DFPlayer soll daher ein Audiosignal erzeugen, dass relativ zu diesem 
Masseanschluss erzeugt wird, nicht relativ zum weiter entfernten Akku.

Ich hoffe es ist klar, dass das Audiosignal beim DFPlayer an DACL und 
DACR verwendet werden muss, nicht die Speaker-Ausgänge.

Manche sehr billig aufgebaute Verstärker brauchen eine sehr stabile 
Versorgungsspannung. Dickere Batterien mit geringen Innenwiderstand sind 
dann hilfreich.

von Tim (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@ghmartin77
warte mal noch mit dem upload, hab gerade gemerkt das Continous Play 
zwar über USB funktioniert, aber nicht auf der Speicherkarte... Werde da 
nochmal testen und den Inhalt klonen...

@Stefan, danke für die Tipps.
Werde die Stromversorgung überarbeiten.
Hatte bisher nur die Versorgung über Verstärker bzw umgekehrt probiert, 
aber nicht getrennt.

Audioausgang am DFPlayer ist klar!

Was noch auffällig ist: Die Ansagen aus dem Advert Ordner sind im 
Verstärker Betrieb recht leise...

von Tim (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> Hi Tim,
>
> nur um sicherzugehen, bevor ich Murks ins GitHub-Repo committe: Du
> meinst die Version, die an diesem Beitrag anhängt, ja?
> Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder auf
> ATTiny-Basis"


Habe jetzt nochmal getestet. Contiunous Play und Track wiederholen 
funktioniert NICHT beim Abspielen von SD Karte. Hier wird immer nur ein 
Titel abgespielt.

Komischerweise funktioniert das Abspielen vom USB-Stick problemlos.

von Tim (Gast)


Bewertung
0 lesenswert
nicht lesenswert
David schrieb:
> Ein kleiner Fehler hat sich allerdings wohl noch eingeschlichen. Wenn
> ich Repeat1 ein- bzw. ausschalte, spielt der laufende Track nach der
> Ansage nicht mehr weiter. Bei all den anderen Funktionen klappt es
> problemlos.


Kann ich jetzt auch bestätigen!

von ghmartin77 (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

erstmal großes Lob an Stefan für den versierten, glasklaren Beitrag 
weiter oben. Das ist ein sehr erfreulicher Lichtblick in dem sonst hier 
im Forum zuweilen unnötig rüden Umgangston. Kudos!

So, zum Player und euren Fehlerbildern: Das Ding macht mich noch 
wahnsinnig :)

Hab mir jetzt einen Testaufbau zusammengewemmst, mit dem ich ein bissel 
rumspielen und debuggen konnte:

Testaufbau: Arduino Nano, DF-Player mit Chipaufschrift YX5200-24SS, 
TX/RX Player auf D2/D3 des Arduino. Keine Potis für Lautstärke 
angeschlossen, kein Tastaturfeld angeschlossen. Stattdessen Lautstärke 
fest auf 1 gestellt und Tasteneingabe über Serial-In des Arduino 
simuliert. Zusätzlich Code mit diversen Serial.prints versehen, um zu 
sehen, was während des Programmablaufs für interessante Dinge passieren. 
Code hängt an. Tastendrücke über Eingaben 1-11 (normaler Tastendruck) 
bzw. 1+ bis 11+ (langer Tastendruck) simulierbar.

Erkenntnisse:
1) Ich konnte 2 Mal den Fehler nachstellen, dass bei langem Druck von 
Taste 4 im Anschluss der laufende Titel nicht mehr fortgesetzt wurde. 
Das war beide Male im Hardware-Setup "ausschließlich SD-Karte als 
Medium", aber PlaybackSource DfMp3_PlaySource_Usb (Zeile 139). 
Allerdings gab es weitaus mehr Fälle in anschließenden Tests im gleichen 
Setup, bei denen auch das anstandslos funktionierte. --> Scheinbar nicht 
deterministisch.
Warum Abspielen von SD-Karte überhaupt geht, wo doch PlaybackSource auf 
USB steht, wissen die Götter :)

2) Mit DfMp3_PlaySource_Sd (Zeile 139) und Hardware-Setup 
"ausschließlich SD-Karte als Medium" konnte ich keinerlei Fehler 
nachstellen. Alle continuousPlay-, Play1-, repeatPlaylist-Features inkl. 
Weiterspielen des laufenden Titels nach Konfigurationsumstellung 
funktionierten tadellos.


3) Mit DfMp3_PlaySource_Usb (Zeile 139) und Hardware-Setup 
"ausschließlich USB-Stick als Medium" konnte ich keinerlei Fehler 
nachstellen. Alle continuousPlay-, Play1-, repeatPlaylist-Features inkl. 
Weiterspielen des laufenden Titels nach Konfigurationsumstellung 
funktionierten tadellos.


4) Wenn sowohl die SD-Karte als auch der USB-Stick hardware-mäßig 
angeschlossen sind, kann man bei Playbacksource einstellen, was man 
will, er spielt immer von der SD-Karte ab.


Fragen an euch:
-Waren beim Auftreten eurer Fehlerbilder die Medien hardware-mäßig 
eindeutig (entweder nur USB-Stick angeschlossen XOR nur SD-Karte 
eingeschoben)?
-War eure Playbacksource im Code explizit passen zum Hardware-Setup 
gesetzt?

Testcode zum eigenen Ausprobieren angehängt. Bitte beachten:
-Läuft nicht auf einem ATTiny, Arduino Nano oder ähnliches geht. TX/RX 
vom Player gehört an D2/D3 des Arduinos.
-Serial.out läuft auf 115200 Baud, Tastendrücke können beispielsweise 
über den Serial Monitor der Arduino IDE gesandt werden.
-Durch die Ausgaben hat sich natürlich auch das Timing-Verhalten 
geändert. Eventuell wird dadurch der existierende Fehler auch 
verschleiert.

Sachdienliche Hinweise zur Fehlerkorrektur nehme ich gern entgegen :)

Viele Grüße
ghmartin77

von Tim (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich hatte deinen Code vom 10.01.2020 20:10 unverändert verwendet.
Wenn ich das richtig sehe ist hier "DfMp3_PlaySource_Usb" aktiviert!?

SD war immer im Player eingelegt, USB-Stick bei Bedarf. USB-Stick war 
beim Abspielen immer priorisiert, was ganz meinen Wünschen entspricht.
Sprich, bei eingelegtem Stick, wird hiervon abgespielt, ansonsten von 
der SD.

Von SD Karte wird nur immer ein Track abgespielt, unabhängig ob der 
USB-Stick eingesteckt ist oder nicht.

Ich hoffe das hilft ein wenig weiter!?
Kann leider nicht mit dem Arduino testen, da mir hier das 
Hintergrundwissen (noch) fehlt...

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi Tim,

vielen Dank für dein Feedback. Könntest du bitte folgendes ausprobieren:
1) Ausschließlich SD-Karte einstecken.
2) Den von dir genannten Code nehmen, nur Zeile 139 anpassen und auf den 
ATTiny spielen:
  player.setPlaybackSource(DfMp3_PlaySource_Usb);
zu
  player.setPlaybackSource(DfMp3_PlaySource_Sd);
3) Testen, ob der Player dann anstandslos funktioniert (Continuous Play, 
Repeat1 etc.)

Lauere gespannt auf deine Ergebnisse :)
1000 Dank!

Viele Grüße
ghmartin77

von Tim (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> 1) Ausschließlich SD-Karte einstecken.
> 2) Den von dir genannten Code nehmen, nur Zeile 139 anpassen und auf den
> ATTiny spielen:  player.setPlaybackSource(DfMp3_PlaySource_Usb);
> zu  player.setPlaybackSource(DfMp3_PlaySource_Sd);
> 3) Testen, ob der Player dann anstandslos funktioniert (Continuous Play,
> Repeat1 etc.)

Code auf *Source_SD geändert und nur SD Karte eingelegt:
Continous Play, repeat 1, repeat List, repeat on startup, Ansagen, 
Fortsetzung nach Ansage:
Getestet, Funktioniert nicht zu 100%
Ab und an wird eine Ansage nicht aufgerufen, oder danach nicht 
weitergespielt.
Am Button 2 recht gut reproduzierbar (aber nicht immer. Häufiger bei 
"Playlist wiederholen" als bei "Playlist einzeln" )
Am Button 4 ebenfalls hier auch bei der Ansage "wiederholen"

Ich hoffe das Hilft ein wenig weiter

(Über Usb kein Weiterspielen, kein repeat usw....)


Damit es hier nicht zu trocken wird gibts ein Bild von meiner heutigen 
Fräsaktion für die hoffentlich bald funktionierende Version 2.0

von minsula (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Community,

zunächst vielen Dank fürs Teilen und Bereitstellen des Codes und der 
Doku!

Dies war/ist mein erstes Projekt bei dem es über "analoges" Löten auch 
um Code und Arduino / Attiny und co und ums "digitale" ging.
Ich als Anfänger (habe noch nie microcontroller programmiert) war etwas 
skeptisch, ob ich es mit meinem gefährlichen Halbwissen schaffe, das 
Projekt erfolgreich abzuschließen. Aber es sieht so aus, als sei es mir 
dank eurer Doku gelungen.

Sehr geholfen hat mir die "Einkaufsliste", die Daniel Frei (Gast) am 
21.01.2019 hier im Forum gepostet hat. Auch wenn ich bei 1-2 Teilen 
selber noch etwas recherchieren musste, die meisten Sachen ließen sich 
direkt über die Links bestellen. Danke!

Im Verlauf bin ich auf ein paar weitere Herausforderungen gestoßen, die 
ich hier versuche zu rekonstruieren, um weiteren Anfängern wie mir ein 
bisschen mehr eine Schritt für Schritt Anleitung zu geben, die mir 
sicher ein paar Umwege erspart hätte.

1. Ihr braucht einen Arduino, um den Code auf den Attiny Chip zu 
flashen. Ich habe einen Arduino micro (fake) günstig aus China erworben.

2. Der Arduino muss zunächst selber so programmiert werden, dass er als 
Controller zum Flashen des Attiny funktioniert (das habe ich mir selber 
erst ergoogled, das wurde für mich aus der vorhandenen Doku nur schwer 
klar). Dieser Artikel hilft dabei, wie das mit der Arduino IDE geht:
https://www.arduino.cc/en/tutorial/arduinoISP

3. Damit sich der Arduino und das Attiny fürs flashen "verbinden" 
lassen, braucht die Arduino IDE eine Erweiterung. Dies hat mir dabei 
geholfen: 
https://www.instructables.com/id/Program-an-ATtiny-with-Arduino/
Ein Breadboard hätte es echt vereinfacht - ich habe gelötet und dann 
wieder alles zurückgebaut...
Allerdings hat die bei instructables angegebene "Attiny Core 
Files"-Erweiterung bei mir nicht funktioniert. Ich habe dann folgende 
gefunden: https://github.com/SpenceKonde/ATTinyCore, die sich direkt 
über die Arduino IDE über die "Boards Manager Installation" über Angabe 
der URL http://drazzy.com/package_drazzy.com_index.json automatisch 
installieren ließ.

4. Der Code von Git: Die heruntergeladenen Dateien hatten beim 
compilieren viele Fehler. Das lag irgendwie an der ASCII Codierung oder 
so. Ich habe dann nach einigem Probieren den Code als Text per Copy und 
Paste von der GIT Website kopiert und in die (2!) Dateien in der Arduino 
IDE eingefügt. Anschließend musste ich glaube ich noch ein paar Stellen 
korrigieren wo z.B. ein einfaches Anführungszeichen ' falsch formatiert 
war. Das hat dann aber irgendwann funktioniert und so konnte ich den 
Code per Arduino auf den Attiny übertragen

5. dann kam das Löten. Das Board mit den Knöpfen konnte ich gut von den 
Fotos auf GIT "kopieren". Bei dem Board mit dem DF Player und dem Attiny 
musste ich etwas mehr knobeln, habe es aber mit dem Diagramm geschafft, 
es richtig aufzubauen. Gewundert hat mich, dass in den Fotos auf GIT 
anscheinend der C1 100nF nicht verbaut ist (?) ich habe ihn mit verbaut 
- funktioniert. Ein bisschen knobeln musste ich auch bei der Polung des 
USB. GND ist Minus, das Plus wird geschaltet.

6. Dann war eigentlich alles fertig und richtig - aber funktioniert hat 
bei mir erst noch nichts (LED am DFplayer hat nicht geleuchtet und keine 
Musik gespielt). Ich habe die SD Karte dann statt in FAT32 in FAT 
formatiert und alle Ordner mit irgendwelchen MP3 gefüllt - jetzt 
funktioniert es!

Danke euch. Und ich hoffe ich kann es mit meinem Erfahrungsbericht 
weiteren Menschen einfacher machen, dieses tolle Projekt zu realisieren.

von ghmartin77 (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Tim,

einige Debugging-Sessions später anbei eine Version, die bei mir mit 
YX5200-24SS und MH2024K-24SS zumindest an einem Arduino funktioniert 
(ATTiny konnte ich leider nicht testen).

-Unterstützt USB und SD-Karte. Wenn nur eins davon eingesteckt ist, hat 
USB immer Priorität.

-Hot-Plug-fähig, d.h. Karte oder Stick können im Betrieb rein und 
rausgesteckt werden. Das zuletzt eingesteckte Medium wird zum Abspielen 
genutzt.

-Initialisierung der (EEPROM-)Konfiguration, wenn zum ersten Mal 
gestartet wird.

-Die Code-Größe schrabbt jetzt arg an der 8k-Obergrenze. Ließ sich bei 
mir gerade noch mit 8122/8192 Bytes kompilieren. PAUSE_ON_MIN_VOLUME 
konnte ich nur aktivieren, wenn Zeile 32 auskommentiert ist (das 
deaktiviert die o.g. Initialisierung, die allerdings eh nur beim 
allerersten Start relevant ist).

Fehler beim Abspielen der Konfigurationsänderungsmeldungen konnte ich 
nicht mehr feststellen. Habe den Code an dieser Stelle etwas robuster 
gemacht.

Eine Erklärung für die weiter oben erwähnte Seltsamkeit, dass einer 
meiner Testplayer immer von USB abspielte, auch wenn SD als Playsource 
konfiguriert wurde, hat sich auch geklärt -> Fehler in der DFMiniMp3.h. 
Ist in der angehängten Fassung repariert (" = 1" in Zeile 72).

Weil sich unterschiedliche Player unterschiedlich verhalten, musste ich 
ein wenig tricksen, damit der ganze Kram funktioniert. Beim MH2024K-24SS 
führt das dazu, dass er leider beim Start resettet werden muss, was 
etwas Krach beim Einschalten erzeugt. Nervig, aber bisher habe ich keine 
Idee, wie man das vermeiden könnte.

Bin gespannt, ob und wie der Code bei dir funktioniert...

Viele Grüße
ghmartin77

von Tim (Gast)


Bewertung
0 lesenswert
nicht lesenswert
So, gerade mal schnell angetestet, konnte allerdings nur nen Player mit 
ner "roten LED" ausprobieren.
Nach der "Button 4 - Ansage" verstummt die Kiste...

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tim schrieb:
> So, gerade mal schnell angetestet, konnte allerdings nur nen Player mit
> ner "roten LED" ausprobieren.
> Nach der "Button 4 - Ansage" verstummt die Kiste...

Grummel :)

So langsam gehen mir die Ideen mir Realitätsbezug aus...

Also mal sortieren:

Vorbedingungen:
-Continuous Play muss eingeschaltet sein (damit das Ausschalten von 
Repeat1 in einem Ordner mit nur einem File nicht den Effekt hat, dass 
das Abspielen absichtlich endet)
-Loop Playlist muss eingeschaltet sein (damit das Ausschalten von 
Repeat1 in einem Ordner mit nur einem File nicht den Effekt hat, dass 
das Abspielen absichtlich endet)
-Du hast ein hinreichend langes MP3 (>30 Sek), das abgespielt wird, 
wobei du mittendrin Taste 4 länger hältst, bevor die ungefähr letzten 10 
Sekunden Abspielzeit angefangen haben.

Beobachtung:
-Button 4 länger halten, dann loslassen spielt noch die Ansage "Play1 
an/aus" ab, danach ist der Player stumm. Deterministisch? Wird die 
Ansage immer abgespielt?

Theorien:
0) Vorbedingungen nicht gegeben => Könnte logisches Verhalten sein, kein 
Fehler.

1) Button prellt, triggert dabei Abspielen von Playlist 4 und diese ist 
leer. => Sollte sich durch eine gefüllte Playlist 4 und einen weiterhin 
stummen Player be- oder wiederlegen lassen.

2) Das 500er und/oder 501er MP3 ist kaputt und lässt den Player hängen 
bleiben. Ist er danach noch bedienbar? Randbemerkungen: Bei meinen 
Karte-rein/raus- & USB-rein/raus-Testspielchen habe ich es auch 
hinbekommen, dass ein paar Bytes eines normalen MP3s auf der SD 
kaputtgegangen sind. Gab aber nur Audio-Glitches, die ich durch 
Überspielen des Files heilen konnte. => Versuch mal die Files für ADVERT 
und MP3 frisch einzuspielen.

Sonstige Fragen:
-Gibt es einen Codestand, bei dem du das Problem nicht hast (mit 
gleicher SD-Karte)? Welcher wäre das?
-Welcher Bezeichner steht auf dem Chip des Players?

Danke für deine Unterstützung!

Grüße
ghmartin77

von Klaus R. (klaus2)


Bewertung
1 lesenswert
nicht lesenswert
Vll wäre es fair der Fragende schickt dir den Player (Modul) und du fixt 
sein Problem dann closed loop? Aber Hut ab für support und Geduld!!!

Klaus.

: Bearbeitet durch User
von Tim M. (brotzeit)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> Vorbedingungen:

alle Vorbedingungen logischerweise ganz klar erfüllt

> Beobachtung:
> -Button 4 länger halten, dann loslassen spielt noch die Ansage "Play1
> an/aus" ab, danach ist der Player stumm. Deterministisch? Wird die
> Ansage immer abgespielt?

Ansage wird immer abgespielt

> Versuch mal die Files für ADVERT
> und MP3 frisch einzuspielen.

Ganz heißer Tip, jetzt wirds crazy:

Habe die Dateien 0500.mp3 und 0501.mp3 als "Titel wiederholen" und 
"Titel fortlaufend" mit ttsmp3.com erstellt
Komischerweise hängt er immer bei "Titel wiederholen". Also neu 
generiert, jedoch gleiches Problem. Dateinamen 0500 und 0501 getauscht, 
und siehe da das Problem wandert mit. Auch wenn ich daraus 0200 o.ä. 
mache wandert das Problem mit. Komischerweise ist die Datei nicht 
besonders groß und nicht länger als die anderern.
Jetzt habe beim MP3 generieren ne andere Stimme angewählt und es 
funktioniert...
Keine Ahnung an was sich der Player da stört.


Beim Abspielen über USB beendet er die Wiedergabe allerdings nach 
jeglicher Ansage!



> Sonstige Fragen:
> -Gibt es einen Codestand, bei dem du das Problem nicht hast (mit
> gleicher SD-Karte)? Welcher wäre das?

Dein Code siehe Beitrag vom  06.01.2020 22:08

>
> Danke für deine Unterstützung!
Gerne, ich danke DIR!!!

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi Minsula,

Glückwunsch zum selbstgebauten Player!

...und vielen Dank für deine Zusammenfassung der Stolperstein-Lösungen. 
Das hilft der Nachwelt sicher.

Die Antwort zur 100nF-Capacitor-Frage findet sich in diesem Beitrag:
Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder auf ATTiny-Basis"

Und: Ohne Photos gilt der Player als nicht real :-) Zeigen!!!

Grüße
ghmartin77

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tim M. schrieb:
> Jetzt habe beim MP3 generieren ne andere Stimme angewählt und es
> funktioniert...

Wir kommen näher :-)

Lass mich bitte kurz verstehen, was jetzt läuft und was noch nicht geht.

Bezug auf Codeversion in 
Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder auf ATTiny-Basis"

Gehen damit die folgenden Dinge:
- Mediumwechsel bei Einstecken von USB auf USB (Ja/Nein)?
- Mediumwechsel bei Einstecken von SD auf SD (Ja/Nein)?
- Quellmedium beim frischen Start immer USB, wenn eingesteckt, sonst SD 
(Ja/Nein)?
- Kontinuierliches Abspielen auf SD (Ja/Nein)?
- Kontinuierliches Abspielen auf USB (Ja/Nein)?
- Playlistloop auf SD (Ja/Nein)?
- Playlistloop auf USB (Ja/Nein)?
- Neustart letzter Titel beim Einschalten auf SD (Ja/Nein)?
- Neustart letzter Titel beim Einschalten auf USB (Ja/Nein)?
- Repeat1 auf SD (Ja/Nein)?
- Repeat1 auf USB (Ja/Nein)?
- Automatisch Fortsetzen von laufenden Titeln auf SD, wenn 
Konfigurationsänderungen vorgenommen werden? (Ja/Nein)?
- Automatisch Fortsetzen von laufenden Titeln auf USB, wenn 
Konfigurationsänderungen vorgenommen werden? (Ja/Nein)?

Deinen Kommentar
> Beim Abspielen über USB beendet er die Wiedergabe allerdings nach
> jeglicher Ansage!
verstehe ich als "Nein" in Bezug auf den letzten Punkt der obigen Liste. 
Richtig?

Was mir noch fehlt, ist die Antwort auf meine Frage oben:
> -Welcher Bezeichner steht auf dem Chip des Players?

Die nachfolgende Antwort verstehe ich nach deinen Ausführungen zur 
Problembehebung durch neues File für 500.mp3 nicht:
>> Sonstige Fragen:
>> -Gibt es einen Codestand, bei dem du das Problem nicht hast (mit
>> gleicher SD-Karte)? Welcher wäre das?
>
> Dein Code siehe Beitrag vom  06.01.2020 22:08

Pausieren eines laufenden Tracks, Abspielen einer 
Konfigurationsänderungsansage, und anschließendes Fortsetzen des 
pausierten Tracks macht der Player ohne äußeres Zutun komplett autark 
und ohne Code aus dem ATTiny. Wenn das 500er-File ihn also mit dem neuen 
Code killt, dann sollte das auch mit jedem anderen Code Stand passieren. 
War deine Aussage Erinnerungsvermutung oder hast du das getestet?

Grüße
ghmartin77

von Tim M. (brotzeit)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:

Nach deiner Info das der Player den Ablauf der Ansagen autark regelt, 
vermute ich das der (die) Player "zicken".


Deshalb den Originalen DRrobot-player aus einem Funktionierenden Hörbert 
ausgebaut und getestet:

> Bezug auf Codeversion in
> Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder auf
> ATTiny-Basis"

> Gehen damit die folgenden Dinge:
> - Mediumwechsel bei Einstecken von USB auf USB (Ja/Nein)?
JA
> - Mediumwechsel bei Einstecken von SD auf SD (Ja/Nein)?
JA
> - Quellmedium beim frischen Start immer USB, wenn eingesteckt, sonst SD
> (Ja/Nein)?
NEIN, startet immer von SD
> - Kontinuierliches Abspielen auf SD (Ja/Nein)?
JA
> - Kontinuierliches Abspielen auf USB (Ja/Nein)?
JA
> - Playlistloop auf SD (Ja/Nein)?
JA
> - Playlistloop auf USB (Ja/Nein)?
JA
> - Neustart letzter Titel beim Einschalten auf SD (Ja/Nein)?
JA
> - Neustart letzter Titel beim Einschalten auf USB (Ja/Nein)?
NEIN, startet von SD
> - Repeat1 auf SD (Ja/Nein)?
JA
> - Repeat1 auf USB (Ja/Nein)?
JA
> - Automatisch Fortsetzen von laufenden Titeln auf SD, wenn
> Konfigurationsänderungen vorgenommen werden? (Ja/Nein)?
JA
> - Automatisch Fortsetzen von laufenden Titeln auf USB, wenn
> Konfigurationsänderungen vorgenommen werden? (Ja/Nein)?
JA


Meine anderen Player (siehe auch Beitrag 15.09.2018 21:42) haben den 
Aufdruck:
JC AA1752CJ3J13.1-94
auf dem kleinen Chip steht beim Fake nichts.

Test mit Gleidem Code mit den anderen Playern:

> - Mediumwechsel bei Einstecken von USB auf USB (Ja/Nein)?
JA
> - Mediumwechsel bei Einstecken von SD auf SD (Ja/Nein)?
JA
> - Quellmedium beim frischen Start immer USB, wenn eingesteckt, sonst SD
> (Ja/Nein)?
JA (im Gegenteil zum Original Player)
> - Kontinuierliches Abspielen auf SD (Ja/Nein)?
JA
> - Kontinuierliches Abspielen auf USB (Ja/Nein)?
JA
> - Playlistloop auf SD (Ja/Nein)?
JA
> - Playlistloop auf USB (Ja/Nein)?
JA
> - Neustart letzter Titel beim Einschalten auf SD (Ja/Nein)?
Nein, Startet von USB (im Gegenteil zum Original Player)
> - Neustart letzter Titel beim Einschalten auf USB (Ja/Nein)?
JA
> - Repeat1 auf SD (Ja/Nein)?
JA
> - Repeat1 auf USB (Ja/Nein)?
JA
> - Automatisch Fortsetzen von laufenden Titeln auf SD, wenn
> Konfigurationsänderungen vorgenommen werden? (Ja/Nein)?
JA
> - Automatisch Fortsetzen von laufenden Titeln auf USB, wenn
> Konfigurationsänderungen vorgenommen werden? (Ja/Nein)?
NEIN


>> Beim Abspielen über USB beendet er die Wiedergabe allerdings nach
>> jeglicher Ansage!
> verstehe ich als "Nein" in Bezug auf den letzten Punkt der obigen Liste.
> Richtig?
JA
> Was mir noch fehlt, ist die Antwort auf meine Frage oben:
>> -Welcher Bezeichner steht auf dem Chip des Players?
s.o.

> Die nachfolgende Antwort verstehe ich nach deinen Ausführungen zur
> Problembehebung durch neues File für 500.mp3 nicht:
>>> Sonstige Fragen:
>>> -Gibt es einen Codestand, bei dem du das Problem nicht hast (mit
>>> gleicher SD-Karte)? Welcher wäre das?
>>
>> Dein Code siehe Beitrag vom  06.01.2020 22:08
>
> Pausieren eines laufenden Tracks, Abspielen einer
> Konfigurationsänderungsansage, und anschließendes Fortsetzen des
> pausierten Tracks macht der Player ohne äußeres Zutun komplett autark
> und ohne Code aus dem ATTiny. Wenn das 500er-File ihn also mit dem neuen
> Code killt, dann sollte das auch mit jedem anderen Code Stand passieren.
> War deine Aussage Erinnerungsvermutung oder hast du das getestet?

Mehrmals reproduzierbar getestet!
Beim Software Stand (06.01.2020 22:08) läuft die Wiedergabe nach dem 
500er-File weiter, bei der neuen nicht. Mit ner alternativ erstellten 
500er Datei gehts dann komischerweise. Habe den Test jetzt an 5 
"Fake"-Playern gemacht, und das Problem tritt bei 2 von 5 Playern auf. 
Irgendwas spuckt denen da in die Suppe, möglicherweise haben die aber 
auch einen ab?

Fazit:
Beim Original Player läuft soweit alles, außer das er beim Starten immer 
von SD startet, auch wenn USB Medium vorhanden ist.

Beim Fake-Player läuft soweit alles, läuft nur nach einer Ansage nicht 
weiter.


(Timer, Pause_on_Min_Volume und Previous habe ich nicht getestet)

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nicht ganz schlecht...

Vielen Dank für den erheblichen Testaufwand. Hoffe es klingeln nicht 
schon die immer gleichen Audio-Files in den Ohren :)

Loser Braindump dazu:
1) Dass der DFRobot keine Prio zum Abspielen von USB gibt, könnte an 
einer vielleicht längeren Initialisierungszeit des USB-Devices liegen 
(ggf. auch noch abhängig von der Anzahl Files auf dem Stick). 
Holzhammerversuch zum Gegentest: In Zeile 328 aus "delay(50)" 
"delay(5000)" machen und in Zeile 336 aus "i < 10" "i < 100".

2) Dass der JC-Chip scheinbar bei USB keine laufenden Titel fortsetzt 
lässt sich vermutlich nicht beheben, da -wie oben ausgeführt- die 
Funktionalität komplett in der Player-Hardware liegt.

3) Du hattest zu "Neustart letzter Titel beim Einschalten auf SD" für 
den JC'ler "geht nicht, startet von USB vermeldet". Das ist nicht 
verblüffend, weil er beim Einschalten die Prio auf USB legt. Im Code 
gibt es aber keine Unterscheidung von welchem Medium der letzte Track 
kam (kein Platz mehr :)). Das kann also nur (richtig) funktionieren, 
wenn nur ein Medium eingelegt ist. Wenn der DFRobot mit der Änderung aus 
#1 auch auf USB-Prio schalten sollte, siehst du dort das gleiche 
Verhalten.

4) Tim M. schrieb:
> Mehrmals reproduzierbar getestet!
> Beim Software Stand (06.01.2020 22:08) läuft die Wiedergabe nach dem
> 500er-File weiter, bei der neuen nicht. Mit ner alternativ erstellten
> 500er Datei gehts dann komischerweise. Habe den Test jetzt an 5
> "Fake"-Playern gemacht, und das Problem tritt bei 2 von 5 Playern auf.
> Irgendwas spuckt denen da in die Suppe, möglicherweise haben die aber
> auch einen ab?

Da fällt mir derzeit keine plausible Erklärung zu ein. Muss ich mal ein 
paar Nächte drüber schlafen. Da David aber genau das selbe berichtet 
hatte, glaube ich nicht, dass der Player nen Schlag hat...

5) Hab folgenden Thread bei den Kollegen vom TonUINO gefunden: 
http://discourse.voss.earth/t/dfplayer-verschiedene-versionen/681
Es gibt noch mehr Varianten auf dem Markt mit noch viel lustigeren 
Feature-Abstrusitäten bis hin zu inkompatiblen Pinbelegungen.
--> Uns geht's noch sooooo gut :)

Grüße
ghmartin77

von Tim M. (brotzeit)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> Nicht ganz schlecht...
>
> Vielen Dank für den erheblichen Testaufwand. Hoffe es klingeln nicht
> schon die immer gleichen Audio-Files in den Ohren :)

Wie kommst du denn darauf :), Ich glaub die Lieder haben sich schon in 
meinen Kopf gebrannt...
Hatte heute ein bischen Zeit, da hat das Ausprobieren Spass gemacht...


> 5) Hab folgenden Thread bei den Kollegen vom TonUINO gefunden:
> http://discourse.voss.earth/t/dfplayer-verschiedene-versionen/681
> Es gibt noch mehr Varianten auf dem Markt mit noch viel lustigeren
> Feature-Abstrusitäten bis hin zu inkompatiblen Pinbelegungen.
> --> Uns geht's noch sooooo gut :)

Interessant, ich glaube mit dem Original ist man am Besten aufgehoben.
Ich würde halt gerne meine übrigen Player unterbringen.
Mit dem aktuellen Softwarestand kann ich allerdings gut leben.

Hab jetzt noch diverse USB-Sticks mit diversen Liedern getestet, und 
festgestellt das bei manchen nach der Ansage weitergespielt wird. 
Allerdings nicht bei allen Ansagen. Muss da mal noch ein bischen 
experimentieren...

Mit den Störgeräuschen im Verstärkerbetrieb bin ich leider noch nicht 
weitergekommen. Auch die Tips von Stefan haben nicht geholfen.
Hatte hier wohl schon das Optimum rausgeholt, bei diversen Änderungen 
und Versuchen mit der Stromversorgung wurde es prizipiell nur 
schlechter. Keine Ahnung wie ich das entstört bekomme.
Zur Not muss ich die beiden Lautsprecher doch an den Verstärkerausgang 
am DFPlayer anschließen...

von Klaus R. (klaus2)


Bewertung
0 lesenswert
nicht lesenswert
...diese Verstärkerprobleme hatte ich auch schon oft, vor allem bei Mix 
aus digiatl & analog oder digital und digital. Lösen konnte das hier 
auch niemand, Problemthreads gibt's dazu aber zu Hauf. WAS hilft - auch 
wenn es die Ursache noch nicht erklärt, aber in meinen Fällen fast immer 
zu einer Llsg führt - sind Audiotransfomatoren. Da gibt's 10 Stck für 2€ 
in China, damit entkoppelst du Player und Amp...und sehr, sehr oft sind 
die Probleme dann weg. Wobei auch ich gerne einfach nur verstehen würde, 
wie man es "zielgerichtet(er)" löst, aber...in diesem Fall zählt ja auch 
nur das Ergebnis.

Klaus.

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kam vor ein paar Tagen online: Vielleicht gibt dir das noch Ideen:
Youtube-Video "How to remove buzzing/noise from a cheap Bluetooth Music Receiver? (Experiment)"

von Tim M. (brotzeit)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Klaus,
danke für den Tip. Muss ich probieren!

So wie ich das sehe werden die Audiotransformatoren eigentlich zwischen 
Verstärker und Lautsprecher eingebaut?
Aber zum Entkoppeln von Player und Verstärker, kommt dann ein 
Ausiotransformator zwischen Spannungsversorung und Verstärker und einer 
zwischen Spannungsversorgung und DFPlayer?

Welche Werte muss der Trafo da haben?
Bin in der Bucht z.B. über 10X Audio Transformer 600:600 Ohm 1:1 EI14 
gestolpert. Wäre sowas passend?

von Tim M. (brotzeit)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> Kam vor ein paar Tagen online: Vielleicht gibt dir das noch Ideen:

Top! Werde ich versuchen! "Hört" sich nach dem gleichen Problem an...

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tim M. schrieb:
> Hab jetzt noch diverse USB-Sticks mit diversen Liedern getestet, und
> festgestellt das bei manchen nach der Ansage weitergespielt wird.
> Allerdings nicht bei allen Ansagen. Muss da mal noch ein bischen
> experimentieren...

Hm, das bringt mich auf eine Idee, vielleicht haut's den Player oder den 
Stick einfach wg. kurzfristig instabiler Spannung um.
Versuch doch mal einen 100nF- und einen 100uF-Kondensator über 5V/GND 
des USB-Sticks und Versuchsweise das gleiche Konstrukt über VCC/GND des 
DFPlayers zu setzen.

Vielleicht hilft's ja... :)

von Klaus R. (klaus2)


Bewertung
0 lesenswert
nicht lesenswert
Video: Audiotransformer oder Dc/Dc, ja das ist alles bekannt. Aber mMn 
nur die hauruck Lsg. Btw, interessanter Akzent...?

@Tim: Nimm die 600er Trafos und feddich, genau wie im Video.

Klaus.

: Bearbeitet durch User
von Thomas (Gast)



Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Ich bin mittlerweile völlig verzweifelt, ich finde einfach den Fehler 
nicht :/
Habe den Fake-Player (rote LED, siehe Chipnummer auf Foto)

-Sind die Schaltpläne/Platinen richtig? Vllt sehe ich den Fehler vor 
lauter Draufstarren nicht.
-ATtiny85 ist problemlos geflasht auf 8Mhz internal
-Sketch ist compiliert und hochgeladen
-rote LED leuchtet schwach bei Start
-sowohl Volume als auch max-Volume haben keine Auswirkungen
-SD Karte ist (alle Ordner angelegt, 01/001.mp3 existiert und die erste 
Advert)
-Druck auf Knöpfe hat keine Auswirkung
-nur wenn ich beim Messen tx und rx kurzschliesse spielt er ein File ab 
- volle Lautstärke
-Wo/Wie messe ich current? Laut Kalkulation komme ich bei 32kOhm Pullup 
auf genau die 933 aus dem Code
-Wie kann ich den Arduino zwischenschalten um zu debuggen bzw. Logs zu 
schreiben?

Sieht irgendjemand meine(n) Fehler?

Danke, Thomas

von Tim (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,
hast du Pin3 vom Attiny richtig am Poti angeschlossen?
(gehört in die "Mitte")
Max Vol Poti auch an + angeschlossen?

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi Tim,

Den Vol-Poti habe ich imho richtig dran (und eigentlich auch jede 
Kombination durch...) - was Max-Volume angeht - nein hatte ich in einer 
vorherigen Platinenversion, aber im Schaltplan im Repo ist diese 
Verbindung rot.

von Tim (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stimmt ist rot. Warum auch immer...?
Ich hab an meinen Playern den Poti mit + verbunden!

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ok, ändere ich, danke - aber das dürfte ja nicht das Button-Problem 
lösen

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> -Wie kann ich den Arduino zwischenschalten um zu debuggen bzw. Logs zu
> schreiben?

Hi Thomas,

nimm einen Arduino und flash auf den Code aus diesem Beitrag drauf:
Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder auf ATTiny-Basis"

Da steht auch im Textverlauf, wie die Bedienung erfolgt und welche Pins 
du am Arduino mit TX/RX am Player verbinden musst (D2/D3)...

Grüße
ghmartin77

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Okay, er findet keine Files in en Foldern bei beiden Playern, scheinen 
mir aber vom Chip her identisch zu sein.
22:51:44.334 ->
22:51:44.334 -> Starting up...
22:51:44.505 -> Packet sent: 7E FF 6 7 0 0 0 FE F4 EF
22:51:44.607 -> Packet sent: 7E FF 6 9 0 0 0 FE F2 EF
22:51:44.848 -> Packet sent: 7E FF 6 1A 0 0 0 FE E1 EF
22:51:45.121 -> DFPlayer initialized...
22:51:45.121 -> Packet sent: 7E FF 6 6 0 0 2 FE F3 EF
22:51:45.190 -> Packet sent: 7E FF 6 4E 0 0 1 FE AC EF
22:51:55.167 -> No of tracks in playlist#1: 0
22:51:55.200 -> Packet sent: 7E FF 6 4E 0 0 2 FE AB EF
22:52:05.165 -> No of tracks in playlist#2: 0
22:52:05.199 -> Packet sent: 7E FF 6 4E 0 0 3 FE AA EF
22:52:15.166 -> No of tracks in playlist#3: 0
22:52:15.199 -> Packet sent: 7E FF 6 4E 0 0 4 FE A9 EF
22:52:25.190 -> No of tracks in playlist#4: 0
22:52:25.190 -> Packet sent: 7E FF 6 4E 0 0 5 FE A8 EF
22:52:35.194 -> No of tracks in playlist#5: 0
22:52:35.194 -> Packet sent: 7E FF 6 4E 0 0 6 FE A7 EF
22:52:45.205 -> No of tracks in playlist#6: 0
22:52:45.205 -> Packet sent: 7E FF 6 4E 0 0 7 FE A6 EF
22:52:55.205 -> No of tracks in playlist#7: 0
22:52:55.205 -> Packet sent: 7E FF 6 4E 0 0 8 FE A5 EF
22:53:05.200 -> No of tracks in playlist#8: 0
22:53:05.200 -> Packet sent: 7E FF 6 4E 0 0 9 FE A4 EF
22:53:15.195 -> No of tracks in playlist#9: 0
22:53:15.195 -> Packet sent: 7E FF 6 4E 0 0 A FE A3 EF
22:53:25.215 -> No of tracks in playlist#10: 0
22:53:25.215 -> Packet sent: 7E FF 6 4E 0 0 B FE A2 EF
22:53:35.215 -> No of tracks in playlist#11: 0
22:53:35.215 -> continuousPlayWithinPlaylist: ON
22:53:35.215 -> loopPlaylist: ON
22:53:35.215 -> restartLastTrackOnStart: ON
22:53:35.215 -> repeat1: off
22:53:53.098 -> Packet sent: 7E FF 6 F 0 1 1 FE EA EF
22:53:53.610 -> Packet sent: 7E FF 6 4B 0 0 0 FE B0 EF

Kommando "1" hatte keine Auswirkungen.

In Ordner 01 ist aber ein File namens 001.mp3, und ich habe ein 0001.mp3 
in /Advert und /MP3.
FAT32 oder FAT16 macht leider keinen Unterschied.

LG Thomas

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi Thomas,

probier mal bitte folgendes: Lass das Teil soweit starten, wie im Log 
oben zu sehen.
Dann nimm mal die SD-Karte aus dem Slot.
Schau mal, ob du dabei eine Meldung vom Player bekommst "Packet 
received".
Wenn das nicht der Fall ist, prüf mal die Verbindung zwischen TX am 
Player und RX-Pin (D3) am Arduino. Die obigen Logmeldungen lassen die 
Vermutung aufkommen, dass eben genau der Kommunikationskanal vom Player 
zum Arduino nicht funktioniert. Die 10 Sekunden zwischen Kommando 4E 
(GetNoFilesInFolder) und der jeweiligen 0er-Rückgabe stammen nicht aus 
dem Player, sondern rühren vom Timeout her.

Zum Testen, ob er das File auslesen kann, kannst du auch einmal kurz den 
Pin ADKEY1 das Players auf GND ziehen (das Metallgehäuse der SD-Card 
liegt auf GND, da ist's Zielen nicht so schwer). Wenn er dann was 
abspielt, ist schonmal Karte, Dateisystem und Zugriff in Ordnung.

Grüße
ghmartin77

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

also abspielen geht, das hatte ich durch Zufall schon herausgefunden.

Habe mal TX und RX getauscht, interessanterweise komme ich dann weiter, 
der Lautsprecher spielt ab, knattert aber extrem.
Log:
: 7E FF 6 40 0 0 6 FE B5 EF
09:10:54.216 ->     --> Command: 40
09:10:54.216 ->     --> Argument: 6
09:10:54.216 -> No of tracks in playlist#2: 0
09:10:54.216 -> Packet sent: 7E FF 6 4E 0 0 3 FE AA EF
09:10:54.284 -> Packet received: 7E FF 6 40 0 0 6 FE B5 EF
09:10:54.284 ->     --> Command: 40
09:10:54.284 ->     --> Argument: 6
09:10:54.318 -> No of tracks in playlist#3: 0
09:10:54.318 -> Packet sent: 7E FF 6 4E 0 0 4 FE A9 EF
09:10:54.352 -> Packet received: 7E FF 6 40 0 0 6 FE B5 EF
09:10:54.387 ->     --> Command: 40
09:10:54.387 ->     --> Argument: 6
09:10:54.387 -> No of tracks in playlist#4: 0
09:10:54.387 -> Packet sent: 7E FF 6 4E 0 0 5 FE A8 EF
09:10:54.455 -> Packet received: 7E FF 6 40 0 0 6 FE B5 EF
09:10:54.455 ->     --> Command: 40
09:10:54.455 ->     --> Argument: 6
09:10:54.455 -> No of tracks in playlist#5: 0
09:10:54.455 -> Packet sent: 7E FF 6 4E 0 0 6 FE A7 EF
09:10:54.523 -> Packet received: 7E FF 6 40 0 0 6 FE B5 EF
09:10:54.523 ->     --> Command: 40
09:10:54.523 ->     --> Argument: 6
09:10:54.559 -> No of tracks in playlist#6: 0
09:10:54.559 -> Packet sent: 7E FF 6 4E 0 0 7 FE A6 EF
09:10:54.593 -> Packet received: 7E FF 6 40 0 0 6 FE B5 EF
09:10:54.593 ->     --> Command: 40
09:10:54.627 ->     --> Argument: 6
09:10:54.627 -> No of tracks in playlist#7: 0
09:10:54.627 -> Packet sent: 7E FF 6 4E 0 0 8 FE A5 EF
09:10:54.695 -> Packet received: 7E FF 6 40 0 0 6 FE B5 EF
09:10:54.695 ->     --> Command: 40
09:10:54.695 ->     --> Argument: 6
09:10:54.695 -> No of tracks in playlist#8: 0
09:10:54.695 -> Packet sent: 7E FF 6 4E 0 0 9 FE A4 EF
09:10:54.762 -> Packet received: 7E FF 6 40 0 0 6 FE B5 EF
09:10:54.762 ->     --> Command: 40
09:10:54.762 ->     --> Argument: 6
09:10:54.797 -> No of tracks in playlist#9: 0
09:10:54.797 -> Packet sent: 7E FF 6 4E 0 0 A FE A3 EF
09:10:54.831 -> Packet received: 7E FF 6 40 0 0 6 FE B5 EF
09:10:54.831 ->     --> Command: 40
09:10:54.865 ->     --> Argument: 6
09:10:54.865 -> No of tracks in playlist#10: 0
09:10:54.865 -> Packet sent: 7E FF 6 4E 0 0 B FE A2 EF
09:10:54.932 -> Packet received: 7E FF 6 40 0 0 6 FE B5 EF
09:10:54.932 ->     --> Command: 40
09:10:54.932 ->     --> Argument: 6
09:10:54.932 -> No of tracks in playlist#11: 0
09:10:54.932 -> continuousPlayWithinPlaylist: ON
09:10:54.932 -> loopPlaylist: ON
09:10:54.932 -> restartLastTrackOnStart: ON
09:10:54.932 -> repeat1: off
09:10:55.445 -> Packet sent: 7E FF 6 F 0 1 1 FE EA EF
09:10:55.962 -> Packet sent: 7E FF 6 4B 0 0 0 FE B0 EF
09:10:55.962 -> Packet received: 7E FF 6 4B 0 0 0 FE B0 EF
09:10:55.962 ->     --> Command: 4B
09:10:55.996 ->     --> Argument: 0
09:11:05.156 -> Packet sent: 7E FF 6 F 0 1 1 FE EA EF
09:11:05.666 -> Packet sent: 7E FF 6 4B 0 0 0 FE B0 EF
09:11:05.666 -> Packet received: 7E FF 6 4B 0 0 0 FE B0 EF
09:11:05.666 ->     --> Command: 4B
09:11:05.666 ->     --> Argument: 0

Er findet den Track, danach habe ich die Karte raus und wieder 
reingesteckt.
No of tracks in playlist#1: 1!

LG

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> Habe mal TX und RX getauscht

Genau so, wie es jetzt ist, ist es richtig herum geschaltet. Erkennst du 
daran, dass du nicht nur Daten verschickst ("Packet sent"), sondern die 
auch empfangen, verarbeitet und beantwortet werden und wieder beim uC 
ankommen ("Packet received").
Allerdings musst du drauf achten, dass du den 1K-Widerstand an der 
richtigen Stelle einbaust. Der gehört in die Leitung, die am DFPlayer in 
RX mündet. Falls der fehlt oder in der anderen Leitung steckt, könnte 
das deinen Lautsprecherlärm erklären...

Grüße
ghmartin77

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi ghmartin,

Danke, jetzt bin ich ein wenig verwirrt, wenn ich den Playewr an den 
Arduino zum debuggen wie oben beschrieben anschliesse geht nichts (ist 
das absichtlich die falsche Zuordnung zu TX/RX?), wenn ich TX und RX 
tausche geht es - und das ist die richtige? (habe in diesem Testsetup 
noch keinen Widerstand eingebaut, mache ich gleich mal).
Aber zurück zu meinem Ursprungsproblem, siehe meine Platine oben, das 
ist ja die richtige Verbindung inkl. Widerstand gesetzt. Oder nicht? 
Sorry, wie gesagt, bin gerade verwirrt.

von Thomas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
...wenn ich mir Pinouts und den Code anschaue:
Pin 5 auf TX und PIN 6 mit Widerstand an RX

SoftwareSerial softSerial(0, 1); // RX, TX

Müsste diese Zeile dann nicht so aussehen?
SoftwareSerial softSerial(1, 0); // RX, TX

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
So, wie du ihn angeschlossen hast, um deine Ausgaben im Beitrag vom 
31.1., 15:02 zu erzeugen, ist die Aufschaltung richtig (ggf. noch ohne 
fehlenden 1K-Widerstand, um Störgeräusche zu unterdrücken)

Das müsste so sein:
D2 ---- 1k ----- RX(DFPlayer)
D3 ------------- TX(DFPlayer)

Haste wahr, oben in den Beiträgen ist die Aufschaltung vertauscht 
beschrieben.

Thomas schrieb:
> SoftwareSerial softSerial(0, 1); // RX, TX

Das sieht mir zu deiner Platine sehr passend aus. Obacht mit den 
Bezeichnern.
Was ich im Kommentar hinterlassen habe ("// RX, TX") ist die 
Reihenfolge, wie das UART-IF aus Sicht des uC aussieht, auf dem der Code 
läuft.
  => 0 ist RX am uC, 1 ist TX am uC

Da TX am uC mit RX am DFPlayer verbunden werden muss (mit 1K-Widerstand 
dazwischen) und RX am uC mit TX am DFPlayer, ist die Verwirrung perfekt, 
nicht wahr :)

Am besten, du testest mit dem Arduino, wie's richtig ist und prüfst dann 
die Positionen D2/D3 aus dem Arduino Code gegen 0/1 im ATTiny-Code. 
Parallelvergleich der Verschaltung und dann sollte sich ein schlüssiges 
Bild ergeben.

Grüße
ghmartin77

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@Tim: Ich hatte dir weiter oben noch den hier hinterlassen:

ghmartin77 schrieb:
> Loser Braindump dazu:
> 1) Dass der DFRobot keine Prio zum Abspielen von USB gibt, könnte an
> einer vielleicht längeren Initialisierungszeit des USB-Devices liegen
> (ggf. auch noch abhängig von der Anzahl Files auf dem Stick).
> Holzhammerversuch zum Gegentest: In Zeile 328 aus "delay(50)"
> "delay(5000)" machen und in Zeile 336 aus "i < 10" "i < 100".

Konntest du das schon testen? Wenn das geht, kannst du dich mit 
kleineren Pausenwerten an vernünftige Zeiten annähern.

Daneben habe ich noch nen kleinen Analyzer für den DFPlayer und seine 
vielen Schwestern und Brüder zusammengebastelt, der verschiedene 
Funktionen abtestet. Wär super, wenn du den mit deinen Player-Versionen 
mal ausführen könntest:
https://github.com/ghmartin77/DFPlayerAnalyzer

@Thomas: Dort ist auch ein Breadboard-Bild zu finden, an dem du die 
Aufschaltung nachvollziehen kannst.

Grüße
ghmartin77

von Thomas I. (thomas_i871)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> ...
>
> Am besten, du testest mit dem Arduino, wie's richtig ist und prüfst dann
> die Positionen D2/D3 aus dem Arduino Code gegen 0/1 im ATTiny-Code.
> Parallelvergleich der Verschaltung und dann sollte sich ein schlüssiges
> Bild ergeben.
>
> Grüße
> ghmartin77


Ok, verstanden, mit dem Arduino inkl. Widerstand ist alles gut. Werde 
jetzt mit dem Breadboard und dem ATtiny85 testen, erstmal ohne Volume 
und MaxVolume. Irgendwie muss ich das Problem einkreisen...siehst Du bei 
der Buttonleiste einen Fehler? Wie kann ich Key-Current an den Buttons 
messen?

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas I. schrieb:
> Wie kann ich Key-Current an den Buttons
> messen?

Physikalisch: +5V an VCC, GND an GND, Spannung zwischen VCC und dem 
Analogausgang des Tastenfeldes messen. (Dabei fehlt dir dann zwar der 
interne Widerstand des ATTiny in der Messung, aber du siehst, ob das 
Feld generell funktioniert, wenn du die Tasten drückst.)

Kannst das Feld aber auch direkt am Arduino anschließen. +5V an VCC, GND 
an GND und den Analogausgang an Pin A3. Dann Zeile 341 in handleKeyPress 
auskommentieren:
  // keyCurrent = 1023;

Zusätzlich kannst du dir auch noch keyCurrent in der Methode über 
Serial.println() ausgeben...

Grüße
ghmartin77

von Tim M. (brotzeit)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> @Tim: Ich hatte dir weiter oben noch den hier hinterlassen:
>
> ghmartin77 schrieb:
>> Loser Braindump dazu:
>> 1) Dass der DFRobot keine Prio zum Abspielen von USB gibt, könnte an
>> einer vielleicht längeren Initialisierungszeit des USB-Devices liegen
>> (ggf. auch noch abhängig von der Anzahl Files auf dem Stick).
>> Holzhammerversuch zum Gegentest: In Zeile 328 aus "delay(50)"
>> "delay(5000)" machen und in Zeile 336 aus "i < 10" "i < 100".
>
> Konntest du das schon testen? Wenn das geht, kannst du dich mit
> kleineren Pausenwerten an vernünftige Zeiten annähern.

So, Test mit dem originalen DFRobot durchgeführt.
Funktioniert! Wenn die Quelle vor dem Ausschalten USB war, startet er 
wieder mit USB.
Ich habe jetzt noch diverse USB-Sticks getestet, und festgestellt das 
die auch ziemlich in die Suppe spucken. Bei manchen Startet er 
automatisch, bei manchen muss ich erst noch einen Button drücken damit 
es wieder los geht.

Auch beim "Fake" Player unterschiedliches verhalten. Bei einem Stick 
wird immer nur ein Lied angespielt, bei anderen läuft es durch. Ebenso 
ist das Verhalten nach einer Ansage..

> Daneben habe ich noch nen kleinen Analyzer für den DFPlayer und seine
> vielen Schwestern und Brüder zusammengebastelt, der verschiedene
> Funktionen abtestet. Wär super, wenn du den mit deinen Player-Versionen
> mal ausführen könntest:
> https://github.com/ghmartin77/DFPlayerAnalyzer

Hier muss ich mir in ner ruhigen Minute mal anschauen wie ich das 
hinbekomme...

von Thomas I. (thomas_i871)


Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hilfe bis hierhin! Die Buttonleiste tut was sie soll, ich 
habe so langsam die Progrsmmierung des ATiny in Verdacht, werde uch 
nachher mal mit dem Breadboard neu stecken, nicht mit dem „Programmer“ 
den ich geschossen hatte.

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Et wird :)

Kleiner Tipp: Mit dem Arduino und seinen Debugausgaben, kannst du nun 
auch die Kommunikation zwischen deinem ATTiny/DFPlayer-Setup "mithören".
Die GNDs beider Schaltkreise müssen verbunden sein. Danach kannst du den 
RX-Pin am Arduino (D3) auf entweder den RX- oder TX-Pin am DFPlayer 
connecten. Die Serial-Out-Ausgabe zeigt dir, was die ATTiny und DFPlayer 
so bequatschen. Vielleicht kommst du damit dem Fehler auch näher.

Grüße
ghmartin77

von Thomas I. (thomas_i871)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> Et wird :)
>
> Kleiner Tipp: Mit dem Arduino und seinen Debugausgaben, kannst du nun
> auch die Kommunikation zwischen deinem ATTiny/DFPlayer-Setup "mithören".
> Die GNDs beider Schaltkreise müssen verbunden sein. Danach kannst du den
> RX-Pin am Arduino (D3) auf entweder den RX- oder TX-Pin am DFPlayer
> connecten. Die Serial-Out-Ausgabe zeigt dir, was die ATTiny und DFPlayer
> so bequatschen. Vielleicht kommst du damit dem Fehler auch näher.
>
> Grüße
> ghmartin77

Danke!

Aktueller Stand: Ich habe tatsächlich RX und TX vertauscht und auf dem 
Breadboard läuft nun sowohl Tastatur und Player mit dem ATtiny85...ABER 
;-)
Allerdings nur mit VCC an Pin 3 und GND an 7.
Ich bekomme weder den VOL noch Max-VOL Poti zum Laufen (was ich mich 
ziemlich fertig macht, da ich bestimmt ein Dutzen Gitarreneffekte gebaut 
hab, wo Potis mehrfach drin vorkommen...)
Sitze gerade über der handleVolume Funktion...

: Bearbeitet durch User
von Thomas I. (thomas_i871)


Bewertung
0 lesenswert
nicht lesenswert
Weiteres Phänomen: Von den 5,09V kommen nur 4,41 am ATtiny und DFPlayer 
an, wenn ich einen Poti hinzufüge schaffe ich auch damit die 
Mindestbetriebsspannung zu unterschreiten.

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas I. schrieb:
> Von den 5,09V kommen nur 4,41 am ATtiny und DFPlayer
> an

Wo sind wir denn hier? Breadboard? Platine gemäß Photos oben?

Was die Potis angeht, bitte folgendes prüfen:
1) Zwischen 2 der drei Pinne des Potis muss der Nennwertwiderstand des 
Potis mit einem Multimeter messbar sein und zwar unabhängig von der 
Einstellung des Drehknopfs. Bei einem 10K-Poti also 10KOhm. Die beiden 
Pins merken und auf den einen VCC (5V), auf den anderen GND aufschalten. 
Wie herum ist zunächst mal wurscht. Kannst du später so vertauschen, wie 
du es zur Drehrichtung des Potis am liebsten hättest (i.e. wo Max und wo 
Min liegen).

2) Dann miss mit einem Multimeter die Spannung zwischen dem VCC und dem 
dritten freien Pin. Sollte sich je nach Dreheinstellung zwischen ~0V und 
~5V bewegen. Wenn das nicht der Fall ist, ist entweder die Aufschaltung 
noch falsch oder das Poti hinüber.

3) Wenn alles gut ist: Schließ das ganze über Breadboard oder Platine 
mit ATTiny/Arduino und DFPlayer zusammen. Der dritte Pin kommt an den 
jeweils richtigen Input-Pin des ATTiny/Arduino.

Viel Erfolg!

Grüße
ghmartin77

PS: Die rote Linie des einen Potis im Github-Diagramm war mir bisher gar 
nicht aufgefallen. Richtig ist die Aufschaltung wie oben beschrieben. 
Alle drei Pins müssen aufgeschaltet werden, sonst funktioniert's nicht.

von Thomas I. (thomas_i871)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:

>
> Wo sind wir denn hier? Breadboard? Platine gemäß Photos oben?
>

Hallo und danke für den Betreuungsaufwand!
Tatsächlich Breadboard mit ATtiny - ohne Potis (VCC an Pin 3, GND an Pin 
7) funktioniert, allerdings mit der durch das Debugging auf dem Arduino 
voreingestellten Minimal-Lautstärke.

> Was die Potis angeht, bitte folgendes prüfen:
> 1) Zwischen 2 der drei Pinne des Potis muss der Nennwertwiderstand des
> Potis mit einem Multimeter messbar sein und zwar unabhängig von der
> Einstellung des Drehknopfs. Bei einem 10K-Poti also 10KOhm. Die beiden
> Pins merken und auf den einen VCC (5V), auf den anderen GND aufschalten.
> Wie herum ist zunächst mal wurscht. Kannst du später so vertauschen, wie
> du es zur Drehrichtung des Potis am liebsten hättest (i.e. wo Max und wo
> Min liegen).
>
> 2) Dann miss mit einem Multimeter die Spannung zwischen dem VCC und dem
> dritten freien Pin. Sollte sich je nach Dreheinstellung zwischen ~0V und
> ~5V bewegen. Wenn das nicht der Fall ist, ist entweder die Aufschaltung
> noch falsch oder das Poti hinüber.
>
> 3) Wenn alles gut ist: Schließ das ganze über Breadboard oder Platine
> mit ATTiny/Arduino und DFPlayer zusammen. Der dritte Pin kommt an den
> jeweils richtigen Input-Pin des ATTiny/Arduino.
>
> Viel Erfolg!
Danke, war auch mein Verständnis und beide Potis funktionieren wie 
gewünscht, haben aber keinen Einfluss auf die Lautstärke - hast Du eine 
Idee bzgl. des Verlustes von fast 1 V?

LG und Danke!

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas I. schrieb:
> hast Du eine
> Idee bzgl. des Verlustes von fast 1 V?

Nope, hatte Hoffnung, dass die Potis kaputt sind, resp. falsch 
angeschlossen und je nach Einstellung einen "Nahezu"-Kurzschluss 
verursacht hätten, der den Spannungsabfall erklären könnte.
Da hilft nur systematisches durchtesten...:
Spannungsversorgung alleine Messen.
ATTiny in den Kreis mit aufnehmen. VCC gegen GND messen.
Nächste Komponente beipacken. Wieder messen...
Usw.usf. bis klar ist, mit welcher Komponente der Spannungsabfall 
induziert wird.

Zu den Potis fällt mir noch ein:
Damit das mit dem Einfluss auf die Lautstärke funktioniert, müssen 
beide(!) richtig angeschlossen sein. Der Einstellwert des einen 
reguliert den Maximalwert des anderen. Bleibt ein Pin floating, kommt 
keine sinnvolle Einstellbarkeit raus.
Wenn du mit nur einem Poti testen willst, ändere diesen Code in 
handleVolume()
    int volNew = (map(volCurrent, 0, 1023, 1,
                      31 - map(volInternal, 1023, 0, 1, 30))) * volFade;
wie folgt
    int volNew = (map(volCurrent, 0, 1023, 1, 31)) * volFade;

Dann brauchst du nur noch ein Poti (an den richtigen Pin) für die 
dirkete Lautstärkeeinstellung anzuhängen. Wie oben vorgeschlagen: 
Ersttest mit Arduino, dann kannst du dir auch ein paar 
Serial.println()-Debugausgaben reinbasteln...

Grüße
ghmartin77

von Thomas I. (thomas_i871)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Habe maxvol rausgenommen und auch die Abfrage im Code angepasst.
LÄUFT! Ich denke ich hatte nie beide Poti gleichzeitig laufen, aber der 
Code griff ja darauf zu.
Habe noch ne kleine Verständnisfrage (ich will ja auch was lernen) - 
warum muss Pin 7 auf GND gehen, wenn der ja nun im Code keine Rolle mehr 
spielt (außer beim Setup)?
Den Spannungsverlust auf 4,27V sehe ich nur am ATtiny (Pins 4 und 8) - 
wird wohl der innere Widerstand sein?

Kinderkrankheit die jetzt noch bleibt: Er schaltet sich nach ein paar 
Sekunden ab (Powerbank zu schwach gefordert?) - habe einen log-Poti 
(B10k) dran, selbst bei einer mittleren Lautstärke (2,9V an Pin 3) läuft 
er nicht durch.

Hattet Ihr das Problem gelöst?

Danke!

von Thomas I. (thomas_i871)


Bewertung
0 lesenswert
nicht lesenswert
Ergänzung: habe mit widerständen 130-680Ohm gespielt, das löst die 
Abschaltautomatik, allerdings startet beim Drehen des Potis Song neu?

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas I. schrieb:
> warum muss Pin 7 auf GND gehen, wenn der ja nun im Code keine Rolle mehr
> spielt (außer beim Setup)?

Der Pin muss nicht auf GND gezogen werden, wenn du den Code in 
handleVolume() wie oben beschrieben umbaust.

Thomas I. schrieb:
> Hattet Ihr das Problem gelöst?

Oben im Verlauf steht dazu ein bissel was. Hier im Mikrocontroller-Forum 
findest du auch Threads zur Thematik. Trifft nicht nur den MP3Player, 
sondern ist ein generelles Problem.
Auch hier wird drüber diskutiert:
https://forum-raspberrypi.de/forum/thread/28272-powerbank-zur-versorgung-kleiner-lasten-nutzen-grundlast-fuer-powerbank/

Widerstand reinpacken ist eine valide Lösung, allerdings musst du drauf 
achten, den hinter den Ein-/Ausschalter zu packen, weil dir sonst die 
Powerbank einfach so leergelutscht wird.

Thomas I. schrieb:
> allerdings startet beim Drehen des Potis Song neu?

Zusammen mit deiner Beschreibung vom Spannungsabfall mutet das alles 
sehr seltsam an. Hast du das selbe Verhalten auch mit dem Arduino? 
Vielleicht ist der ATTiny angeschlagen?!
Wenn der Neustart des Songs ein bissel dauert (2-3 Sekunden), könnte es 
sein, dass der ATTiny durchgestartet wird und zusätzlich "Restart des 
letzten abgespielten Songs aktiv ist". Wenn er das tut, kannst du ggf. 
Abhilfe schaffen, indem du den Reset-Pin auf VCC ziehst (ggf. über einen 
10K-Widerstand).
Details hier: 
https://electronics.stackexchange.com/questions/422895/does-attiny-reset-pin-need-a-resistor

Grüße
ghmartin77

von Thomas I. (thomas_i871)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> Thomas I. schrieb:
>> warum muss Pin 7 auf GND gehen, wenn der ja nun im Code keine Rolle mehr
>> spielt (außer beim Setup)?
>
> Der Pin muss nicht auf GND gezogen werden, wenn du den Code in
> handleVolume() wie oben beschrieben umbaust.

Ich habe nicht nur den Teil entfernt, sondern jede Referenz auf den PIN 
- ohne die Verbindung GND-PIN7 geht nichts...

>
> Thomas I. schrieb:
>> Hattet Ihr das Problem gelöst?
>
> Oben im Verlauf steht dazu ein bissel was. Hier im Mikrocontroller-Forum
> findest du auch Threads zur Thematik. Trifft nicht nur den MP3Player,
> sondern ist ein generelles Problem.
> Auch hier wird drüber diskutiert:
> 
https://forum-raspberrypi.de/forum/thread/28272-powerbank-zur-versorgung-kleiner-lasten-nutzen-grundlast-fuer-powerbank/
>
> Widerstand reinpacken ist eine valide Lösung, allerdings musst du drauf
> achten, den hinter den Ein-/Ausschalter zu packen, weil dir sonst die
> Powerbank einfach so leergelutscht wird.
>
Habe mich für eine LED entschieden, danke!

> Thomas I. schrieb:
>> allerdings startet beim Drehen des Potis Song neu?
>
> Zusammen mit deiner Beschreibung vom Spannungsabfall mutet das alles
> sehr seltsam an. Hast du das selbe Verhalten auch mit dem Arduino?
> Vielleicht ist der ATTiny angeschlagen?!
> Wenn der Neustart des Songs ein bissel dauert (2-3 Sekunden), könnte es
> sein, dass der ATTiny durchgestartet wird und zusätzlich "Restart des
> letzten abgespielten Songs aktiv ist". Wenn er das tut, kannst du ggf.
> Abhilfe schaffen, indem du den Reset-Pin auf VCC ziehst (ggf. über einen
> 10K-Widerstand).
> Details hier:
> 
https://electronics.stackexchange.com/questions/422895/does-attiny-reset-pin-need-a-resistor
Nein, der Song startet sofort, ich habe neue ATtinys bestellt, teste 
dann mal mit denen weiter...sehr mysteriös...

von Thomas I. (thomas_i871)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

also, ich habe nun sowohl den ATtiny ausgetauscht als auch den DFPlayer 
und das Volumepoti - Ergebnis:
Im Grunde funktioniert es, sofern PIN 7 an GND ist.
Die Powerbank kann ich am Leben halten mit einem Widerstand, die LED 
bring nicht allzu viel.
Drehe ich den Poti auf max, startet der aktuelle Song (sofort) neu, der 
Player fährt nicht neu hoch. Scheint mir irgendwie eine Spannungsspitze 
zu sein oder sowas?
PIN 1 auf VCC mit und ohne Widerstand habe ich erfolglos versucht.

Funfact: Mein original Player von DFRobot hat ne rote LED, der "fake" 
von AZDelivery ne blaue :D.

Was mir noch nicht gelungen ist ist das Debuggen des ATtiny und DFPlayer 
auf dem Breadboard mit angeschlossenem Arduino - wie muss ich die 
verkabeln um dort "mitzuhören"?

LG und Danke

von Tim (Gast)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Warte immer noch auf die Elektronikbauteile zum Entstören.
Ansonsten ist der Player soweit fertig.
Mit Verstärker, USB, Kopfhöreranschluss und Line IN.

von Tim (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> Kam vor ein paar Tagen online: Vielleicht gibt dir das noch Ideen:
> Youtube-Video "How to remove buzzing/noise from a cheap Bluetooth Music
> Receiver? (Experiment)"


Tesla B0505S endlich angekommen und mit Erfolg verbaut!
Die Störungen sind nahezu eliminiert.
Lediglich bei voller Lautstärke und absoluter Stille noch zu hören.
Deckt sich mit der Lautstärke des Grundrauschen vom DF-Player, fällt 
somit kaum noch auf.

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
Wie dünn ist eure Sperrholzplatte an der Front denn? Ich habe die 
Bambus-Variante gewählt - meine Tasten stehen nicht so weit vor :-(.

Im Moment bereite ich V2 vor - V1 war mechanisch (Tasten) noch nicht 
optimal. Die Mechanik ist für mich das Problem ... leider. Habe jetzt 
einen "Bambusbohrer" mit passendem Durchmesser und mache mir eine 
Bohrschablone.

Die Rückwand will ich mit einem einfachen Schloss verschließen - eine 
Schraube möchte ich  nicht nutzen.

Als "Betriebs-LED" werde ich eine RGB-LED einsetzen. Im Schlafmodus 
werde ich damit einen kleinen Farbwechsel durch das Farbspektrum 
einbauen. Sieht an der Decke sicher hübsch "Einschlaf-fördernd" aus :-)

von Tim (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die Frontplatte ist 4mm dick, und der Bund der Tasten ist von der 
Rückseite ca. 1, 5mm versenkt.

von Hugo H. (hugohurtig1)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Tim schrieb:
> Die Frontplatte ist 4mm dick, und der Bund der Tasten ist von der
> Rückseite ca. 1, 5mm versenkt.

Vielen Dank :-) jetzt habe ich es.

Tasten sind prima und funktionieren  - der Lautsprecher wird hinter 
einem Fliegengitter sitzen (eingeklebt). Weiter gehts ...

Beitrag #6192481 wurde von einem Moderator gelöscht.
von Toni (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich finde das Projekt absolut klasse! Genau das möchte ich für meinen 
Sohnemann auch bauen.

Ich hab jetzt alle Beiträge gelesen,.. aber habe noch die ein- oder 
andere Frage als Arduinio/aTTiny-Neuling.

Ich habe also noch keinen Arduino noch auch keinen aTTiny. Müsste also 
erst was bestellen.

1.) Kann ich statt dem flashen auf den aTTiny auch einfach nur einen 
"Arduino Nano" nehmen? Also ich spare mir den aTTiny und benutze nur den 
Arduino Nano mit dem DFPlayer? Ich habe hier irgendwo sowas gelesen....
Kann ich den Code dann direkt über die Arduino-Software in den Nano 
flashen? Muss ich da was bestimmtes beachten?


2.) Welchen Vorteil hat es, den aTTiny überhaupt zu verwenden? Der 
DFPlayer hat doch genügend Eingänge die beschaltet werden können?

3.) Reicht der interne Verstärker auf dem Player für eine "normale" 
Lautstärke oder sollte besser noch ein Verstärker nachgeschaltet werden?
Ich habe einen 8Ohm Visaton FR10HM-Speaker übrig den ich gerne einsetzen 
würde.

Danke und Gruß
Toni

von nicht Gast (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi Toni,

du kannst auch direkt einen Nano nehmen. Der Code ist kompatibel, der 
Arduino frißt im Betrieb allerdings mehr Strom als der ATTiny.
Der interne Verstärker reicht in normaler Lautstärke völlig aus. Den 
Versuch mit FR10HM habe ich auch probiert, das war mir allerdings am 
Ende zu viel "Wums" für ein Kindergerät.
Ggfs. musst du in der Konstellation den Max-Wert für die Lautstärke 
runterdrosseln. In Volllautstärke hat's mir den DFPlayer resettet, weil 
entweder der Lautsprecher zuviel Strom gezogen hat oder der Verstärker 
überfordert wurde (was unterm Strich vermutlich das gleiche ist :)).

Grüße
ghmartin77

von Toni T. (toni_007)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,
danke für die Antwort.
Hab mich jetzt hier registriert und werde doch den Weg über den aTTiny 
gehen.
Mich hat das Projekt jetzt "angefixt", ich will das durchziehen.
Die Komponenten (Arduino Uno, aTTiny,...) hab ich soeben bei Reichelt 
bestellt :)

Im Forum fiel mi jetzt auf:


ghmartin77 schrieb:
> Ah, jetzt ergibt alles einen Sinn :)
>
> Die Konfiguration, ob diverse Features an oder aus sind (Repeat1,
> Continuous Play, ...), wird aus einem EEPROM-Byte ausgelesen. Da steht
> scheinbar je nach History des Chips unterschiedlicher Bit-Müll drin. Das
> führt dann zu solchen Effekten, dass zuweilen unerwünschte/unerwartete
> Konfiguration initial aktiv ist...
>
> @Malte: Dein Problem damit erklärt (und behoben)?
>
> Grüße
> ghmartin77


Kann man das EEprom-Byte nicht komplett löschen damit genau dieser Fall 
nicht auftreten kann?
Also erstmal EEprom löschen und dann das Programm reinladen?

Danke für dein Projekt! Freu' mich echt drauf das zu basteln!
Toni

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Toni T. schrieb:
> Kann man das EEprom-Byte nicht komplett löschen

Ja klar, kann man.

von nicht Gast (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wie Stefan schreibt kann das EEPROM auch komplett löschen.
Dafür gibt's zwei Alternativen:
1) Von Extern über einen "speziellen" Flasher-Aufruf (von dem ich nicht 
weiß, ob das einfach über die ArduinoIDE abzubilden ist.) Zumindest wäre 
es nach meinem Verständnis ein anderer Vorgang als das normale Flashen 
des Programcodes. Sieht wohl so aus: 
https://www.pololu.com/docs/0J67/5.8
...und erfordert neben dem normalen Flashen weitere Arbeitsschritte mit 
Fehlerpotential.

2) Aus dem Code heraus. Was begrenzt sinnvoll ist, denn das EEPROM immer 
zu löschen zerstört ja auch eine zuletzt gespeicherte Konfig mit dem 
nächsten Neustart.

Also geht der Code jetzt einen anderen Weg, damit es über den normalen 
Flash-Vorgang läuft. Ich "reserviere" mir zwei zusätzliche EEPROM-Bytes 
und gucke beim Start, ob da ein Magic Marker (hier 0xCAFE) drinsteht. 
Wenn nicht, ist das die Erkennung eines ersten Starts und ich setze 
programatisch die EEPROM-Config-Bytes auf die Default-Werte und schreibe 
den Magic Marker. Ist der Magic Marker schon vorhanden, mache ich nichts 
an den Config-EEPROM-Bytes.
Da bleibt noch ein Restrisiko, dass ein ATTiny mit EEPROM-Müll 0xCAFE an 
entscheidender Stelle daherkommt, aber das ist doch recht 
unwahrscheinlich.

Grüße
ghmartin77

von Pucki (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Feines Projekt.

Erspart mir einiges an Arbeit für ein ähnliches Projekt von mir.

Aber Kiddy hin o. her. Ein Display wäre da echt nicht schlecht gewesen. 
;)

Nur so als Tipp ;)

Gruß

   Pucki

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
Pucki schrieb:
> Ein Display wäre da echt nicht schlecht gewesen.

Wer hindert Dich daran?

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
So - mein Prototyp funktioniert jetzt auch. Spielt leider nur immer eine 
MP3 aus einer Playlist ab - muss ich wohl nochmal im PDF schauen :-)

Was mich etwas stört ist der "Einschalt-Knackckcks". Trotz 1k Widerstand 
nach RX kommt der immer als erste Reaktion auf das Einschalten. Gibt es 
da Abhilfe?

Ansonsten - herzlichen Dank Martin - Ostern wird für einen kleinen 
Menschen deutlich erfreulicher werden :-).

Jetzt muss ich noch mein "Rückwand-Scharnier" einpassen - mit 1,5 linken 
Händen nicht einfach :-/

von nicht Gast (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hugo H. schrieb:
> Was mich etwas stört ist der "Einschalt-Knackckcks". Trotz 1k Widerstand
> nach RX kommt der immer als erste Reaktion auf das Einschalten. Gibt es
> da Abhilfe?

Hi Hugo,

das hängt von deiner DFPlayer-Variante ab. Den meisten Krach macht das 
Ding beim Reset. Evtl. kannst du den Aufruf loswerden, wenn dein Player 
dann immer noch tut, was du möchtest. Einfach Zeile 335 rausschmeißen. 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L335

Evtl. -je nach Player- funktioniert dann Abspielen von USB nicht mehr... 
Was egal wäre, wenn du nur eine SD-Karte nutzt.

Ein mindestens kleines Knacken wird's allerdings immer geben. Das ist 
der Moment, in dem der Player den Amplifier aktiviert.

Dann lass mal hören, ob's was hilft...
Und ein Photo braucht's natürlich, sonst ist's nie passiert :)

Grüße
ghmartin77

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
nicht Gast schrieb:
> Dann lass mal hören, ob's was hilft...

Herzlichen Dank - es ist besser geworden :-)

Foto kommt, wenn ich den "Auslieferungszustand" erreicht habe. Nachdem 
ich ein "verbohrtes" 12mm-Loch abgedeckt habe :-/ steht mir noch die 
"Kür" mit dem Rückwand-Scharnier bevor. Dann noch die Powerbank rein 
(Halterung ist vorbereitet) - und "klick" :-). Vielleicht schon heute - 
aber eher morgen.

Die Kiste ist (für mich) recht eng geworden - irgendwer in diesem Thread 
hat die kleine Kiste genommen - das hätte ich nicht hinbekommen. Das 
ganze ist jetzt relativ leicht "wartbar" und der kleine Mensch kommt 
nicht an die "Innereien". Ich wollte auch erst eine Ladebuchse nach 
außen legen - habe aber Bedenken, was den Forschergeist des Nutzers 
angeht ...

Was ich nicht (trotz entsprechender Ansage) hin bekomme ist das 
komplette Abspielen einer Playlist (auf einer Taste). Ich werde wohl 
noch ein wenig im Programm "wühlen" müssen.

VG
Hugo

von nicht Gast (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hugo H. schrieb:
> Was ich nicht (trotz entsprechender Ansage) hin bekomme ist das
> komplette Abspielen einer Playlist (auf einer Taste). Ich werde wohl
> noch ein wenig im Programm "wühlen" müssen.

Wie meinst'en das?

Kontinuierliches Abspielen geht nicht bei genau einer Taste? Generell 
nicht?
"Trotz entsprechender Ansage"? Obwohl das Gerät erzählt, dass 
kontinuierliches Abspielen "an" wäre?

Grüße
ghmartin77

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
nicht Gast schrieb:
> Hugo H. schrieb:
>> Was ich nicht (trotz entsprechender Ansage) hin bekomme ist das
>> komplette Abspielen einer Playlist (auf einer Taste). Ich werde wohl
>> noch ein wenig im Programm "wühlen" müssen.
>
> Wie meinst'en das?
>
> Kontinuierliches Abspielen geht nicht bei genau einer Taste? Generell
> nicht?
> "Trotz entsprechender Ansage"? Obwohl das Gerät erzählt, dass
> kontinuierliches Abspielen "an" wäre?
>
> Grüße
> ghmartin77

Genau so ist es - ich bekomme die Ansage aber es wird immer nur 1 Track 
abgespielt. Egal welche Playlist-Taste. Alles andere funktioniert prima 
(ich habe einen externen Pullup-Widerstand für die Tasten verwendet - 
lässt sich leichter rechnen :-)).
Ich will mich heute sowieso ein wenig mit dem Code beschäftigen und mein 
kleines "Lichtspiel" zum Einschlafen einbauen. Bei der Gelegenheit packe 
ich ein paar Debug-Meldungen mit rein, um zu sehen, was genau passiert.

Viele Grüße
Hugo

: Bearbeitet durch User
von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das klingt ja so, als hättest du einen Arduino im Einsatz (Logging, 
Zusatz-LED)?!
Wenn du deinen Player "durchleuchten" möchtest, kannst du diesen Sketch 
einmal ausprobieren:
https://github.com/ghmartin77/DFPlayerAnalyzer
Den Output bitte gern als Issue wie auf der Seite beschrieben 
einstellen.

Grüße
ghmartin77

von Hugo H. (hugohurtig1)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> Das klingt ja so, als hättest du einen Arduino im Einsatz (Logging,
> Zusatz-LED)?!
> Wenn du deinen Player "durchleuchten" möchtest, kannst du diesen Sketch
> einmal ausprobieren:
> https://github.com/ghmartin77/DFPlayerAnalyzer
> Den Output bitte gern als Issue wie auf der Seite beschrieben
> einstellen.

Hallo Martin,

ja - Arduino Nano mit einem MH ET LIVE MH3028M-24SS Chip auf dem 
MP3-Player :-(.

Habe das Analyzer-Protokoll mal beigefügt ... das Teil will wohl nicht 
so richtig. Spezielles Datasheet (bis jetzt) Fehlanzeige.

Viele Grüße
Hugo

von Hugo H. (hugohurtig1)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
nicht Gast schrieb:
> Und ein Photo braucht's natürlich, sonst ist's nie passiert :)

Ich spendiere sogar 2 Fotos - aber Ostern wird das wohl nichts mehr mit 
der Übergabe :-(. Vorne links im Bild ist die Abdeckung für das 
"verbohrte Loch".

Dem Abspiel-Fehler bin ich auf der Spur. Jetzt muckt auch noch die 
Powerbank (ich war so stolz auf den relativ geringen Verbrauch) - 
getestet habe ich immer mit der USB-Versorgung durch den Arduino bzw. 
dem "Labornetzgerät". Deswegen ist die Powerbank auf den Fotos nicht zu 
sehen - ich wollte nicht "faken".

Ich werde mit Impulsen (Dank an mino-elektronik :-)), welche ich durch 
den Nano erzeugen lasse, die Powerbank "wach halten".

Viele Grüße und frohe Ostern
Hugo

: Bearbeitet durch User
von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Sieht doch gut aus:

The following devices have been discovered:
-> SD, announced on reset, discovered by getTotalTrackCount, announced 
on setPlaysourceFlash
Does NOT react on 0x3F queries
getFolderTrackCount...
-> for SD returned 18 files in Folder 01
GetCurrentTrack for SD returns correct value 0ms after start of track
*Sends 2 callback(s) on SD track end*
Continue playback after Ad for SD works
Wakeup from sleep by reset does NOT work
Wakeup from sleep by setting playsource SD works

Wenn du dir Logs hier
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L96
und hier
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L496
reinbaust, solltest du schnell dahinterkommen, was los ist.

Nicht verwechseln:
Was an sein muss, ist Continuous Play ON (normalerweise auf Button 1 zu 
schalten). Playlist loop ON ist dafür zuständig, dass nach dem letzten 
Track wieder mit dem ersten weitergemacht wird (aber auch nur, wenn 
Continuous Play ON ist).

Der Player bringt zumindest alles mit, was benötigt wird.

Good Luck!

Grüße
ghmartin77

von Alex T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Was muss ich am Code denn anpassen um beim Starten des Player eine feste 
Ansage zu machen, also in diesem Fall den Name des Kindes ausgeben zu 
lassen?
Danke und allen ein schönes Osterfest!
Alex

von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Alex T. schrieb:
> Was muss ich am Code denn anpassen um beim Starten des Player eine feste
> Ansage zu machen, also in diesem Fall den Name des Kindes ausgeben zu
> lassen?

Hi Alex,

leg dir ein File /20/001.mp3 mit deinem Wunschansagetext an.
Dann fügst du hier 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L350 
noch ein paar Zeilen ein:
handleVolume();
player.playFolderTrack(20, 1);
delay(#AbspielzeitInSekunden# * 1000);

In Zeile 47 kommt noch
void handleVolume();
und dann sollte es gehen.

Grüße
ghmartin77

von Alex T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke!!
Werde ich so ausprobieren! Ist echt ein tolles Projekt von dir!

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> Wenn du dir Logs hier
> 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L96
> und hier
> 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L496
> reinbaust, solltest du schnell dahinterkommen, was los ist.

Schön, dass Du das weißt. Für mich sieht es aktuell irgendwie anders 
aus.

"Continious Play" kann ich schalten, wie ich will - es spielt keine 
Rolle.

Aktuell denke ich, dass die Kommunikation nicht optimal läuft. Ich werde 
also 1 kOhm nicht nur in die RX- sondern auch in die TX-Leitung 
einbauen. Dann werde ich das MP3-Modul mehr in den spezifizierten 
Bereich (3,3 bis 5 V) bringen also mit ca. 4 V versorgen.

Ich habe das Debugging der Lib mal aktiviert
#define DEBUG_DFPLAYER_COMMUNICATION

und wundere mich über die Ausgaben. Vielleicht hängt es wirklich mit der 
Kommunikation zusammen. Ich werde berichten, wenn ich meine Hardware 
angepasst habe.

Viele Grüße
Hugo

: Bearbeitet durch User
von ghmartin77 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hugo H. schrieb:
> Schön, dass Du das weißt. Für mich sieht es aktuell irgendwie anders
> aus.

Ich hatte auf die beiden Stellen verwiesen, weil hier die Logik für 
kontinuierliches Abspielen steckt.
In Zeile 496 wird abgefragt, welcher Track spielt und dessen Nummer/ID 
in expectedGlobalTrackToFinish gespeichert.
Bau dir ein Log dahinter ein, welche Nummer das ist.
Wenn der Track fertig abgespielt ist, landest du im Callback in Zeile 
96. Auch hier eine Log-Ausgabe lässt dich sehen, ob der Aufruf erfolgt 
und welchen Wert globalTrack hat. Dies sollte der gleiche sein, wie der 
zuvor gemerkte expectedGlobalTrackToFinish.
Die Rückmeldung des Players sieht im Kommunikationsprotokol so aus
Packet received (<-): 7E FF 6 3D 0 0 XX FE B3 EF   <- Msg: 3D (TrackFinishedSD), arg: XX

Dein Testlauf mit dem DFPlayerAnalyzer hat gezeigt, dass mindestens in 
dem dort genutzen Aufbau die Kommunikation hervorragend funktioniert.

Deshalb bin ich zuversichtlich :)

Grüße
ghmartin77

von Armin K. (-donald-) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Wird das Projekt auch mit einem Digispark-Modul gehen?
Also z.B. 
https://www.electroschematics.com/learn-to-use-attiny85-usb-mini-development-board/

Da ist schon ein Bootloader mit 2k drauf.

von Toni T. (toni_007)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Mein Gerät ist auch fertig,... und funktioniert top!

Ich hatte keine Ahnung von Arduino und habe es trotzdem hinbekommen,.. 
die Anleitungen sind ja auch wirklich detailiert.

Zum Aufbau selber:
- Ich habe die "Powerbank" selber gebaut mit zwei 18650-Zellen und einer 
Laderegler-Platine. Das ganze funktuioniert auch mit kleinen Strömen 
(schaltet nicht ab) und kann parallel laden und Spannung abgeben. Genau 
das richtige für so eine Anwendung. Die Platine kostet weniger als 5€ 
bei ebay, ich denke das passt.
Der Schalter an der Oberseite trennt sowohl den Ausgang der Ladeplatine 
vom rest (aTTiny/DFplayer..)und zusätzlich auch die Verbindung zwischen 
den Akkus und der Ladeplatine. Dann geht definitiv kein Strom "verloren" 
und erschien mir auch sicherer. Ein kleines 5V-Hamlin-Relais (Spule 
direkt nach der USB-Buchse auf 5V) überbrückt den Schalter zwischen 
Ladeplatine und Akku sobald man das ladekabel an der USB-Buchse 
anschliesst. Man kann also laden obwohl der Schalter "offen", also das 
Gerät aus ist.

- Ich habe noch ein "Power"-LED eingebaut. Dann sieht auch Mama dass das 
Gerät eingeschaltet ist. Die Spannung entehmne ich auf der Platine auf 
der der DFPlayer gesteckt ist. Dann kann man bei "Problemen" schonmal 
etwas einfacher die Ursache herausfinden.

- Ich hab's sogar geschafft den Code zu ändern um nur 9 Tasten für die 
Playlists zu haben und die unteren beiden Knöpfe nur als als "vor"- und 
"zurück" zu programmieren. Das war Mama's wunsch und ich finde das macht 
irgendwie auch Sinn. Da bin ich als Arduino-Neuling besonders stolz 
drauf :)

-Ich wollte an der Front keine sichbaren Schrauben haben, also habe ich 
die Front mit zwei dünnen Flugzeugsperrholz-Platten in Sandwich-Bauweise 
erstellt. Die untere Platte trägt mitttels Senkschrauben alle 
Komponenten und die oberer Platte deckt das dann ab. Auch das Lochblech 
ist somit bündig zur Platte.
Verschraubt wird das ganze von Hinten über die 4 Abstandshalter-Hölzer.

-Die USB-Buchse seitlich lädt die Eigenbau-Powerbank auf und die 
Datenleitungen sind auf den DFPlayer aufgelegt. Man kann mit ca. 500kb/s 
die Speicherkarte beschreiben und spart sich somit den Ausbau der Karte 
zum bespielen mit neuen Songs. Passt!

Vom Klang her bin ich total überrascht! Das ding spielt schön sauber, es 
gibt kein "plopp" beim einschalten und undser Junior strahlt wie ein 
Honigkuchenpferd wenn er damit spielt!

Danke für das schöne Projekt! Es hat sowohl mir Spaß gemacht beim bau 
als auch jetzt meinen Sohnemann beim Musik hören.

Liebe Grüße und besonderen dank an Martin!

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
Toni T. schrieb:
> Mein Gerät ist auch fertig,... und funktioniert top!

Prima - herzlichen Glückwunsch.

Ich "eiere" immer noch herum und habe beschlossen, die Funktionalität 
etwas einzuschränken. Ich habe aufgegeben, nach den Problemen zu suchen. 
Ich nehme jetzt eine einfachere Library und hoffe, damit Erfolg zu 
haben.

Die Funktionen werde ich auf ein Minimum reduzieren.

Ich brauche nur 3 Einschlaf-Zeiten und ein "Folder-Repeat" auf Dauer ist 
für mich auch in Ordnung. Damit starte ich jetzt.

Mich stört, dass die Library die Funktionen/Aktionen "steuert" - das 
möchte ich gerne selbst machen. Mal schauen, wie weit ich komme.

Ist nicht gegen Martin gerichtet - im Gegenteil, ohne Martin hätte ich 
das nie begonnen. Nochmals herzlichen Dank.

von Armin K. (-donald-) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Hugo,
ich bin dabei. Gleiche Meinung wie du. Respekt an Martin.
Ich hätte aber auch gerne ein anderes Bedienkonzept.
Fangen wir ein neues Projekt an?

von Klaus R. (klaus2)


Bewertung
0 lesenswert
nicht lesenswert
...könnt ihr euch denn dann einigen? ;)

Gut wäre es ja das ganze so zu modularisieren und kommentieren, dass der 
durchschnittlicht begabte Programmierer die UI statemachine selbst 
anpassen kann.

Klaus.

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
Armin K. schrieb:
> Ich hätte aber auch gerne ein anderes Bedienkonzept.
> Fangen wir ein neues Projekt an?

Ich werde nichts "revolutionär neues" kreieren. Die Hardware lasse ich 
identisch (ich frage lediglich zusätzlich den "busy-Pin" ab, habe eine 
RGB-LED verbaut und RX / TX jeweils über einen 1 kOhm Widerstand 
verbunden) - bei mir werkelt ein Arduino Nano, kein ATTiny85.
Zusätzlich belaste ich meine Powerbank (über einen Transistor gesteuert) 
alle 2,5 Sekunden für ein paar ms mit ca. 120 mA zusätzlich, damit diese 
nicht abschaltet. Das funktioniert prima.

Wenn ich durch bin stelle ich das Ergebnis hier ein und jeder kann daran 
weiterentwickeln, wie er mag. Ich mache das nebenbei - wenn ich mal Zeit 
und Lust habe.

Als Library habe ich mir 
https://github.com/PowerBroker2/DFPlayerMini_Fast ausgesucht.

von ghmartin77 (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Guten Abend zusammen,

@Toni: Sieht super aus, dein Player! Hut ab! Sehr schöne Umsetzung. 
Tiptop!

@Hugo/Armin: Ich bin tiefenentspannt, wenn ihr den Code nach euren 
Vorstellungen umbaut :) Dafür hatte ich ihn ja frei verfügbar gestellt, 
damit sich jeder austoben kann.
Ich kann auch nachvollziehen, wenn X nicht geht, dass man dann versucht 
ist, einfach mal Y auszuprobieren... Die vorgenannte Library kann ich 
allerdings nur sehr eingeschränkt empfehlen. Genauso wie jene von 
DFRobot selbst.
Die einzige mit sinnvoller Implementierung, die ich bisher gefunden 
habe, ist die genutzte DFMiniMp3. Und hier ist der Grund: Das 
Kommunikationsprotokoll des Players ist nicht rein 
Request/Response-Pattern-getrieben. Stattdessen "quasselt" der DFPlayer 
auch gern einfach mal von sich aus los, erzählt beispielsweise, wann ein 
Track fertig abgespielt ist, oder dass eine SD-Karte eingesetzt wurde. 
Wenn dir eine solche unaufgeforderte Meldung seitens des Players 
zwischen deinen Request und das Warten auf die passende Antwort 
dazwischenkommt, ist sowohl die Lib von DFRobot, als auch 
DFPlayerMini_Fast aus dem Tritt. DFMiniMp3 löst das sehr elegant, indem 
ein Callback für solche Fälle zur Verfügung gestellt wird. Immer wenn 
ein Request/Response-Schema-Aufruf an den Player geht, wird auf die 
Response passend zum Request gewartet. Kommt dazwischen eine 
"unattended" Nachricht vom Player, wird diese über den Callback 
verarbeitet und danach weiter auf die eigentliche Antwort gewartet 
(Timeout-gesteuert versteht sich).

Just my 2 cents...

Grüße
ghmartin77

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
ghmartin77 schrieb:
> @Hugo/Armin: Ich bin tiefenentspannt, wenn ihr den Code nach euren
> Vorstellungen umbaut :)

Das wäre ich an Deiner Stelle auch :-)

Ich baue jetzt "vereinfacht" auf und bin gespannt, ob ich das Teil 
vernünftig zum Laufen bekomme.

Eigentlich interessieren mich die

ghmartin77 schrieb:
> Stattdessen "quasselt" der DFPlayer
> auch gern einfach mal von sich aus los, erzählt beispielsweise, wann ein
> Track fertig abgespielt ist, oder dass eine SD-Karte eingesetzt wurde.
> Wenn dir eine solche unaufgeforderte Meldung seitens des Players
> zwischen deinen Request und das Warten auf die passende Antwort

Antworten des Players nur, wenn er gefragt wird. Ansonsten kann er vor 
sich hinplappern :-). Ich warte, bis er fertig ist (Busy-Pin) und gebe 
ihm dann neue Aufgaben.

Die "...Fast.lib" ist da meiner Meinung und praktiziert "fire and 
forget". Wenn es nicht funktioniert habe ich halt das nächste Problem 
:-). Man wächst an seinen Aufgaben ...

VG
Hugo

: Bearbeitet durch User
von Markus N. (markus_n865)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe eine Version mit YX5300 gebaut und den Code dazu umgeschrieben. 
Irgendwie hat es mit dem DXPlayer partout nicht funktioniert, aber mit 
dem XY5300 ging es leicht und die Teile bekommt man auch für <10 € aus 
Versandort D, muss also nicht auf den Container aus China warten.

Ich habe dann noch einen einfacher Verstärker hinter den YX500 
geschaltet, einen "PAM8406 2x5W TE418 Digital Amplifier Board". Der hat 
dann auch eine Schraube eingebaut, mit dem man die Lautstärke regelt, 
man braucht also keinen weiteren Poti dazu.

Der Code ist wirklich nicht sehr elegant gelöst, aber es funktioniert 
gut und die Neffen freut es:

https://github.com/mneuschaefer/kidsmp3player-YX5300/blob/master/kidsmp3player-test.ino

Tasten 1-9 wechseln in den jeweiligen Ordner bzw dort zum jeweils 
nächsten Lied, Taste 10 ist für Play/Pause, Taste 11 beginnt die 
wiedergabe wieder bei Lied 1 des aktuellen Ordners.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.