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


von Stefan F. (Gast)


Lesenswert?

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

Verkabele das mal so:
1
 
2
       _____________________________________
3
      /                                     \
4
     +------------+                          |
5
     |       _____|______                ____|_____
6
     |      |            |  Audio L+R   |          |
7
Bat ===     | Verstärker |==============| DFPlayer | 
8
     |      |____________|              |__________|
9
     |            |\_________________________/
10
     +------------+

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)


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)


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)


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:

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)


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)


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:
1
  player.setPlaybackSource(DfMp3_PlaySource_Usb);
zu
1
  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:

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)


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:

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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


Lesenswert?

Kam vor ein paar Tagen online: Vielleicht gibt dir das noch Ideen:
https://www.youtube.com/watch?v=n_b_0BWP0mI

von Tim M. (brotzeit)


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)


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)


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)


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)



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)


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)


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)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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

von ghmartin77 (Gast)


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)


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)


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)


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)


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)


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)


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)


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:
1
D2 ---- 1k ----- RX(DFPlayer)
2
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)


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)


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)


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:
1
  // keyCurrent = 1023;

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

Grüße
ghmartin77

von Tim M. (brotzeit)


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)


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)


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)


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)


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)


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)


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)


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()
1
    int volNew = (map(volCurrent, 0, 1023, 1,
2
                      31 - map(volInternal, 1023, 0, 1, 30))) * volFade;
wie folgt
1
    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)


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)


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)


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)


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)


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:

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)


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)


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)


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:

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)


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)


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)


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. (Gast)


Lesenswert?

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

Ja klar, kann man.

von nicht Gast (Gast)


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)


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)


Lesenswert?

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

Wer hindert Dich daran?

von Hugo H. (hugohurtig1)


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)


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)


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)


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)


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)


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:

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:

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)


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)


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)


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:
1
handleVolume();
2
player.playFolderTrack(20, 1);
3
delay(#AbspielzeitInSekunden# * 1000);

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

Grüße
ghmartin77

von Alex T. (Gast)


Lesenswert?

Danke!!
Werde ich so ausprobieren! Ist echt ein tolles Projekt von dir!

von Hugo H. (hugohurtig1)


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
1
#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)


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
1
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


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)



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)


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


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)


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)


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)


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)


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)


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
von claudia (Gast)


Lesenswert?

Erstmal ein Lob: Ein tolles Projekt! Ich habe lange nach was käuflichem 
gesucht und nachdem ich nix gefunden habe, was meinen Wünschen 
entspricht bin ich auf diesen Mp3 player gestoßen. Ich möchte auch ein 
bisschen umbauen und denke, dass ich jetzt den code für den Attiny 
größtenteils verstanden habe. Nur ein paar Fragen zu den Tasten hätte 
ich noch. Ich habe überlegt, ob man nicht mehr Tasten haben könnte und 
habe daher versucht nachzuvollziehen, woher die Zahlenwerte für die 
Zuweisung der Tasten kommen. Das ist doch die Spannung bei Tastendruck 
umgewandelt auf digital (vermutlich) 1024 bezogen auf die 
Referenzspannung (= Versorgungsspannung?).
Formal: ADC = (Vin * 1024)/(Vref)
Ich kriege aber die Zahlenwerte so nicht raus, auch nicht, wenn ich zu 
meinen Werten eine Konstante dazuzähle oder abziehe.

Und dann wäre da noch: Worauf bezieht sich das "keyCurrent > 958" aus 
"inline void handleKeyPress()" (Zeile 397). Ist das "keine Taste 
gedrückt" und gleichzeitig der Variablen "key" eine Taste zugewiesen?

Grüße,
Claudia

von ghmartin77 (Gast)


Lesenswert?

Hallo Claudia,

sicher kannst du mehr Tasten verbauen. Das hier sollte dir helfen:
Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder auf ATTiny-Basis"

Und ja, die Prüfung auf ">958" ist für "keine Taste gedrückt".

Viele Grüße
ghmartin77

von claudia (Gast)


Lesenswert?

Klasse, danke ghmartin77!

An den Post konnte ich mich nicht mehr erinnern. Ich habe erst versucht 
die AD Keys vom DFPlayer zu verwenden, aber da spielt er pro Taste immer 
nur ein Lied ab. Und die Taste für "Play Mode" macht gar nichts.

Viele Grüße,
Claudia

von claudia (Gast)


Angehängte Dateien:

Lesenswert?

So, meine Kiste ist endlich fertig geworden. Ich war erstaunt, wie 
schwer die ist, aber dafür ist der Klang echt gut. Nochmal danke an 
dich, ghmartin77, für die Anleitung und den Code. Ich kann kein C++ und 
bin daher auch ganz stolz, dass ich ein bisschen extras programmiert 
habe. Das ging nur dank der tollen Vorlage so schnell.


Ich habe ein bisschen modifiziert. Wen's interessiert: Mehr Tasten, und 
extra "zurück", "vor" und "play", sowie wenn man "play" lange drückt, 
kann man die nächsten 10 Ordner anwählen. So kann ich 20 verschiedene 
Ordner mit Geschichten anlegen.
Ich wollte keine Powerbank, zum einen wegen Li-Akku und zum Anderen um 
die Katastrophe zu umgehen, wenn der leer ist ("Ich will aber jetzt 
sofort ...!!!"). Wir haben bisher Tiptoi und da bin ich froh, dass man 
einfach die Akkus tauschen kann. Daher habe ich einen Pololu Schalter 
eingebaut, dessen LED netterweise auch gleich anzeigt, dass der Player 
an ist. Außerdem hat der einen Verpolungsschutz, so dass meine Kinder 
selber Akkus wechseln dürfen. Dazu einen Step up / Step down 
Spannungswandler, der aus den Akkus 5V macht.

Der Tiny schaltet auch den Player aus (high an Schalter), wenn seit X 
Minuten kein Lied mehr gespielt wurde (dafür kein sleep timer). Dazu 
habe ich einen Pin freigemacht, indem ich die Lautstärke Widerstände in 
Reihe geschaltet habe.

von ghmartin77 (Gast)


Lesenswert?

Sehr, sehr nice! Schöne Idee mit dem Vogelhäuschen!

Grüße
ghmartin77

von Jan P. (elpresidente)


Lesenswert?

Hallo,
ich möchte das Projekt hier gerne nachbauen.
Ich hab gesehen das man die Musik auch per USB-Stick abspielen kann und 
das der ein oder andere, ein Line-In und Kopfhörer Anschluss integriert 
hat.
Gibt es dazu Anschlusspläne?
Danke und Gruß
Jan

von Frank G. (frank_g53)


Lesenswert?


von Martin (Gast)


Lesenswert?

Hallo ,
und eine gutes neues Jahr wünsch ich euch .
So wollte jetzt mit meinen Kindern mal MP3 player bauen .
Nur jetzt hänge ich ein bischen .
Und zwar an dem Attiny85 - Denk ich mal .
Der Df Player geht ( Blaue LED ) aber nur mit steuerung Pin1 ->Gnd ; 
Pin3 > Gnd .
Arduino ist für mich neu hab mit dem Nano Isp Programmiert - scheind 
auch alles gegangen zu sein - nur geht nichts beim Tasten an Pin 2 des 
Attiny kommen auch verschiedene Spannungen nur der DF Player macht nur 
beim Einschalten ein Lautsprecher geräusch !
Laut leise geht auch nicht .

Vielen Dank schon mal - vielleicht weis ja jemand etwas auf die schnelle 
.
gibt es eigendlich schon eine "fertige Sd karte" wo man nur noch die 
Ordner
füllen muss ?
Danke schon mal
Gruß Martin

von Martin (Gast)


Lesenswert?

Pin 9 und Pin 11 gegen Gnd Pin10 natürlich

von Astro (Gast)


Lesenswert?

Martin schrieb:
> Der Df Player geht ( Blaue LED ) aber nur mit steuerung Pin1 ->Gnd ;
> Pin3 > Gnd .

Was bedeutet "Pin3 > Gnd"? Pin3 ist der TX Ausgang des Players, und darf 
nicht auf GND gezogen werden. D.h. erst mal das hier kontrollieren:

Beitrag "Re: DFPlayer Serial funzt nicht"

Die Basisfunktionen des DFplayer kann man ja auch ohne serielles 
Interface, nur mit ein paar Tasten steuern. Den Tiny abklemmen, eine 
FAT32 uSD-Karte mit ein paar MP3 Files in den Player, und hören ob am 
Lautsprecher Musik rauskommt. Das wäre für mich die Indikation, daß der 
Player funktioniert. Die blaue LED alleine sagt noch nicht viel.

> Arduino ist für mich neu hab mit dem Nano Isp Programmiert - scheind
> auch alles gegangen zu sein - nur geht nichts beim Tasten an Pin 2 des
> Attiny kommen auch verschiedene Spannungen nur der DF Player macht nur
> beim Einschalten ein Lautsprecher geräusch !
> Laut leise geht auch nicht .

Wenn du einen Nano hast, dann würde ich mit dem die Funktion der 
Software und des Interfaces und Players testen. Wenn da dann alles 
läuft, kannst du wieder zum Tiny wechseln.

Mit welcher Spannung betreibst du den Tiny? Der RX Eingang des Players 
möchte 3.3V Signale sehen. Ansonsten kann auch die Baudrate des Tiny 
noch daneben liegen.

von ghmartin77 (Gast)


Lesenswert?

Hallo Namensvetter,

frohes Neues!
Für den Test des DF-Players findest du in meinem GitHub-Repo folgenden 
Sketch für einen Arduino (e.g. Nano). Der prüft den DFPlayer und seine 
Verhaltensweise: https://github.com/ghmartin77/DFPlayerAnalyzer

Die KidsMP3Player.ino läuft mit kleinen Anpassungen der Pins übrigens 
auch mit einem Arduino (Nano). Wenn du damit vertraut(er) bist, kannst 
du deine Tests auch damit machen (dann kannst du dir auch 
Serial.println()-Debug-Ausgaben reinbasteln...

Viele Grüße
ghmartin77

von Martin (Gast)


Lesenswert?

Guten Morgen ,
ja mit dem Df Player Test dachte ich Teste mal etwas ( Df player Sd 
Karte )

habe den Df Player auch mal in einen TonUino wo ich auch gebaut habe 
gemacht dort hat alles funktioniert - auch die Ansteuerung über Rx / Tx 
verschiedene Ordner / laut leise .
( Nur mit dem Attiny85 geht nix gibt es da auch so einen Link mit Google 
Chrome zum den Attiny zuflashen )
Was muss man umbauen wenn man den Nano nehmen will von D2 und D3 als RX 
und Tx hab ich schon gelesen die was Fehlt sind die Eingänge für die 
Taster (jetzt Pin 2 am Attiny ) und die Poti`s Max Vol und der normale 
Lautstärkeregler .
So dann werde ich mal Anfangen alles auf so einem Bord aufzubauen .
Die Spannungen scheinen zu stimmen RX und Tx haben 3,3 Volt
Tx ist Pin 5 und Rx mit Widerstand Pin 6 .
Habe 10KOhm Widerstände R4-R14 genommen wie in der Stückliste im Forum 
(keine 1KOhm) . Da es ja aber nur ein Spannungsteiler ist sollte dies 
kein Problem darstellen . Muss mal die Werte messen der Taster an Pin 2 
-> VCC oder?
vielen Dank schon mal
Gruß Martin

ps : man braucht ja Beschäftigung und Unterhaltung bei 4 Kinder :-)

von Martin (Gast)


Lesenswert?

Habe folgende DF Player welcher sollte funktionieren ?

1 Blaue LED MP3-TF-16P MH-ET Live MH2024K-24SS
2. Rote LED DFPlayer Mini YX5200-24SS
Danke schon mal
Gruß

von ghmartin77 (Gast)


Lesenswert?

Die genannten Player sollten beide funktionieren.

Links und Hinweise zum ATTiny:
-Link zum Flash-How-To in diesem Beitrag: 
Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder auf ATTiny-Basis"
-Von meiner GitHub-Seite (Astro hatte auch bereits drauf hingewiesen): 
ATTiny85 (ATTENTION!!! Ensure your fuses are set to 8Mhz (internal) 
clock! Otherwise SoftSerial won't work reliably. The following fuse 
values are recommended: L:0xE2, H:0xD7, E:0xFF)
-Andere Widerstände: Berechnungssheet in diesem Beitrag: 
Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder auf ATTiny-Basis" 
(resultierende Werte sind ab hier im Code anzupassen: 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L442)

Wenn du einen Arduino (Nano) für den gleichen Sketch nehmen möchtest, 
musst du folgende Zeilen modifizieren:
-Analogeingangspin für's Tastenfeld: 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L21
-Analogeingangspin für den externen Lautstärkeregler: 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L22
-Analogeingangspin für den internen Lautstärkeregler: 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L23
-RX/TX-Pins für Verbindung zum DFPlayer: -Analogeingangspin für den 
externen Lautstärkeregler: 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L48

Viel Erfolg!
ghmartin77

von Martin (Gast)


Lesenswert?

Hallo Martin ,
und vielen Dank für deine schnelle Antwort und die Hilfe stellungen .
Jetzt hab ich gerade in der DfMiniMp3.h gelesen das genau meine Leser 
nicht mit dem Attiny richig reden

    // Does not work with all models.
    // YX5200-24SS - sends reply
    // MH2024K-24SS - sends NO reply --> results in error notification
    uint8_t queryStorageDevices()

- hab zwar jetzt schon von 3 verschiedenen Verkäufern bestellt aber " 
nur diese" erhalten
kann man da etwas machen ?
Beim Nano sollte das gehen wenn es nur am Speicherplatz liegen sollte 
oder ?
was soll ich jetzt machen - die Platiene hat keinen Fehler der DF Player 
läuft auch über TX RX am Nano mit der TonUino soft nur der Attiny will 
nicht mitreden !
Liegt das an der Softwareserial.h ....kenn mich da zu wenig aus sehe nur 
kaputt ist nichts gehen tut es auch nicht .
vielen Dank schon mal
viele Grüße
Martin

von ghmartin77 (Gast)


Lesenswert?

Martin schrieb:
> Jetzt hab ich gerade in der DfMiniMp3.h gelesen das genau meine Leser
> nicht mit dem Attiny richig reden

Nein, das steht da nicht. Die Aussage ist, dass die Funktion 
queryStorageDevices (Kommando 0x3f) nicht für alle DFPlayer-Modelle 
funktioniert. Dabei ist es egal, ob ein ATTiny, ein Arduino oder wer 
auch immer das Kommando schickt. Die KidsMP3Player.ino-Datei hat für 
dieses unterschiedliche Verhalten aber bereits einen Workaround 
implementiert: 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L331.
Hat auch überhaupt nichts mit Speicherplatz zu tun.

Martin schrieb:
> was soll ich jetzt machen

Konzentrier dich mal auf eine Sache, um der Fehlerursache näher zu 
kommen. Entweder: Sketch mit Arduino probieren. Wenn das nicht geht, 
aussagekräftiges Fehlerbild dokumentieren.

XOR-Oder: Versuch's weiter mit ATTiny, dann aber bitte vollständig 
umsetzen und prüfen: Sind die Fuse-Bits richtig gesetzt? Hast du gemäß 
oben verlinkter Anleitung geflasht? Gibt es ein Erfolgsprotokoll von der 
Console, dass der ATTiny erfolgreich bespielt wurde?

Grüße
ghmartin77

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo ,
ja dann - ist ja alles OK Denk ich mal und wir bekommen das hin .

Ich Denke mal es liegt an den Fuses (Einstellungen) beim beschreiben des 
Tiny kommt zwar keine Fehlermeldung aber ihr werdet es sehn .
0XFF past nicht aber wo soll ich das ändern ?
Lese mal vielleicht find ich es ja noch
Viele Grüße
Martin

von ghmartin77 (Gast)


Lesenswert?

Martin schrieb:
> 0XFF past nicht aber wo soll ich das ändern ?

Wie kommst du darauf, dass 0xFF nicht passt?
Auf meiner GitHub-Seite sind folgende Werte empfohlen:
L:0xE2, H:0xD7, E:0xFF

Damit passt in meinen Augen 0xFF für efuse sehr gut.
lfuse sitzt auch bei dir auf 0xE2.
Nur hfuse stimmt mit 0xDF nicht exakt. Das kriegst du vermutlich 
behoben, wenn du in der ArduinoIDE "Save EEPROM" auf "EEPROM retained" 
umstellst (im Menü "Werkzeuge"/"Tools".
Alternativ kannst du auch an der Kommandozeile folgendes ausführen:
1
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -v -v -v -pattiny85 -cstk500v1 -PCOM3 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xd7:m -Ulfuse:w:0xe2:m

Für die Nutzung von Softwareserial sollte das allerdings egal sein, da 
hier nur die Einstellung auf 8MHz (interner Taktgeber) wichtig ist und 
die hast du mit deinen derzeitigen Fuse-Settings.

Nächste Schritte auf der Suche nach der Ursache des Problems:
Aus deinem Log konnte ich nur sehen, dass Fuses gesetzt wurden, nicht 
aber, das der Sketch hochgeladen wurde. Die Ausgabe hast du vermutlich 
mit "Bootloader brennen" im Werkzeuge-Menü ausgelöst, richtig?
Hast du im Anschluss auch den Sketch hochgeladen und davon eine 
Erfolgsmeldung von der ArduinoIDE in der Console bekommen?

Grüße
ghmartin77

von Martin (Gast)


Lesenswert?

Ja genau das hab ich gemeint - aber leider etwas anderes geschrieben.
Hab es mit der Bord.txt ändern wollen -> ging irgendwie nicht .
Dann nach den Seketch hochgeladen auch ohne Probleme - Erfolgsmeldung
mache heute noch eine TXT .
Grüßle
Martin

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Jetzt hab ich euch 2 TXT von meinen beiden ATTiny85 denke mal das jetzt 
einer FUSed ist ( Def )
Beim anderen geht immer noch nicht die Einstellung 0XD7 -habe bei meinem 
Arduino 1.8.13 keine Punkt "Tools" zum umstellen - was muss ich noch 
installieren ?
Und die eingabe auf der Oberfläche geht auch nicht - findet ein paar 
Dateien nicht und ich soll doch Bitte neu installienen ! obwohl ich 
mehrere Path  zu den Ordnern hinzugefügt habe.
- na dann vielleicht bekomm ich den Attiny nochmal hin -man lernt nie 
aus.-)
Grüßle
Martin

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Jetzt "etwas" weiter gekommen habe es mit dem Bootloader geschaft die 
Fuses richtig gesetzt - Denk ich mal.
und mit dem Arduino den Sketch Hochgeladen ihr könnt gerne mal 
drüberschauen ob so alles stimmt.
vielen Dank schon mal
Grüßle Martin

von Martin (Gast)


Lesenswert?

Und was soll ich euch jetzt noch sagen es geht - zwar noch nicht alles 
mit den Taster - Ordner zu Ordnung aber es spielt verschiedene Ordner ab 
und Laut/leise mit Poti geht .
einfach nur SUPER und vielen Dank schon jetzt mal .
Jetzt muss ich mich noch an die Tasterwerte und die MP3 ansagen machen.
Haben ja noch einen Feiertag :-)))))
Viele Grüße

Martin

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

So jetzt geht glaube ich alles so wie es soll - muss noch ein Paar Tests 
mit den Optionen des Players machen - Ansagen gehen zuordung geht 
auch....
Kann nur sagen super Projekt mit dem Arduino gab und gibt es etwas 
Probleme mal schauen ob ich jetzt noch den Attiny85 nochmal resetet 
bekomme damit er wieder mit dem IDE redet !
Meine Kinder sind auf jeden Fall schonmal ganz Happy - so wie ich auch !
im Anhang noch eine SD zum Testen des Systems - bei mir gings.
Viele Grüße
Martin

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Da hatte ich noch eine "0" vergessen :-)))

von Mario (Gast)


Lesenswert?

Hallo,

da mir dieses Projekt so gut gefällt, möchte ich gerne 2 Boxen für die 
Kinder bauen. Holzkiste schnitzen, Löten, Henkel ausdrucken, alles kein 
Problem. Nur bei der Erstellung der Einkaufsliste stehe ich auf dem 
Schlauch. Ich habe auch schon reichlich Foren und Beiträge durchstöbert. 
Der ATTiny85 muss ja irgendwie das Programm bekommen und auf dem Gebiet 
verstehe ich ganz viel Bahnhof.
Um jetzt nicht einen Programmer anzuschaffen, habe ich auf Digispark 
gehofft, aber die scheinen ja nicht die Lösung zu sein. Muss es dennoch 
ein Arduino werden, obwohl dies wahrscheinlich meine einzigen 
Mikrocontroller bleiben, die ich in den Händen halten werde?

Gibt es nicht eine Möglichkeit 2 oder 4 fertig programmierte ATTinys zu 
beziehen?

von ghmartin77 (Gast)


Lesenswert?

Hi Mario,

2 Lösungsvarianten:
1) Du nimmst direkt einen Arduino (Nano) statt des ATTiny. Der frisst 
zwar mehr Strom, aber den kannst du per USB-Kabel direkt flashen. Der 
Sketch funktioniert auch auf einem Arduino.

2) Du schickst mir in den nächsten 45 Minuten eine Email mit deiner 
Email-Adresse an dieses temporäre Postfach und wir gucken, ob ich dir 
was per Post zukommen lassen kann: 99648778f6@firemailbox.club

Grüße
ghmartin77

von Mario (Gast)


Lesenswert?

Hallo Martin,

vielen Dank, die Mail kam nur leider nicht durch. Du kannst dich gerne 
bei mir unter Mario.rosenberger@gmx.de melden.

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Martin ,
bin es jetzt doch nochmal :-)

und zwar hab ich noch eine Frage habe jetzt 2 Player gemacht das die 
Kinder zufrieden sind einen mit 11 Tasten und einen mit 12 Tasten 
(einfacher zum bohren) dachte ich !
Es gehen auch alle 12 Taster mit Playlist.. - nur wird immer nur der 
gleiche
Titel wiederholt in endlos schleife nur wenn ich den Taster nochmal 
drücke komme ich in den nächsten Track (endlos)
Ansagen kommen nur kommt kein n+1 -> schaue es mir jetzt doch nochmal an 
.
vielleicht fällt euch ja gleich etwas auf

vielen Dank schon mal

viele Grüße
Martin

von Martin (Gast)


Lesenswert?

Hallo ,
wollte nur sagen alles wieder super -> SD Karte nochmal neu formatiert 
-> geht wieder alles :-)
Nur ab und zu bei den übergängen der Tracks wenn ca 10sec sehr leise 
oder nichts kommt - geht die powerbank aus - werde doch nuch ein paar 
LED´s als Belastung einbauen müssen .
Super Projekt weiter so

Grüßle Martin

von Martin (Gast)


Lesenswert?

Hallo
erst mal muss ich sagen super Projekt - ohne wenn und aber.

Hab mir jetzt noch einen Tonuino für meine Kinder gemacht - hat auch 
etwas.
Jetzt meine Frage könnte man vielleicht einen "mitwachsenden" Mp3 Player 
bauen.
Meiner Meinung nach für Kinder ca 2-6 Jahre und Oma/Opa diesen Player 
mit Tasten -> wo aber auch mit RFID Karten klar kommt für Kinder von 
6-10 Jahren und zu guter letzt vielleicht auch noch für die älteren noch 
über Wlan steuerbar  Radio  podcast .....
Vielleicht kann man ja mehrere Projekt miteinander verbinden - wenn 
möglich.
Ist ja nur so eine Idee - Denke so ein Nano sollte das können oder ?

Bleibt Gesund weiter so
Gruß
Martin

von Klaus R. (klaus2)


Lesenswert?

...na dann fang doch schon mal an 🤪?

Klaus.

von Mario (Gast)


Angehängte Dateien:

Lesenswert?

Endlich ist die Kiste fertig. Dafür dass ich nicht vom Fach bin, bin ich 
ganz zufrieden. Ich kann es übrigens keinem empfehlen die Widerstände 
direkt auf die Platine zu löten und dann die Taster mit Steckverbindern 
zu versehen. Wartungsfreundlicher wird es dadurch auch nicht.
Die Intenso PM5200 powerbank schaltet sich auch nicht bei der geringen 
Leistungsabgabe ab.
Jetzt ist nur noch das Problem dass am Ende des Albums gar nix mehr 
kommt.

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Mario schrieb:
> Endlich ist die Kiste fertig

Ich hätte da einen robusteren Ein-/Aus-Schalter für dich :-)

Spaß beiseite: Ich finde große robuste Eingabeelemente prima, wenn man 
sie sich leisten kann. Unsere Unterhaltungselektronik übertreibt es oft 
mit unnötiger Miniaturisierung.

von Klaus R. (klaus2)


Lesenswert?

Hut ab!!! Sehr schöne Interpretation, gefällt mir derzeit am besten! 
👌🏼👌🏼👌🏼

Ist da ne Rutschkupplung am Poti? 😋

Klaus.

von Mario (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die Rückmeldung,

durch die Wandstärke der Kiste (hab ich im Kinderzimmer gefunden) war 
die Achse vom Poti zu kurz. Dann hab ich einen Haltewinkel und 
Verlängerung gedruckt. Und bei der Gelegenheit auch einen 
Platinenhalter. Bei dem antiken Powerschalter hab ich dann aber 
Vertiefung gebohrt.

von Christian S. (chris02)


Lesenswert?

Mario schrieb:
> Endlich ist die Kiste fertig. Dafür dass ich nicht vom Fach bin, bin ich
> ganz zufrieden. Ich kann es übrigens keinem empfehlen die Widerstände
> direkt auf die Platine zu löten und dann die Taster mit Steckverbindern
> zu versehen. Wartungsfreundlicher wird es dadurch auch nicht.
> Die Intenso PM5200 powerbank schaltet sich auch nicht bei der geringen
> Leistungsabgabe ab.
> Jetzt ist nur noch das Problem dass am Ende des Albums gar nix mehr
> kommt.

Sehr schön geworden :-) Mal eine ganz andere Interpreation!

Was sind das für Taster? Die sehen auch echt klasse aus!

von Mario (Gast)


Lesenswert?

Christian S. schrieb:
> Mario schrieb:
>
>> Endlich ist die Kiste fertig. Dafür dass ich nicht vom Fach bin, bin ich
>> ganz zufrieden. Ich kann es übrigens keinem empfehlen die Widerstände
>> direkt auf die Platine zu löten und dann die Taster mit Steckverbindern
>> zu versehen. Wartungsfreundlicher wird es dadurch auch nicht.
>> Die Intenso PM5200 powerbank schaltet sich auch nicht bei der geringen
>> Leistungsabgabe ab.
>> Jetzt ist nur noch das Problem dass am Ende des Albums gar nix mehr
>> kommt.
>
> Sehr schön geworden :-) Mal eine ganz andere Interpreation!
> Was sind das für Taster? Die sehen auch echt klasse aus!

Die Taster sind von aliexpress, aus China-Edelstahl. Die gibt es da zu 
Hauf für wenig Geld.

von Andi M. (kamban)


Angehängte Dateien:

Lesenswert?

Vielen dank für das tolle Projekt!

Nach Wochen (oder Monaten..) bin ich endlich fertig geworden.

Vorneweg: Ich hatte absolut keine Ahnung. Von nichts - ausser dem Code, 
aber der war ja schon da ;-)

Das heisst ich musste erst mal ein Lötgerät besorgen. Die richtigen 
Bohrer. Säge. Multimeter. Ganz zu schweigen von der Elektronikbestellung 
- am Ende kamen 3 Pakete hier an und ich hätte genug Material, um noch 
10 weitere zu bauen ;-) Ein dfplayer ist abgeraucht aufgrund eines 
Defekts.

Ich habe sicher 3 mal neu begonnen und landete am Schluss bei fritzing 
(das ich auch nicht kannte) und habe es via Stripboard realisiert. War 
für mich als Neuling wesentlich einfacher - hatte ja keine Löterfahrung 
etc. Bin auch schnell auf Pins umgestiegen so dass ich jetzt schnell was 
wechseln könnte (poti etc.). Die Powerbank die ich zuerst vorsah stieg 
aus weil zu wenig geflossen ist. Aber anstatt da jetzt noch eine LED 
oder sowas einzulöten (hatte nur die 1k Widerstände hier..) bin ich 
einfach auf eine andere Powerbank gegangen - die nun einwandfrei 
funktioniert.

Da stecken jetzt unzählige Stunden drin, ich hab enorm viel gelernt und 
jetzt mächtig stolz dass der kleine beim Wickeln den Sound vom Daddy 
hören kann =) Daher nochmals lieben Dank für die Idee und den Code, ohne 
das git Projekt hätte ich all den Frust und die Freude nicht gehabt!

Ah:
- Knöpfe sind von Aliexpress
- Demnächst kommt noch ein externer Ladeanschluss an die Rückseite
- Powerbank via Klett-Klebstreifen befestigt, hält bombensicher und 
trotzdem flexibel
- USB Break out Board von Ardafruit

: Bearbeitet durch User
von ghmartin77 (Gast)


Lesenswert?

Hi Andi,

Wow, wow, wow! Klingt nach einer abenteuerlichen Reise mit tollem Ende!
Sieht sehr gut aus, deine Kreation!

Viele Grüße
ghmartin77

von Hugo H. (hugo_hu)


Lesenswert?

Andi M. schrieb:
> Powerbank

Was ist das für eine Mini-Powerbank? Kannst Du bitte einen Link dazu 
posten?

von Andi M. (kamban)


Lesenswert?

ghmartin77 schrieb:
> Hi Andi,
>
> Wow, wow, wow! Klingt nach einer abenteuerlichen Reise mit tollem Ende!
> Sieht sehr gut aus, deine Kreation!
>
> Viele Grüße
> ghmartin77

Danke! Abenteuerlich ist wahrlich das richtige Wort.

Hugo H. schrieb:
> Andi M. schrieb:
>> Powerbank
>
> Was ist das für eine Mini-Powerbank? Kannst Du bitte einen Link dazu
> posten?

Ein Werbegeschenk (4000mah) - leider ohne Herstellerangaben. Vertrieb 
von hier:
https://bbtrading.ch/produkte/kategorien/computer-smartphones/powerbanks/usb-powerbank-allie_2940-PBA5-00/

Scheinen die gleichen von Ali zu sein:
https://de.aliexpress.com/item/33030852881.html?spm=a2g0o.productlist.0.0.37856ec9l828A7&algo_pvid=8bd99987-afbe-4f6f-8bbd-f72c9125a5c6&algo_exp_id=8bd99987-afbe-4f6f-8bbd-f72c9125a5c6-1

von Max B. (citgo)


Lesenswert?

Also abgesehen von dem ganzen Elektronikkram muss ich schon sagen, dass 
hier einige echt klasse Holzarbeiten vorstellen.
Sei es versenkte Schalter, schraubenlose Front, Vogelhäuschen, etc.
Eure Geräte sehen aus wie frisch im Holzspielladen gekauft. :)

Alle Achtung und großen Respekt!!!

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Hallo,

ich kram den Thread mal raus, ich hab mich von den vielen Ideen hier 
inspirieren lassen und auch ein ähnliches Gerät gebaut. DFPlayer Mini + 
ATMega. Ein kleines Steuerprogramm in BASCOM. AM Ende haben 27 
Hörgeschichten und Liedersammlungen Platz gefunden. Umschalten zwischen 
den Speicherbänken erfolgt durch Halten eines der ersten 3 Knöpfe beim 
Einschalten. Die einzelnen Ordner auf der Karte werden jeweils bis zum 
Ende fortlaufend gespielt. Die Pausetaste macht, was sie soll. Beim 
Einschalten startet die zuletzt ausgewählte Geschichte von vorn. Nach 
dem Abspielen einer Geschichte beginnt eine LED zu blinken und nach 
einer Weile geht das Gerät (wie hoffentlich auch die kleine Zuhörerin) 
in den Schlafmodus.

Seit einigen Wochen ist das Gerät jetzt in Kinderhänden im Praxistest. 
Bis jetzt sind keine Klagen gekommen.

Vielen Dank für die Inspiration!

: Bearbeitet durch User
von Jan H. (heidi87)


Lesenswert?

Hallo,

ich habe schon vor ein paar Jahren diese Box erfolgreich nachgebaut und 
mein Sohn ist sehr begeistert.
Nun sind die Hörgewohnheiten sehr breit gefächert und die vorhandene 
Anzahl der Ordner zu wenig.
Da ich leider im "coding" vom Arduino nicht sehr gut bin, dachte ich, 
ich stelle hier meine Idee in den Raum.

Mein Sohn ist nun 6 Jahre alt und kann Zahlen lesen und zusammen setzen. 
Besteht die Möglichkeit die Tasten als Zahlen-Tasten zu nutzen, um eine 
höhere Auswahl von Ordnern nutzen zu können?
Als Beispiel tippt mein Sohn 443 ein, dann spielt das Gerät einen Ordner 
auf der Speicherkarte mit der Nummer 443 ab.

Nun wäre meine Frage.
Ist meine Idee in irgendeiner weise umsetzbar?
Und wenn ja, wie??

Über eine Rückmeldung zu meiner Frage würde ich mich sehr freuen.

Beste Grüße

Jan

von Klaus R. (klaus2)


Lesenswert?

...wäre er da nicht schon im Alter für was "richtiges"? Einen (alten) 
mp3 Player mit Menüführung zB.

Ansonsten gilt: gehen tut alles, nur der Aufwand...und bedienbar finde 
ich das dann so auch nicht mehr wirklich.

Klaus.

von Armin K. (-donald-) Benutzerseite


Lesenswert?

Klaus R. schrieb:
> Einen (alten) mp3 Player mit Menüführung

Zeig mir einen MP3-Player mit guter und logischer Menüführung, ohne dass 
man hunderte Male rechts/links/hoch/runter-Tasten drücken muss, und ich 
kaufe ihn sofort...

von ghmartin77 (Gast)


Lesenswert?

Jan H. schrieb:
> Ist meine Idee in irgendeiner weise umsetzbar?
> Und wenn ja, wie??

Wenn das als Kompilat in den ATTiny noch reinpasst (oder du einen 
Arduino verwendest), geht das natürlich.

Musst hier 
(https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L419) 
nicht auf den ersten Tastendruck reagieren, sondern -vermutlich 
zeitgesteuert- Tastendrücke sammeln. Sobald genügend vorliegen (e.g. 3) 
oder Ende-Erkennungspause abgelaufen, die Eingabe in eine Folder-Nummer 
umrechnen und diese dann zum Abspielen übergeben.

Zu überlegen/prüfen:
- Folder-Bezeichnungslimits des DF-Players
- Potentielle Nummernkollisionen mit Ansage-Foldern

Viele Grüße
ghmartin77

von Thomas F. (tobasco)


Lesenswert?

Hallo,
ich will den DFPlayer mit einem ATtiny2313A (mgl. nur mit internem 
Oscillator) betreiben, allerdings im Außenbereich, also ca. -10°C bis 
+40°C.
Bei DFRobot gibt es nur für den DFPlayer_PRO Angaben (Operating 
Temperature: -20°C~70°C). Ich habe Bedenken, dass die Kommunikation zw. 
ATtiny und DFPlayer aus dem Tritt kommen könnte.

Vielleicht kann jemand meine Fragen beantworten:
 - Hat der DFPlayer_Mini einen externen Quarz?
 - Hat jemand von Euch einen ATtiny + DFPlayer schonmal
   bei extremen Temperaturen benutzt?

salute
Tnomas

: Bearbeitet durch User
von Klaus R. (klaus2)


Lesenswert?

Yo,

machn eigenen fred dazu auf.

von Thomas F. (tobasco)


Lesenswert?

Klaus R. schrieb:
Thomas F. schrieb:
>> […]
> machn eigenen fred dazu auf.

Sorry, hab ich jetzt gemacht.
@Moderator Die Beiträge können gelöscht werden

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.