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


von ghmartin77 (Gast)


Angehängte Dateien:

Lesenswert?

Falls jemand Freude am Nachbau eines portablen und kindgerechten 
MP3-Player auf ATTiny-Basis hat, bedient Euch (sicher auch ein nettes 
Weihnachtsgeschenk):

https://github.com/ghmartin77/KidsMP3Player

Have fun :-)

Viele Grüße
ghmartin77

von Axel S. (a-za-z0-9)


Lesenswert?

Da fehlt noch der Schaltplan für den Anschluß der Tasten.

von ghmartin77 (Gast)


Lesenswert?

Soeben hinzugefügt

von PTx (Gast)


Lesenswert?

schönes Projekt! - wirklich toll!

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Die Mechanik ist wirklich niedlich.

Ich war schwer beeindruckt vom Titel "MP3 Player ... auf ATTiny-Basis".
Die Erkenntnis, dass der AVR nur das Tastaturinterface für ein fertiges 
MP3-Modul darstellt, sorgte dann für schlagartige Ernüchterung.

Die Tatsache, dass der AVR, genau wie im Schaltplan gezeigt, nicht mal 
einen Blockkondensator spendiert bekommen hat, macht das ganze Projekt 
passend für die heutige Zeit.

von ghmartin77 (Gast)


Lesenswert?

Marcus H. schrieb:
> Die Mechanik ist wirklich niedlich.
>
> Ich war schwer beeindruckt vom Titel "MP3 Player ... auf ATTiny-Basis".
> Die Erkenntnis, dass der AVR nur das Tastaturinterface für ein fertiges
> MP3-Modul darstellt, sorgte dann für schlagartige Ernüchterung.
>
> Die Tatsache, dass der AVR, genau wie im Schaltplan gezeigt, nicht mal
> einen Blockkondensator spendiert bekommen hat, macht das ganze Projekt
> passend für die heutige Zeit.

Naja, ich hoffe ja doch, dass in diesem Forum insofern Profis unterwegs 
sind, die klar wissen, dass sich mit 8k kaum ein MP3-Decoder 
implementieren lässt :) Insofern war mit dem Begriff "MP3 Player" die 
Holzkiste im gesamten gemeint. Hast aber schon recht, wenn man Worte 
klauben möchte, dann ist auf ATTiny-BASIS tatsächlich Unfug. Die 
eigentliche Arbeit erledigt der DFPlayer-Chip (Filesystem und 
MP3-Decoding, ja sogar 3W-Verstärkung für den Lautsprecher). Der ATTiny 
hat nur ein bissel Logik im Bauch, um die Tastatureingaben an den Player 
zu vermitteln und Minifeatures wie einen Sleep-Timer zu implementieren.

So what? Deshalb jetzt alles Kacke und die Welt schlecht, schlimm und 
schwarz? Ich denke nicht :)

Tipps nehm ich allerdings gern entgegen. Bisher lief der AVR auch ohne 
Kondensator mit der billigen China-Powerbank (, die eigentlich auch eher 
nur ein Akku ist,) stabil. Welche Gründe gäbs noch für nen Kondensator, 
außer halt, dass der Profindas halt so macht?

Grüße
ghmartin77

von mega161 (Gast)


Lesenswert?

ghmartin77 schrieb:
> Tipps nehm ich allerdings gern entgegen. Bisher lief der AVR auch ohne
> Kondensator mit der billigen China-Powerbank (, die eigentlich auch eher
> nur ein Akku ist,) stabil. Welche Gründe gäbs noch für nen Kondensator,
> außer halt, dass der Profindas halt so macht?

Ohne Worte ...

von Klaus R. (klaus2)


Lesenswert?

...die flachen breiten Schrauben stören das Gesamtbild etwas, den 
Lautstärkeknopf hätte ich etwas zentraler gesetzt (vll auch vorne drauf) 
- ansonsten SEHR schöne Umsetzung, vor Allem auch mechanisch sauber. Die 
notorischen Nörgler sind zu ignorieren, die können es ja gerne besser 
machen! Und fertige Module zu verwenden ist mehr als iO, denn nur das 
Ergebnis zählt, vor Allem wenn es so "schick" ist!

Klaus.

von Dussel (Gast)


Lesenswert?

ghmartin77 schrieb:
> So what? Deshalb jetzt alles Kacke und die Welt schlecht, schlimm und
> schwarz? Ich denke nicht :)
Der sogenannte "Clickbait" ist halt nicht so gern gesehen.

ghmartin77 schrieb:
> Bisher lief der AVR auch ohne
> Kondensator mit der billigen China-Powerbank (, die eigentlich auch eher
> nur ein Akku ist,) stabil. Welche Gründe gäbs noch für nen Kondensator,
> außer halt, dass der Profindas halt so macht?
Die Gründe dafür sind genau die, warum Profis das so machen.

Controller mögen Störungen nicht sehr gerne. Bei dir treten keine auf, 
deshalb funktioniert es, aber jemand anderes benutzt das Gerät 
vielleicht in einer anderen Umgebung.
Bei mir knackt es deutlich im Kopfhörer, wenn ich meine 
Schreibtischlampe ein- oder ausschalte. Da ist es nicht schlimm, weil 
danach neue Daten kommen und es weitergeht. Einen Controller kann eine 
solche Störung aber komplett aus dem Tritt bringen.
Denk dran, wenn eine Störung nur eine tausendstel Sekunde dauert, führt 
der Controller schon tausend oder mehr Taktzyklen undefiniert aus.
Ein Kondensator filtert solche Störungen zu einem gewissen Maße weg.

von ghmartin77 (Gast)


Lesenswert?

> Controller mögen Störungen nicht sehr gerne. Bei dir treten keine auf,
> deshalb funktioniert es, aber jemand anderes benutzt das Gerät
> vielleicht in einer anderen Umgebung.
> Bei mir knackt es deutlich im Kopfhörer, wenn ich meine
> Schreibtischlampe ein- oder ausschalte. Da ist es nicht schlimm, weil
> danach neue Daten kommen und es weitergeht. Einen Controller kann eine
> solche Störung aber komplett aus dem Tritt bringen.
> Denk dran, wenn eine Störung nur eine tausendstel Sekunde dauert, führt
> der Controller schon tausend oder mehr Taktzyklen undefiniert aus.
> Ein Kondensator filtert solche Störungen zu einem gewissen Maße weg.

Danke für die konstruktive Erläuterung, Dussel. Klingt vernünftig (und 
hat vor allem nicht diesen süffisanten Unterton wie in anderen 
Kommentaren :)).
Welche Größenordnung und/oder Kombinationen sind notwendig/sinnvoll? 
"Großer" Elektrolytkondensator für die "längeren" Störungen PLUS 
"kleiner" Keramikkondensator für die "schnellen" Störungen? Nur eins von 
beiden?
Braucht's das nur nah an VCC/Ground des ATTiny oder sollte das auch an 
VCC/GND des DFPlayers angebracht werden? In welchen Größen/Kombinationen 
würdest Du dort Kondensatoren empfehlen?

Darüber hinaus gibt es einige Stimmen im Netz, die besagen, der 
Lautsprecher sollte tunlichst mit einem möglichst großen 
Elektrolytkondensator (>1000uF) entkoppelt werden, statt ihn direkt an 
SPK1(+) und SPK2(-) anzuschließen. Was ist Deine Meinung zu dieser 
Behauptung?

Vorab schonmal vielen Dank für (D)eine Antwort.

Viele Grüße
ghmartin77

von Frank G. (frank_g53)


Lesenswert?

Dussel schrieb:
> Controller mögen Störungen nicht sehr gerne.

Das hatte ich heute bei meiner LED-Schreibtischleuchte mit 
Touch-Funktion gemerkt.
Ein Signalkabel vom Funktionsgenerator (5Mhz/5V) hatte das 
Kunststoffgehäuse der Lampe berührt.
Lichtfunktionen (drei Modi) wurden dadurch sehr schnell durchgeschaltet. 
Danach war die Lampe nicht mehr zu bedienen.

Gewartet bis der Akku leer war und USB angestöpselt. Aber es ging nichts 
mehr.
Alles auf Risiko: Gehäuse geöffnet und Controller kurzgeschlossen, in 
der Hoffnung er startet sein Programm neu.

Hat funktioniert, alles wieder prima.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

ghmartin77 schrieb:
> "Großer" Elektrolytkondensator für die "längeren" Störungen PLUS
> "kleiner" Keramikkondensator für die "schnellen" Störungen? Nur eins von
> beiden?

Die üblichen 100 nF direkt am µC sollten genügen. Dein Aufbau verwendet 
ja wohl einen Akku, also brauchst Du Dir um Störungen eines Netzteils 
keine Gedanken machen.

> oder sollte das auch an VCC/GND des DFPlayers angebracht werden?

Das Modul enthält selbst schon entsprechende Kondensatoren, hat aber 
auch keine Probleme damit, wenn Du auch ihm den üblichen 
100-nF-Kondensator spendierst.

> der Lautsprecher sollte tunlichst mit einem möglichst großen
> Elektrolytkondensator (>1000uF) entkoppelt werden

Das wäre der Fall, wenn er asymmetrisch angesteuert würde, d.h. wenn der 
Verstärker einen Audioausgang hätte, und der Lautsprecher zwischen 
diesem und GND angeschlossen würde.

Dein DFPlayer aber nutzt eine Brückenschaltung, und da wäre so ein 
Ausgangsentkopplunskondensator kontraproduktiv.


Solche Kondensatoren bräuchtest Du, wenn Du einen Stereoverstärker in 
Brückenschaltung (der dann also vier Lautsprecheranschlüsse hätte) an 
einen Kopfhörer anschließen wolltest (der nur drei Leitungen hat, je ein 
Lautsprechersignal und eine gemeinsame Masse).

von ghmartin77 (Gast)


Lesenswert?

Hallo Rufus,

viele Dank für Deine Antworten.

> Die üblichen 100 nF direkt am µC sollten genügen. Dein Aufbau verwendet
> ja wohl einen Akku, also brauchst Du Dir um Störungen eines Netzteils
> keine Gedanken machen.

Richtig. Kein Netzteil im Einsatz, nur ein/e Akku/Powerbank.

Kannst Du noch ein wenig erklären, warum dann "die üblichen 100nF" 
genügen sollten, damit ich über mein ungesundes Halbwissen hinauskomme?
Mein Verständnis bisher ist, dass die "kleinen" Keramikkondensatoren 
sinnvoll sind, um "schnelle" (evtl. rapide, in jedem Fall aber kurze) 
Einbrüche in der Spannungsversorgung abzufangen, wohingegen die 
höherkapazitiven (Elektrolyt-)Kondensatoren für "langsame" Einbrüche 
(quasi zur Stabilisierung von Schwankungen) dienlich sind. Letztere z.B. 
um bei einem Brückengleichrichter das Abfallen der durch die 
Wechselspannung verursachte Wellenbewegung der Spannung zu glätten.

Welche Störungen können wodurch in welchem Umfang in meinem Aufbau (eben 
ohne Netzteil und Anschluss an die Netzversorgung) induziert werden? 
Warum sind 100nF in diesem Kontext ausreichend, nicht aber 10nF 
ausreichend oder 1uF notwendig? Sind das empirisch ermittelte Werte oder 
kann man die benötigte Kapazität berechnen?

Bonusfrage :)
Beim Rumspielen und Erweitern des auf Github dokumentieren Standes mit 
Kondensatoren am AVR (auch größeren) in Verbindung mit dem Sleep-Modus 
des Gerätes kommt es zu folgendem Szenario (zumindest meine 
Interpretation): Nach Ablauf der Sleep-Timer-Zeit schaltet der AVR die 
Stromversorgung des DFPlayers aus und versetzt sich selber in den 
tiefstmöglichen Schlafmodus (ADC aus, SLEEP_MODE_PWR_DOWN). Damit wird 
der Stromverbrauch so klein, dass auch die Powerbank ihre 
Stromversorgung abschaltet. Das ist insofern prima, als dass das der 
sparsamste Zustand ist, den ich haben kann.
Allerdings lässt sich das Gerät durch Aus-/Einschalten nicht wieder 
starten. Meine Vermutung ist, dass der Kondensator am AVR genügend Strom 
liefert, um ihn mehrere Minuten am Leben zu erhalten, so dass er nicht 
neu gestartet wird, sobald der Strom vom Akku wieder verfügbar ist. 
Somit schläft der AVR fleißig weiter und das Gerät bleibt tot.
Entferne ich den Kondensator aus der Schaltung, klappt der Neustart 
problemlos. Auch ein 100nF-Kondensator funktioniert, wenn man ein 
Ein-/Ausschalt-Wartezeit von wenigen Sekunden einhält.
Wie würde man das lösen, wenn ein großer Kondensator zum Entstören nötig 
wäre? Kann man ihn durch eine geschickte Schaltung beim Ausschalten 
entladen, resp. beim Einschalten den Reset-Pin des AVRs kurz triggern?

Grüße
ghmartin77

von Nop (Gast)


Lesenswert?

ghmartin77 schrieb:

> Wie würde man das lösen, wenn ein großer Kondensator zum Entstören nötig
> wäre?

Normalerweise gehen Controller ja in den Tiefschlaf, aus dem man sie mit 
einem Interrupt wieder aufwecken kann. Neustart sollte eigentlich nicht 
nötig sein, weil die Latenz dann sehr lang wäre, und dann wäre der ganze 
Zustand des Tiefschlafes ja auch unsinnig.

von ghmartin77 (Gast)


Lesenswert?

Nop schrieb:
> Normalerweise gehen Controller ja in den Tiefschlaf, aus dem man sie mit
> einem Interrupt wieder aufwecken kann. Neustart sollte eigentlich nicht
> nötig sein, weil die Latenz dann sehr lang wäre, und dann wäre der ganze
> Zustand des Tiefschlafes ja auch unsinnig.

Jepp, man könnte den Controller mit einem Interrupt wieder aufwecken. 
Ich weiß aber nicht, wie ich das bei meinem Setup umsetzen könnte: Mein 
Ausschalter steht auf EIN, der Akku hat den Stromlieferdienst 
eingestellt, weil er keinen ausreichenden Verbrauch mehr festgestellt 
hat, der AVR döst im Tiefschlaf vor sich hin, weil er scheinbar aus dem 
Kondensator noch für geraume Zeit mit Energie versorgt wird.
Wenn ich jetzt per Aus-/Einschalten das System neu starte, schläft der 
AVR fröhlich weiter und das System bleibt deshalb unbedienbar.
Neustart des AVR ist für mich eine völlig valide Option, da dessen 
Startzeitlatenz im Vergleich zum DFPlayer völlig vernachlässigbar ist. 
Der Sleep-Modus ist auch nicht unsinnig, nur weil ich den AVR danach 
resette. Durch den Sleep-Modus kann ich signifikant Strom sparen, 
insbesondere, da die Powerbank sich sogar ganz abschaltet, wenn der AVR 
nur noch winzigste Mengen Strom zieht.

Die Lösung -ob Interrupt oder Reset-Triggern- ist aber vermutlich 
technisch die selbe. In beiden Fällen muss entweder der Reset-Pin oder 
ein definierter Interrupt-Pin kurzzeitig auf High gezogen werden. Frage 
ist, wie löst man das "in Elektronik", wenn der Ein/Aus-Schalter bedient 
wird. Oder alternativ -falls technisch einfacher- meine Ausgangsfrage: 
Wie entleere ich den Kondensator beim Ausschalten?

Viele Grüße
ghmartin77

von Herr M. (herrmueller)


Lesenswert?

Wechselschalter und Entladewiderstand.

von Klaus R. (klaus2)


Lesenswert?

Achtung: Die Powerbanken stellen NUR den Wandler ab, aber prinzipbedingt 
ist dann Ubatt = Uout!

Klaus.

von Mitleser (Gast)


Lesenswert?


von Klaus R. (klaus2)


Lesenswert?

Mitleser, afaik liest der nur WAV du Experte :)

"The SD audio player supports only RIFF-WAVE format sound files known as 
Microsoft wave file in LPCM, 8/16-bit, mono/stereo and upto 48kHz 
sampling rate."

Klaus.

von Horst M. (horst)


Lesenswert?

Mitleser schrieb:
> MP3-Player mit 8-Bit-uC:
>
> http://elm-chan.org/works/mp3/report_e.html
>
> http://elm-chan.org/works/sd8p/report.html (Mit Konvertierung)
>
> Geht schon.

Hier Beitrag "Software MP3 decoder for ATmega/ATxmega" gibt's einen (den 
einzigen?) echten MP3-Decoder für AVR8.

von ghmartin77 (Gast)


Lesenswert?

Angeregt durch eure Kommentare hat meine Recherche mit Tante Google 
folgende Seite zu Tage gefördert, die mir ganz eingängig scheint:
http://rn-wissen.de/wiki/index.php/Abblockkondensator

Danke für Eure (Rat)schläge :)

von Bentschie (Gast)


Lesenswert?

ghmartin77 schrieb:
> Allerdings lässt sich das Gerät durch Aus-/Einschalten nicht wieder
> starten. Meine Vermutung ist, dass der Kondensator am AVR genügend Strom
> liefert, um ihn mehrere Minuten am Leben zu erhalten, so dass er nicht
> neu gestartet wird, sobald der Strom vom Akku wieder verfügbar ist.

Das hatte ich auch schon. Grund bei mir war, das der µC im Sleep Modus 
problemlos mehrere Minuten aus dem Elko versorgt werden kann. Wenn Du 
jetzt beim Testen nicht jedesmal eine Viertel Stunde wartest, dann hat 
der µC noch gar nicht gemerkt das die Powerbank abgeschaltet hat. Der 
läuft einfach weiter in seinem Sleep Modus und ist mit sich zufrieden.

von Manfred F. (manfred_f)


Lesenswert?

Seltsam. Hörbert (http://de-de.hoerbert.com) sieht fast identisch aus. 
Zufall? Absicht? Nicht das die Firma noch Lizenzgebühren verlangt...

: Bearbeitet durch User
von Uli (Gast)


Lesenswert?

Sieht nach einem Nachbau aus, die Fragen von ghmartin77 deuten 
daraufhin.
Wenn es der Prototyp wäre von Hörbert wäre,würde ich diese Fragen nicht 
erwarten.

Ich werde mir das Teil nachbauen, denn 239,00 für Hörbert finde ich 
etwas übertrieben, da kann ich ja auch gleich eine Toniebox kaufen.

von Sepp Meier (Gast)


Lesenswert?


von Mampf F. (mampf) Benutzerseite


Lesenswert?

Manfred F. schrieb:
> Seltsam. Hörbert (http://de-de.hoerbert.com) sieht fast identisch
> aus.
> Zufall? Absicht? Nicht das die Firma noch Lizenzgebühren verlangt...

Das Wayback Archiv sagt, den Hoerbert-Player gäbe es schon seit April 
2016 ...

Gibt es ja öfters, dass gute Opensource-Projekte zu kommerziellen 
Produkten verwertet werden, da sie zB der GPL unterliegen oder garkeine 
Lizenz haben.

In diesem Fall wohl nicht.

von Uli (Gast)


Lesenswert?

Laut CT:
Seit Mitte Dezember 2014 ist der Musikspieler Hörbert auch als Bausatz 
verfügbar.

Also ist das Teil noch älter.

von Oliver S. (phetty)


Lesenswert?

Da wird sicher was anderes drin verbaut sein, bei diesem Kasten kommt 
man auf Materialkosten von 20-30€.

von Uli (Gast)


Lesenswert?

Meinst Du die hier vorgestellte Version oder den Hörbert?
Aber ich denke das beide vom Preis etwa gleich sein dürften.

Ich habe nur die von weiten aufgenommenen Bilder vom Hörbert gesehen und 
ich denke das da nichts wildes drauf ist.
Machen wir mal eine Fallstudie für das Teil:
- Kleiner Cortex M3/M4 (MP3 & Bedienung), SD, Spannungsregler
- interner DAC auf einen Treiber für den Speaker
- der ganzen Rest wie Gehäuse Taster, Batteriehalter, Speaker, ...

Der Prozessor und der Speaker sollten das teuerste sein, gefolgt vom 
Gehäuse.

Wäre nichts wildes, macht man zwar nicht mal so eben in der 
Mittagspause, aber wenn man (wie ich) MP3 und das ganze händling darum 
schon fertig hat könnte man das in wenigen Tagen bauen.
Nur ich werde es nicht machen, da baue ich mir lieber die hier 
vorgestellte Version und ich bin in 2-4 Stunden fertig.
Wenn es mich allerdings packt und im Kindergarten schreien plötzlich 
viele "Will ich auch haben" dann könnte ich mal darüber nachdenken, aber 
das sehe ich nicht.

von Flips (Gast)


Lesenswert?

Marcus H. schrieb:
> Die Mechanik ist wirklich niedlich.
>
> Ich war schwer beeindruckt vom Titel "MP3 Player ... auf ATTiny-Basis".
> Die Erkenntnis, dass der AVR nur das Tastaturinterface für ein fertiges
> MP3-Modul darstellt, sorgte dann für schlagartige Ernüchterung.
>
> Die Tatsache, dass der AVR, genau wie im Schaltplan gezeigt, nicht mal
> einen Blockkondensator spendiert bekommen hat, macht das ganze Projekt
> passend für die heutige Zeit.

Ich finde das aber durchaus sinnvoll. Der DFPlayer Mini kostet 1,5 Euro 
und hat schon einen SD-Slot + DAC + Stereo Audioverstärker integriert.

Ich finde es sinnvoll mit vorhandenen Modulen zu arbeiten. Das spart 
Zeit und ist effizienter.

Andererseits kann ich natürlich verstehen, wenn es einem um das Bauen 
als solches geht und man deshalb den umständlichen Weg gehen möchte.

Ich finde das Projekt ganz nett.

von ghmartin77 (Gast)


Lesenswert?

Nach all den Mutmaßungen: Ich suchte einen kinderkompatiblen MP3-Spieler 
und habe in diesem Zuge natürlich auch den Hörbert im Netz gefunden. Die 
Optik der einen Version, die ich mir gebaut habe, ist klar der des 
Hörberts nachempfunden (ist ja auch ein gefälliges Design). Ich hatte 
das Ergebnis aber wegen der Elektronik und Software eines einfachen 
MP3-Abspielers hier geteilt, nicht wg. der Holzoptik meiner 
Eigenbau-Variante drumrum. Ist ja ein Mikrocontroller-Forum und kein 
Schreiner-Forum, oder? :)

Wer sich für die Elektronik des Hörberts interessiert, findet hier 
hochauflösende Details:
https://www.heise.de/ct/zcontent/15/02-hocmsmeta/1420327506115668/contentimages/504_Hoerbertbausatz_neu_80896-sha-jg_PR.jpg

Mir gefiel weder Hardware (ATTINY-861) noch Bespielkonzept (MP3-Dateien 
werden auf dem PC dekodiert und als WAV auf das Gerät gebracht), zudem 
bastel und programmiere ich halt selber gern. Außerdem fehlte mir ein 
Sleep-Timer...

Auch an der Raspberry-Pi-Jukebox, die oben verlinkt ist, bin ich 
vorbeigekommen. Ebenso ein tolles Projekt, allerdings war mir für meinen 
Bedarf ein Raspberry leistungsmäßig und vom Energieverbrauch völliger 
Overkill, nur um ein bissel Musik zu machen.

Wie Flips anmerkte, schien mir auch der 1,2€-Mini-DF-Player die 
eindeutig bessere Wahl, um MP3s abzuspielen.

Zum Thema Kosten: Der Hörbert ist sein Geld allemal und absolut Wert. 
Die "Schreinerei" und auch die Software (auch wenn das letztlich nur ein 
paar Zeilen sind) hat mich etliche Tage gekostet, u.a. weil der DF 
Player "bescheiden" dokumentiert ist (falsche Doku, Doku in 
verschiedenen Varianten, fehlerhafte Libs) und eine insgesamt etwas 
seltsame API hat (Warum ruft man play(folderid, songid) auf, kriegt dann 
aber einen Callback, wenn das Lied zu Ende gelaufen ist, bei der eine Id 
mitgegeben wird, die nichts mit den Aufrufparametern zu tun hat?).

Ansonsten in Geld:
Ikea-Kiste Dragan 10€
Henkel aus dem Baumarkt 7€
Pappelsperrholz, 4mm 4€
Lautsprecher 8€
DF Player 1,2€
Attiny 1€
SD-Karte, 16GB 8€
Powerbank 10€
Elektrokleinscheiß 5€
Poti-Knopf 5€
Schrauben und Gekröse 5€

Roundabout 65€

Viele Stunden Bastel- und Programmierspaß: Unbezahlbar :)
Gut, letzterer ist euch mit dem fertigen Code auf GitHub genommen :)

Bleibt zusammengefasst:
Nein, ich war nicht der erste, der auf die Idee kam, mit einem 
Lautsprecher Töne abzuspielen, auch nicht der erste, der die brilliante 
Idee hatte, MP3s per Knopfdruck abzuspielen und auch den DF Player hab 
ich nicht selbst zusammengelötet. Vermutlich ist nicht mal die Kombi 
Attiny+DF Player einzigartig, sondern schlicht naheliegend.
Alles, was ich Euch vorstellen wollte, war der Code, der in der 
Attiny/DF-Player-Kombi einen funktionstüchtigen Player abgibt. Obacht 
für die Nörgler: der ist doch tatsächlich in einer Programmiersprache 
verfasst, die ich nicht erfunden habe und verwendet Bibliotheken aus 
offenen Quellen.

Grüße
ghmartin77

PS: Hier habt ihr noch eins meiner Projekte zum Zerpflücken: 
https://github.com/ghmartin77/SmartLEDLamp (und nein, ich habe das Licht 
nicht erfunden)

von Flips (Gast)


Lesenswert?

> Obachtfür die Nörgler

Nörgler gehören zu diesem Forum dazu wie die Weißwurst zu Bayern.
Dieses Forum ist quasi eine Sammelstelle für das Nörgeltum schlechthin 
:-)

Das ist völlig normal hier und kein Grund zur Besorgnis oder sich zu 
ärgern.

:-))

von Uli (Gast)


Lesenswert?

Warum sollte man über deine Lampe meckern, ist doch eine nette Idee das 
so zumachen.

Das Du ca. 65€ ausgegeben hast hätte ich nicht gedacht, aber Du hast da 
eininges aufgezählt wo ich sagen würde "ganz schön teuer".

Ich habe anscheinen meine Player auch zu teuer eingekauft (2,8€).
Nunja so ist das leben.
Uli

von Eike S. (heissezwerge)


Lesenswert?

Hey ghmartin77

Tolles Projekt!! Mir gefällt was du gemacht hast. Darf ich fragen, was 
du für Taster und Kappen verwendet hast? Ich habe nach den "original" 
Tastern vom Hörbert gesucht und habe die Serie 5G von APEM/MEC gefunden. 
Allerdings sind die Kappen dazu aktuell schwer zu bekommen (Je nach 
Farbe LZ = 20 Wochen!?). Der Druckpunkt von den "original" Tastern hat 
mir jedoch gut gefallen. Die knacken nicht gleich wie die 
normalen/billigen Kurzhubtaster. Wie ist das bei deinen?

VG heissezwerge

von M. K. (sylaina)


Lesenswert?

ghmartin77 schrieb:
> Falls jemand Freude am Nachbau eines portablen und kindgerechten
> MP3-Player auf ATTiny-Basis hat, bedient Euch (sicher auch ein nettes
> Weihnachtsgeschenk):
>
> https://github.com/ghmartin77/KidsMP3Player
>
> Have fun :-)
>
> Viele Grüße
> ghmartin77

Für Weihnachten wirds zwar eng aber zum Geburtstag für meine Nichte wird 
das auf jeden Fall umgesetzt. Super Idee, dank dir für dieses tolle 
Projekt!

von ghmartin77 (Gast)


Lesenswert?

Eike S. schrieb:
> Hey ghmartin77
>
> Tolles Projekt!! Mir gefällt was du gemacht hast. Darf ich fragen, was
> du für Taster und Kappen verwendet hast? Ich habe nach den "original"
> Tastern vom Hörbert gesucht und habe die Serie 5G von APEM/MEC gefunden.
> Allerdings sind die Kappen dazu aktuell schwer zu bekommen (Je nach
> Farbe LZ = 20 Wochen!?). Der Druckpunkt von den "original" Tastern hat
> mir jedoch gut gefallen. Die knacken nicht gleich wie die
> normalen/billigen Kurzhubtaster. Wie ist das bei deinen?
>
> VG heissezwerge

Die Serie, von der Du schreibst, sieht sehr gut aus... Ich hab lange 
gestöbert, bin dann aber letzten Endes bei den allgegenwärtigen 
Standard-China-Tastern ausgekommen, z.B.
https://de.aliexpress.com/item/Tactile-Push-Button-Switch-Momentary-Tact-Cap-12-x-12-x-7-3mm-KeyCaps-Assorted-Kit/32813514030.html

Knacken, billig wie sie sind, sind leider scheinbar nur in 7 Farben zu 
bekommen, aber die Caps haben zumindest einen überstehenden Ring, so 
dass sie nicht aus dem Gerät fallen können :)
Druckpunkt fand ich ok. Von den Maßen kriegst Du die ohne Ausfräsen 
maximal in 4mm dicker Platte unter. Dann gucken sie gerade noch soweit 
raus, dass man sie g'scheit drücken kann.

Grüße
ghmartin77

von Jan L. (ranzcopter)


Lesenswert?

ghmartin77 schrieb:
> PS: Hier habt ihr noch eins meiner Projekte zum Zerpflücken:
> https://github.com/ghmartin77/SmartLEDLamp (und nein, ich habe das Licht
> nicht erfunden)

Sehr schöne Lampe! Und nein, kein Zerpflücken oder Nörgeln :), bloss die 
Frage, ob das die "echte" funktionierende Codeversion ist? Ich hab's 
gerade mal versucht zu kompilieren, und nur mit Mühe hinbekommen:
- ohne ein zus. "include <IRrecv.h>" tut's nicht
- HeatColorsBlue_p u. HeatColorsGreen_p sind unbekannt (habe ich mal mit 
CRGB::Blue umschifft - habe leider k.A. von FastLed)
- WS2801_RBG gibt's nicht (habe mal WS2801_RGB eingesetzt)

Ich überlege, das für andere LED-Strippen umzustricken...

von Stefan F. (Gast)


Lesenswert?

Mich erinnert die Lampe stark an unseren Kratzbaum, den wir an ein Regal 
angebunden haben. Der hat auch drei Elemente.

von ghmartin77 (Gast)


Lesenswert?

Jan L. schrieb:
> ghmartin77 schrieb:
>> PS: Hier habt ihr noch eins meiner Projekte zum Zerpflücken:
>> https://github.com/ghmartin77/SmartLEDLamp (und nein, ich habe das Licht
>> nicht erfunden)
>
> Sehr schöne Lampe! Und nein, kein Zerpflücken oder Nörgeln :), bloss die
> Frage, ob das die "echte" funktionierende Codeversion ist? Ich hab's
> gerade mal versucht zu kompilieren, und nur mit Mühe hinbekommen:
> - ohne ein zus. "include <IRrecv.h>" tut's nicht
> - HeatColorsBlue_p u. HeatColorsGreen_p sind unbekannt (habe ich mal mit
> CRGB::Blue umschifft - habe leider k.A. von FastLed)
> - WS2801_RBG gibt's nicht (habe mal WS2801_RGB eingesetzt)
>
> Ich überlege, das für andere LED-Strippen umzustricken...

Hallo Jan,

ja, der Code ist der "echte". Allerdings brauchst Du ein paar Libs dazu, 
zu denen mir Dank Deiner Anmerkungen just einfällt, dass ich die 
teilweise gepatcht und auch nicht explizit aufgeführt habe:
1) Für das IRecv.h-Problem brauchst Du die Lib 
https://github.com/markszabo/IRremoteESP8266. Eigentlich solltest Du 
auch einen "Header not found"-Fehler für #include <IRremoteESP8266.h> 
erhalten haben.

2)Die WS2801-Lib ist jene hier: 
https://github.com/adafruit/Adafruit-WS2801-Library
Weil meine Stripes aus China eine interessante Aufschaltung hatte, 
musste ich in die Lib noch WS2801_RBG reinpatchen, das im Original nicht 
drin war.
Das kannst Du hier auf existierende Werte umstellen:
https://github.com/ghmartin77/SmartLEDLamp/blob/master/LEDMatrix.h#L6
(Solltest Du Stripes haben, die auch RBG aufgeschaltet sind, kann ich 
auch gern den Patch verfügbar machen).

3) HeatColorsBlue/Green hatte ich in die FastLED-Lib reingepatcht. Dein 
Workaround sollte vorübergehend funktionieren.

Danke für Deine Hinweise. Ich werde mal sehen, dass ich entsprechende 
Patches für die Libs mit ins GitHub-Repository packe.

Viele Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

Stefan U. schrieb:
> Mich erinnert die Lampe stark an unseren Kratzbaum, den wir an ein
> Regal
> angebunden haben. Der hat auch drei Elemente.

;-)

Vielleicht hatte der Ikea-Designer auch Deinen Kratzbaum vor Augen als 
er Vidja schuff :)

Wenn Du den Code etwas anpasst, dass Du einen Laufpunkt hast, gehen die 
Miezen bestimmt ähnlich gut ab, wie bei einem Laserpointer :)

Grüße
ghmartin77

von Jan L. (ranzcopter)


Lesenswert?

ghmartin77 schrieb:

> Hallo Jan,
>
> ja, der Code ist der "echte". Allerdings brauchst Du ein paar Libs dazu,
> zu denen mir Dank Deiner Anmerkungen just einfällt, dass ich die
> teilweise gepatcht und auch nicht explizit aufgeführt habe:

Nee nee, die beschriebenen Probleme traten auf nachdem ich das halbe 
Dutzend Libs sukzessive nachgerüstet hatte...
Ich vermute mal, es läuf eher auf das „gepatcht“ hinaus ;-)
Wie gesagt, das Kompilieren lief letztlich durch, mit dem genannten 
Gefummel.

> 1) Für das IRecv.h-Problem brauchst Du die Lib
> https://github.com/markszabo/IRremoteESP8266. Eigentlich solltest Du
> auch einen "Header not found"-Fehler für #include <IRremoteESP8266.h>
> erhalten haben.

Ja. Danach gibt es einen Fehler, dass das IR-Objekt unbekannt ist. Bis 
man die Lib IRecv.h ebenfalls einbindet, was die Examples aus der 
IRremoteESP8266 im Übrigen auch machen... :)

>
> 2)Die WS2801-Lib ist jene hier:
> https://github.com/adafruit/Adafruit-WS2801-Library

Jo, vorhanden...

> Weil meine Stripes aus China eine interessante Aufschaltung hatte,
> musste ich in die Lib noch WS2801_RBG reinpatchen, das im Original nicht
> drin war.
> Das kannst Du hier auf existierende Werte umstellen:
> https://github.com/ghmartin77/SmartLEDLamp/blob/ma...
> (Solltest Du Stripes haben, die auch RBG aufgeschaltet sind, kann ich
> auch gern den Patch verfügbar machen).

Würde wohl normale WS2812 nehmen, oder lpd8806; deswegen wird das so 
vermutlich eh‘ nicht 1:1 laufen.

>
> 3) HeatColorsBlue/Green hatte ich in die FastLED-Lib reingepatcht. Dein
> Workaround sollte vorübergehend funktionieren.
>
> Danke für Deine Hinweise. Ich werde mal sehen, dass ich entsprechende
> Patches für die Libs mit ins GitHub-Repository packe.

Ja, hilfreich wäre auch jeweils eine kleine Info im Code, welche Lib 
genau es sein soll. Ich glaube z.B. ‚Websocket‘ gibt‘s auch diverse, die 
die betreffende .h haben.


>
> Viele Grüße
> ghmartin77

von ghmartin77 (Gast)


Lesenswert?

Hallo Jan,

habe Dank Deiner Hinweise die Dokumentation und Sourcen auf GitHub 
überarbeitet. Damit die Threads inhaltlich nicht verwischen, habe ich 
hier einen separaten für die Lampe aufgemacht: 
Beitrag "SmartLEDLamp/Mood Light (IKEA Vidja-Korpus + WS2801 Stripes + ESP8266)"

Danke Dir für Dein Feedback!

Grüße
ghmartin77

von Uli (Gast)


Lesenswert?

In der neuesten Elektor ist ein CORTEX M4 Player drin.

Wenn ich mit den so ansehen dann liest sich das fast so wie meine 
Fallstudie vom 14.12..

Nur das ich mit der Software einiges weiter wäre wie die.

von Rainer U. (r-u)


Lesenswert?

Mir gefällt die Umsetzung auch sehr, vor allem wegen der Mechanik, wo 
ich eine Niete bin.. :-)

Die Stromversorgung  Standby  Wecken mit Interrupt hättest Du halt 
vorher genauer austesten können - Aber das lässt Bastelspaß und Raum für 
eine Version 2.0!

von Jörg P. (plitzi)


Angehängte Dateien:

Lesenswert?

Hallo allerseits,

zuerst mal veiel Dank an ghmartin77 für die Idee, die Umsetzung und vor 
allem für das Teilen.

Ich habe der Player jetzt für meinen Enkel (mechanisch) nachgebaut und 
scheitere jetzt an der Programmierung des Controllers. Das ist mir schon 
ziemlich peinlich, da ich mich nicht gerade als Anfänger in Sachen 
Elektronik und Mikrocontroller einschätzen würde, aber mit Arduino habe 
ich (bisher) nichts gemacht.

ich habe mir also die aktuelle IDE heruntergeladen und installiert, die 
mitgelieferte ino-Datei geladen und versucht zu compilieren. Die erste 
fehlermeldung ist, dass er "Softwareserieal.h" nicht findet. Ich dachte, 
die ist bei Arduino dabei? Also die zugehörigen Dateien aus dem 
Arduno-Pfad in eine Zip-Datei gepackt und dann als Bibliothek wieder 
eingebunden (so hatte ich mir das von der Bibliothek für den DFPlayer 
abgeschaut). Jetzt kommt der Compiler schon ein ganzes Stück weiter, 
beschwert sich aber nun (unter anderem) über mehrfache Definitionen der 
Funktion "Softwareserial::read". Irgendwie bin ich da wohl zu blöd bzw. 
steige nicht durch das sicherlich vorhandene System bei den Bibliotheken 
durch.

Ich möchte als Hardware nicht einen einzelnen Attiny85 verwenden sondern 
habe hier noch ein paar Digispark-Module mit diesem Prozessor liegen und 
habe diese auch (hoffentlich richtig) als Plattform angegeben (mit 
Boardinformationen von Digispark). Aber daran sollte doch das einfache 
compilieren nicht scheitern, oder? Die CPU stimmt ja.

Kann mir bitte einer der Arduino-Freaks da auf die Sprünge helfen. Ich 
würde (diesmal) gern die Software "out of the box" verwenden.

Als "Gegenleistung" biete ich schon mal ein erstes Bild meiner 
Umsetzung.

Jörg

von Klaus R. (klaus2)


Lesenswert?

...sehr schöne Umsetzung - ich finde die Schrauben in den Ecken hübsch, 
die am Tastenfeld hätte ich aber weggelassen (und das anders gelöst). 
Hast du das Gehäuse slebst gemacht, ist das Bambus?

Klaus.

von Jörg (Gast)


Lesenswert?

Hallo,

vielen Dank für das Lob. Das Gehäuse ist das vom Initiator auch 
verwendete "Kistchen" aus dem schwedischen Möbelhaus. Allerdings habe 
ich die kleinere Kiste aus dem Set verwendet und auch den Original-Boden 
als Front genutzt. Ist also Bambus und das habe ich dann auch an einigen 
Stellen zu spüren bekommen. Das große Loch für den Lautsprecher mit der 
(wahrscheinlich nicht mehr sonderlich scharfen) Lochkreissäge war eine 
Geduldsprobe, die ich allerdings leider nicht ganz betsanden habe. Im 
Ergebnis ist die Frontplatte dabei leicht gerissen. Beim genauen 
Hinsehen ist das sicher auch erkennbar. Als Rückwand habe ich übrigens 
den Boden der flachen Schale aus dem Set "aufbereitet". Damit bleibt die 
Optik "stimmig".
Die Schrauben an der Tastatur tragen die Tastenleiterplatte. Was 
besseres ist mir nicht eingefallen. Ja, es sind ziemlich viele 
Schrauben, aber die mechanische Bearbeitung hat so schon ziemlich viel 
Zeit in Anspruch genommen. Beim zweiten wirds besser ;-))

Jörg

von Jörg P. (plitzi)


Lesenswert?

Hallo,

ich frage hier nochmal vorsichtig nach, ob mir jemand die Hex-Datei für 
dieses Projekt "bauen" kann, ich bin da offensichtlich zu blöd für. Und 
ehe ich das ganze außerhalb des "Arduino-Biotops" selbst zurechtschmiede 
oder nachbaue, würde ich es mir hier ausnahmsweise mal einfach machen 
wollen. Und im Github-Archiv ist leider keines drin.

Jörg

von Stefan F. (Gast)


Lesenswert?

Zuerst braucht man den Quelltext und eine Angabe, mit welcher Toolchain 
es compiliert werden muss. Oft spielt die konkrete Version eine Rolle.

Verlinke diese Sachen hier, dann kann man Dir weiter helfen.

Außerdem solltest du dich registrieren, damit man dich persönlich 
kontaktieren kann. Erfahrungsgemäß laufen solche Anfragen von Gästen 
nämlich ins Leere, so dass jede Mühe reine Zeitverschwendung ist.

von Jörg P. (plitzi)


Lesenswert?

So, ich habe es jetzt hinbekommen. Wo genau der oder die Fehler waren, 
kann (und will) ich (vorerst) nicht nachvollziehen. Freunde werden 
Arduino und ich aber wohl erstmal nicht ;-)

Vielen Dank nochmal an den "Spender".

Jörg

von F. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe den Player leicht modifiziert auch aufgebaut. Ich habe einen 
Arduino Pro Mini 3.3V verwendet (hatte ich noch da) und nur 9 Taster. 
Eingebaut habe ich das Ganze in eine Kiste in der Geschenkkiste (war Mal 
Grappa drin).
Vielen Dank fürs Teilen des Projektes.

von ghmartin77 (Gast)


Lesenswert?

Hallo Jörg,
hallo F.,

sehr, sehr schöne Umsetzungen! Was mir an dem Teil am meisten gefällt, 
dass es den großen (Spiel-)Kindern Freude beim Bauen macht und den 
kleinen beim Nutzen... Win-Win :)

Hatte übrigens auch zunächst versucht, den Boden der Bambuskiste zu 
nutzen, aber direkt beim Bohren des zweiten Button-Lochs, ist das spröde 
Zeug zersplittert.

Wenn Euch beim Bau oder Code irgendetwas aufgefallen ist, was für die 
Nachwelt ins Git-Repo einfließen sollte, lasst es mich bitte wissen...

Ansonsten wünsche ich den Beschenkten leuchtende Kinderaugen und viel 
Freude!

Viele Grüße
ghmartin77

Beitrag #5379170 wurde von einem Moderator gelöscht.
von Uli (Gast)


Lesenswert?

Nach langer Pause wollte ich meine Player nun auch endlich fertig 
machen.
Bis Mittwoch Abend muss das fertig sein!

In der Mini SD Card File Structure sind im Ordner /ADVERT einige Files 
drin.

Gibt es die schon fertig irgendwo zum laden oder muss ich mir diese 
selber bauen?

Viele Grüße, Uli

von Klaus R. (klaus2)


Lesenswert?

...unter Zeitdruck klappt sowas eh immer am besten und es gibt kaum 
unangenehme Überraschungen (da man ja keine Zeit hat und Kollege Murphy 
da sehr rücksichtsvoll ist)... ;)

Viel Glück! Klaus.

von Uli (Gast)


Lesenswert?

Musik spielt das Teil schon nur die ganzen Sleep Sachen habe ich noch 
nicht getestet. Und dafür sind ja anscheinen die ganzen Files die ich 
suche.

Ich hoffe das es an einer vollen SD Karte liegt, aber bei mir braucht 
das System gut 90 Sekunden bis ich mal aus dem Setup raus komme.

Ich erwarte jetzt nicht mehr soooo viele Überraschungen.

VG, Uli

von Stefan F. (Gast)


Lesenswert?

> In der Mini SD Card File Structure sind im Ordner /ADVERT einige
> Files drin.

Advert wie "Advertising" (=Werbung)?

von Uli (Gast)


Lesenswert?

1
/ADVERT
2
    0001.mp3 - Audio file "Sleep Timer OFF"
3
    0002.mp3 - Audio file "Sleep Timer 5 mins"
4
    0003.mp3 - Audio file "Sleep Timer 10 mins"
5
    0004.mp3 - Audio file "Sleep Timer 15 mins"
6
    0005.mp3 - Audio file "Sleep Timer 20 mins"
7
    0006.mp3 - Audio file "Sleep Timer 25 mins"
8
    0007.mp3 - Audio file "Sleep Timer 30 mins"
9
    0008.mp3 - Audio file "Sleep Timer 35 mins"
10
    0009.mp3 - Audio file "Sleep Timer 40 mins"
11
    0010.mp3 - Audio file "Sleep Timer 45 mins"
12
    0011.mp3 - Audio file "Sleep Timer 50 mins"
13
    0100.mp3 - Audio file "Mode Set Sleep Timer"
14
    0200.mp3 - Audio file "Continuous Play ON"
15
    0201.mp3 - Audio file "Continuous Play OFF"
16
    0300.mp3 - Audio file "Playlist Loop ON"
17
    0301.mp3 - Audio file "Playlist Loop OFF"
18
/MP3
19
    [Copy same content as in /ADVERT here]

von ghmartin77 (Gast)


Lesenswert?

Die lange Startdauer liegt vermutlich an der vollen SD-Karte. Der Code 
scannt beim Start die Ordner, um zu wissen wie viele Files hinter jedem 
Knopf liegen. So wird der Loop durch die Tracks beim Knopfdrücken 
schnell(er).
Dafür kostet dann leider die Initialisierungsphase etwas mehr Zeit.
Was die Audio-Tracks angeht, könntest Du diesen Dienst nutzen: 
https://www.text2speech.org/de.html

@Stefanus: Jepp, Advert wie Advertising. Hat mit den Strukturen zu tun, 
die der DFPlayer benötigt. Die Firmware sieht vor, dass man laufende 
Audios nur mit Dateien aus dem Advert-Ordner unterbrechen kann, so dass 
das laufende Audio danach an der Stelle fortsetzt, wo es unterbrochen 
wurde.
Da das Teil Files unter Advert nur abspielt, wenn gerade ein Audio-Track 
läuft, benötigt man alle Files als Kopie nochmal im Ordner MP3, damit 
man die Meldungen auch abspielen kann, wenn gerade kein Audio-Track 
läuft.

Grüße
ghmartin77

von Uli (Gast)


Lesenswert?

Mit einer frischen SD-Karte mit allem was ich haben will dauert es nur 
noch gut 10 Sekunden bis es los geht.
Waren wohl die 5GB Bilder und MP3 auf der alten Karte, hatte das alles 
extra in ein Verzeichniss verschoben, nunja jetzt geht es.

Die Audio Dateien habe ich mir erzeugt und die gehen auch.
Ersetzen werde ich die aber später noch mal, die Aussprache ist ja 
schlimm.

Jetzt muss ich nur noch den Sleep testen, Gehäuse fräsen, alles zusammen 
schrauben und noch ein Bild fürs Forum machen.

VG, Uli

von Klaus R. (klaus2)


Lesenswert?

T-15h ;)

Klaus.

von Uli (Gast)


Lesenswert?

T-1h -> fertig!

Bilder kommen noch, sind aber wie zu erwarten nicht sehr spannend.

von Klaus R. (klaus2)


Lesenswert?

...da der Kreativität des Gehäuses keine Grenzen gesetzt sind, immer her 
damit! Glückwunsch!

Klaus.

von Uli (Gast)


Lesenswert?

Bin gerade dabei ein zweites Gerät fertig zu machen und habe da ein 
Problem.

Ich habe 2 verschiedene DF-Player gekauft.
Auf einem steht MP3-TF-16P  wie bei ghmartin77, der geht.
Auf dem anderen DF-Player, der will nicht immer richtig starten.

An der Hardware drummherum scheint es nicht zu liegen, habe die Player 
gewechselt und es beleibt dabei der DF-Player will nicht richtig.

Wenn der mal gestartet ist dann spielt die Musik auch ab, nur das ist 
selten.

Habe schon 100uF direkt daran gehangen, hat aber auch nicths gebracht.


Hat jemand von euch auch so was erlebt und dazu eine Lösung?

VG, Uli

von Klaus R. (klaus2)


Lesenswert?

Foto beider Player zum HW Vergleich?

Klaus.

von Uli (Gast)


Lesenswert?

Fotos helfen da nicht, der einzige sichtbare Unterschied ist der 
Aufdruck und das bei dem "DF-Player" die Beschriftung der IC's entfernt 
wurde.

Ich habe mal ein Labornetzteil (5V) angeschlosen, direkt am Modul!
Dabei kann ich einbrüche von gut einem Volt beim Softreset von diesem 
Modul erkennen, und das ohne Speicher OSZI.
Scheint aber zu reichen um die 2,7V vom Prozessor zu treffen.

Das Andere Modul ist da deutlich humaner.

Ich glaube das ich mir bei dem 1. Lieferanten einfach noch ein Modul 
kaufen sollte und den anderen als Schrott entsorgen kann.

Außer jemand halt da noch eine Idee.


Was ich beim Lesen über diese Player gesehen habe so sollte man den Pin 
1 vom Verstärker (nicht Modul) besser von seinem Dauer-An mit einem 
Draht vom Prozessor schalten lassen.
Dann könnte man den erst einschalten wenn das ganze Setup durch ist und 
beim Poweroff den wieder abschalten.

VF, Uli

von ghmartin77 (Gast)


Lesenswert?

Uli schrieb:
> Was ich beim Lesen über diese Player gesehen habe so sollte man den Pin
> 1 vom Verstärker (nicht Modul) besser von seinem Dauer-An mit einem
> Draht vom Prozessor schalten lassen.
> Dann könnte man den erst einschalten wenn das ganze Setup durch ist und
> beim Poweroff den wieder abschalten.

Jepp, so was ähnliches habe ich im Netz auch gefunden, probiert und 
verworfen: 
http://work-now-dammit.blogspot.com/2016/08/dfplayer-mp3-module-power-onoff-clicks.html

Hier wird der Busy-Output-Pin direkt mit dem Enable-Pin für den 
Verstärker verbunden. Klappt auch, führt aber zu einem (in meinen Ohren) 
unangenehmen Knacken im Lautsprecher, sobald der Verstärker aktiviert 
wird. Wg. der Busy-Pin-Verbindung war das dann mit jedem frisch 
gestarteten Audio-Track der Fall, was mich so nervte, dass ich es wieder 
umgelötet habe.
Wenn man das dediziert über einen Pin des ATTiny steuert kriegt man das 
sicher etwas "feinfühliger" hin, wann der Verstärker deaktiviert wird, 
die Frage ist aber, ob das sooo viel Strom spart.

Zu Deinem anderen Modul: IMHO lohnt sich für 2,23€ der Forschungsaufwand 
nicht, wenn Du eine neue Lieferung abwarten kannst --> Ich würde auch 
die "Tonne und neu bestellen"-Strategie fahren...

Grüße
ghmartin77

PS: Du wolltest uns noch Photos von Deinem Werk zeigen... :)

von Uli (Gast)


Lesenswert?

Ein neues Modul ist bestellt.

Fotos mache ich wenn ich das Teil mal von den Kindern bekomme, die 
weigern sich das Teil herzugeben. Dabei müsste ich auch noch ein Loch 
nachfräsen, damit ich den Lautstärke Regler mal richtig fest schrauben 
kann.

Das mit dem umsetzen auf den Busy Pin habe ich auch probiert, das macht 
alles nur schlimmer (Plop zwischen den Titeln). Man muss das schon über 
den Prozessor machen.
Man soll schon einige mA (ca. 15mA) sparen wenn ich die Messungen im WWW 
glauben darf.

VG, Uli

von ghmartin77 (Gast)


Lesenswert?

Uli schrieb:
> Man soll schon einige mA (ca. 15mA) sparen wenn ich die Messungen im WWW
> glauben darf.

So habe ich es auch gelesen. Aber wann und für wie lange kannst Du in 
diesen Sparmodus und dann wirklich 15mA sparen? Die paar Sekunden beim 
Systemstart machen den Brei nicht fett. Zwischen einzelnen Tracks machst 
Du den Verstärker wg. des Plopps/Knacken auch nicht aus (das wird ja 
nicht weggehen, nur weil der Signalgeber nun der Prozessor ist). Bliebe 
noch nach konfigurierbarer Pause nach Abspielen des letzten Tracks (wenn 
weder Loop noch Sleeptimer eingestellt ist; Mit Sleeptimer wird der DAC 
und Verstärker sowieso per Software ausgeknipst).
Ist der verbleibende Anwendungsfall fürs Stromsparen interessant genug?
Eine weitere Schwierigkeit kommt hinzu: Am ATTiny ist nur noch ein Pin 
frei, der Reset-Pin. Wenn Du den nutzen willst, brauchst Du zum Flashen 
danach eine High-Voltage-"Konfiguration", was echt lästig für's 
Entwickeln ist :)
Ich hatte mit dem Pin rumgespielt und mittels Transistor die Stromzufuhr 
zum DFPlayer komplett abgeschaltet (also mehr noch, als nur den 
Verstärker), habe aber u.a. wg. der nervigen Flashproblematik ganz 
schnell den Herrn Knuth in mein Ohr flüstern hören: Premature 
optimization is the root of all evil!

Dann wird halt der Akku einmal mehr geladen :)

Außerdem geht auch der Spannungswandler in der Powerbank aus, wenn zu 
wenig Strom gezogen wird (siehe Diskussion oben), was dazu führt, dass 
man das Teil nur noch durch Ein-/Ausschalten wiederbeleben kann (wie 
beim Sleep-Timer halt).

Grüße
ghmartin77

PS: Ja, ich weiß, das Reset-Pin-Argument ist ein schwaches. Wenn man die 
Volume-Pots geschickter verkabelt, braucht man nur einen Pin und hätte 
einen weiteren wieder frei...

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein Bild von heute morgen.
Wie man sehen kann ist der Lautstärkeregler noch nicht richtig fest und 
man sieht noch 3 Löcher die falsch gebohrt wurden. Nunja 1. Gerät.
Das ist das kleine Gehäuse, von den 2 IKEA Boxen.

Das 2. Gerät habe ich gleich richtig gefräst, das habe ich das grosse 
Gehäuse genommen.

Das mit dem Reset-Pin hatte ich nicht bedacht.
Du hast recht das nur wenige Ecken gibt wo man den Verstärker abwürgen 
kann.
Aber er wird nicht abgeschaltet durch das Modul, auch nicht im 
Powerdown, Standby oder sonst was, der ist fest auf AN verdrahtet.

VG Uli

von ghmartin77 (Gast)


Lesenswert?

Hi Uli,

das sieht sehr gut aus. Ich frag mich ja noch, womit man dieses spröde 
Bambus-Zeugs gebohrt kriegt. Bei meinen handwerklichen Fähigkeiten 
(und/oder Werkzeug) zersplittert mir das immer :)
Hut ab! Gefällt gut mit den deutlich weniger Schrauben.
Wie klappt das mit dem Griff mittig? Ich hatte meinen extra versetzt 
montiert, weil der Schwerpunkt durch den Lautsprecher schwer in dessen 
Richtung geht.

Meine Modulabschalttheorie geht so:
Der DFPlayer hängt -wie Du schreibst- dauerhaft an VCC und GND. Wenn der 
Player vom Sleep Timer ausgeschaltet wird, wird hier der DAC 
deaktiviert:
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L56
Das führt zu deutlich weniger Stromverbrauch (zumindest wenn mein 
China-USB-Durchfluss-Messgerät halbwegs verlässliche Zahlen raushaut 
:)). Zusätzlich geht der ATTiny in den Tiefschlaf. Die 
Stromverbrauchsreduktion reicht bei mir in Summe aus, um den 
Spannungswandler meiner Powerbank auszuknipsen. Damit bricht die 
Spannung ein auf deutlich unter 5V und es gibt keine ausreichende 
Versorgungsspannung mehr für den DFPlayer. In der Powerbank steckt 
vermutlich so ne 18650er und die liefert ohne Spannungsregler halt nur 
noch ~3.irgendwas Volt, also ganz am unteren Ende der Spec des 
DFPlayers. Ob der dann wirklich damit keinen Strom mehr verbraucht, kann 
ich allerdings nicht sagen...

Grau ist alle Theorie und das ganze Gebastel nur Hobby :) Vielleicht 
kann jemand aus dem Forum hier was fundiertes zur Thematik beitragen?

Grüße
ghmartin77

von Klaus R. (klaus2)


Lesenswert?

...das mit dem Bambus frage ich mich auch. Die sehr schlichte Umsetzung 
gefällt! Woher der Griff?

Klaus.

von Ralf L. (ladesystemtech)


Angehängte Dateien:

Lesenswert?

Klaus R. schrieb:
> Die sehr schlichte Umsetzung
> gefällt!

Mir auch. Vor 30 Jahren gab's mal bei Conrad ein 12-Melodien IC, daraus 
habe ich mir so eine Musikbox mit Innen- und Außenbeleuchtung gebastelt. 
Die Abspielgeschwindigkeit konnte auch noch eingestellt werden.

Oder sollte ich das besser in den Parallelthread verschieben 
(Alte_Elektronik_Basteleien)?  :-)

von Klaus R. (klaus2)


Lesenswert?

Geiles Mopped!

Klaus.

von Uli (Gast)


Lesenswert?

Das habe ich einfach auf einer Fräse mit einem 3mm Fräser gemacht.
Den Nullpunkt hatte ich mir zuvor markiert und das Teil dann etwas fest 
geklemmt und zur Sicherheit noch festgehalten.
Da gab es überhaupt keine Probleme, musste sogar das Programm beim 
kleinen Kasten 2 mal drüber laufen lassen, weil mir 0.2mm fehlten um 
durch den Deckel sauber zu kommen.

Der Deckel von dem grossen Gehäuse war etwas locker und darum hatte ich 
beide vorher mit Holzleim fest geklebt. Ist auch für die Akustik besser.

Nur bei der Oberseite hatte ich die Innereien vergessen und dann noch 
vergessen die Seite zuwechseln, darum die 3 Fehlbohrungen.


So gesehen könne ich von Gehäuse aus in die Serienproduktion gehen.
Nur die Lochrasterplatinen, Gewerbe, WEEE, ....  hindern daran.


Das mit dem Abschalten habe ich auch ersteinmal verschoben, komme 
sowieso nicht an das Gerät, das Teil läuft zur Zeit noch ca. 10h am Tag.
Hoffe mal das die neuen Player in 3 (2-4) Wochen kommen, dann kann ich 
den 2. auch fertig machen.

VG , Uli

von Uli (Gast)


Lesenswert?

Der Giff kommt auch von IKEA, der ist mittig weil meine Frau sagte das 
der da hin soll. Bei der grösse stört irgentein Gewicht im inneren nicht 
wirklich, durch den Akku ist das schon gut verteilt.

von Uli (Gast)


Lesenswert?

Noch zum Gewicht:
Da ich nur einen Visatron SC4.7ND verbaut habe bringt der auch nicht so 
ein Gewicht in die Kiste.

Der ist übrigens laut genug, ich habe den schon anständig runter regeln 
müssen.
Vom Klang hatte ich nichts (Blecheimer) erwartet und bin positiv 
überrascht worden.
Der Player und der Lautsprecher arbeiten für den Preis gesehen recht 
anständig. Hat zwar nichts mit HIGHEND zu tun, aber das erwartet hier ja 
auch niemand.

Hatte mal einige Kauf-Player im Fachgeschäft mir angehört und war 
teilweise enttäuscht wie die Klingen, da hätte ich oft mehr erwartet, 
besonders wenn ich dann auf das Preisschild gesehen habe.

Aber so ist das halt, marketing siegt oft über Qualität.

VG, Uli

von Christian S. (chris02)


Lesenswert?

Ein kleiner Beitrag von mir.

Die Taster, die im org. Aufabu verwendet werden sind Apem Multimec 3F, 
bzw die 5G gehen auch.

Weiter oben wurde das schon mal in Erwägung gezogen.

Reichelt bietet einige Tasterkappen, vollständiges Farbensortiment 
(zumindest für den 3F) hat Mouser im Angebot.

Tasterkappe für (xx=Farbcode):
3F: 1Dxx
5G: 1DSxx

Farbcodes:
58  metal bordeaux
08  red
30  ultra blue
02  green
34  melon
40  dusty blue
00  blue
38  noble red
32  mint green
50  metal dark blue
57  metal dark grey

Vollständige Farbübersicht im Datenblatt beim Hersteller
https://www.apem.com/de/1ds-232.html

Meiner Meinung nach ein sehr schöner Vorteil, bei den Tasterkappen: Sie 
haben einen Durchmesser von 9,6mm und benötigen eine 10mm Bohrung, was 
die Sache recht einfach macht.


Selbst beim Nachbau ist es, mit den org. Komponenten schon recht 
ostenintensiv.

von Friedhelm E. (fredfromflett)


Lesenswert?

Hallo alle zusammen

Eigentlich ein Ärgernis der Woche oder die Temperatur vernebelt mir 
alles

Ich versuche auch gerade so einen Player ans Leben zu kriegen,
aber mit dem Dateisystem auf der SD Karte stehe ich auf Kriegsfuß.
Gibt es vielleicht irgendwo ein Muster zum runterladen?  Die Erklärungen 
auch im DaBla habe ich gelesen, es kommt aber immer "File Error"

oder kann mir sonst noch einer auf die Sprünge helfen.

Gruß fredfromflett

von Uli (Gast)


Lesenswert?

Was ist den daran unklar?
Das ist doch alles gut beschrieben, wenn Du das hier nachbaust!
Schau doch nochmal in die Readme.md rein da steht es eigentlich sehr gut 
drin.

01/001.mp3
01/002.mp3
..

11/001.mp3

ADVERT/.... und mp3/.... sind da schon etwas kompizierter, aber auch ich 
habe es geschaft die paar Dateien anzulegen.

von Friedhelm E. (fredfromflett)


Lesenswert?

Genau so hab ich das gemacht.
aber das Ding sagt halt "File Error"
oder kommet es auf die Reihenfolge an, in der man die Dateien auf die SD 
kopiert hat?
ich stell das ganze nachher hier mal rein.

von Uli (Gast)


Lesenswert?

Da bin ich raus, da habe ich keine Ahnung.

Ich habe alles auf dem PC zusammen gestellt und einfach alles kopiert.
Da hatte ich keine Probleme.

Ich hatte mal irgendwo gelesen das die FAT Einträge die Reihenfolge 
bestimmen sollen, wenn den so ist dann habe ich wohl alles richtig 
gemacht.

von Oliver S. (phetty)


Lesenswert?

Es gibt ein Tool dirsort  damit kann man die Einträge auf sdkarten 
sortieren.  Braucht man auch für billige mp3 Autoradios.

von ghmartin77 (Gast)


Lesenswert?

Bist Du mit Deiner SD-Karte im Rahmen der Spec des DF-Players?
...supports FAT16 , FAT32 file system, maximum support 32G of the TF 
card...

Was auch noch sein könnte ist, dass er den Kartentyp einfach nicht 
"mag". Hast Du's schonmal mit einer anderen Karte (anderer Hersteller) 
probiert?

Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

@Friedhelm E.:
Problem behoben oder kann Dir noch geholfen werden?

von Florian R. (flo1234)


Lesenswert?

Hallo,
Ich bin dabei, einen weiteren Player aufzubauen. Ich habe das Problem, 
dass zwar das Abspielen von MP3s funktioniert, jedoch kann ich während 
des Abspielens weder die Lautstärke verändern noch eine andere Datei 
auswählen. Es scheint als ob der Player in folgender Zeile hängt:
1
curTrackFileNumber = readPlayerCurrentFileNumber(READ_RETRIES);
Hat vielleicht jemand eine Idee, woran das liegen könnte?

von ghmartin77 (Gast)


Lesenswert?

Hi Florian,

spaßig, welch verrückte Fehlerbilder es so geben kann. Dieses habe ich 
noch nie gesehen. Ich stell einfach mal ein paar Fragen, vielleicht 
kommen wir dabei in die Ecke, woran's liegen könnte:
1) Code ist 1:1 der von GitHub? Keinerlei Anpassungen? Zeile 277 ist 
nicht wegverschwunden?

2) Binärsuche betrieben? ATTiny ausgetauscht, DFPlayer ausgetauscht 
(nach Möglichkeit jeweils aus dem funktionstüchtigen ersten Gerät)?

3) Was lässt Dich denken, dass der Code bei readPlayerCurrentFileNumber 
hängenbleibt? Der Code gibt -soweit ich das sehe- eigentlich keinen 
Punkt her, dass er dort hängenbleiben könnte. Die Retries in Verbindung 
mit einem Timeout sorgen eigentlich genau gerade dafür, dass der Code in 
jedem Fall zurückkommt.

4) Lässt sich die Lautstärke einstellen, wenn noch kein Titel abgespielt 
wurde?

5) Lässt sich nach Abspielen eines Titels ein weiterer Titel starten? 
...die Lautstärke ändern?

6) Lässt sich während des Abspielens der Sleep Timer aktivieren? (Falls 
ja, spräche das gegen die Blockier-Theorie bei 
readPlayerCurrentFileNumber.)

7) Hast Du einen Arduino zur Hand? Der Code sollte sich auch darauf 
ausführen lassen und der erlaubt Dir mittels Serial ein paar 
Log-Ausgaben rauszuschreiben, um der Ursache auf den Grund zu gehen...

Toitoi...

Grüße
ghmartin77

PS: Nicht ganz Ernst gemeint: Spec des DFPlayers geprüft? Vielleicht 
funzelt der bei >35 Grad nicht mehr so wirklich gut :) Dann wird's ab 
Donnerstag gehen...

von Friedhelm E. (fredfromflett)


Lesenswert?

ghmartin77 schrieb:
> @Friedhelm E.:
> Problem behoben oder kann Dir noch geholfen werden?

Hallo ghmartin77

Danke für die Antworten werde ich probieren, musste das Projekt aber 
zurückstellen.

von Florian R. (flo1234)


Lesenswert?

Hallo ghmartin77,

vielen Dank für die Antwort, ich denke ich habe das Problem gefunden:
Nr 2. hat mir auf die Sprünge geholfen, mit dem anderen Modul 
funktioniert es wie gewünscht. Ich habe da offensichtlich ein Fakemodul 
aus CHina bekommen. Wie hier 
(https://forum.arduino.cc/index.php?topic=241021.45) beschrieben erkennt 
man diese u.a. an der roten LED und daran, dass Basisfunktionen wie die 
Wiedergabe funktionieren, aber ein List der Verzeichnisse nicht. Ich 
habe bereits vom Händler das Geld zurückbekommen. Ich hatte extra bei 
dem selben Händler gekauft, bei dem ich auch das letzte Modul gekauft 
habe.
Hat jemand eine günstige Bezugsquelle für Module aus Europa? Habe keine 
Lust wieder 6 Wochen zu warten...

Der Vollständigkeit halber noch die Antworten auf die restlichen Fragen:

1) Code ist 1:1 der von GitHub, Anpassungen lediglich bei den ADC Pins 
und den Werten für die Buttons (habe nur 9 Buttons) und kompiliert für 
Arduino Pro Mini

2) s.o.

3) Habe den Arduino per Serial.print debugged und so herausgefunden ab 
welcher Stelle die main-loop hängen bleibt

4) Ja, funktioniert

5) nein, sobald ein Titel läuft geht gar nichts mehr

6)... auch kein anderer Titel oder der Sleeptimer

7) s.o.

Und da ich im Keller bastle kann ich auch die Hitze ausschließen :-)
Vielen Dank für deine Unterstützung

von ghmartin77 (Gast)


Lesenswert?

Hi Florian,

watt et allet gibt. Werd' ich in diesem Leben nicht mehr schnallen, 
warum es sich lohnt, solche 1,15€-Dinger als Fake zu verticken. Kann ja 
nur über Stückzahlen halbwegs lukrativ sein. Und warum die Kaspers es 
dann nicht auf die Kette kriegen, wenigstens die farblich richtige LED 
aufs Board zu tüddeln, erschließt sich mir auch nicht. Naja, zumindest 
gut für den Endverbraucher :)
Mir wurden mal Fake ATTinys untergejubelt. Seinerzeit hatte ich diesen 
Artikel gefunden (spaßig zu lesen): https://www.sparkfun.com/news/384
Das sieht fast so aus, als würden manchmal ein paar Firmen hinten links 
im Lager noch ein paar tausend alte Chips finden. Dann wird die 
Beschriftung runtergeschliffen und die Dinger auf etwas umgelabelt, was 
von außen gleich aussieht. Auch ne Form von Recycling :)

Preiswerte Bezugsquelle in Europa kenne ich leider keine, sorry.

Grüße
ghmartin77

von Uli (Gast)


Lesenswert?

Ich habe ja auch Probleme mit 5 von 6 Playern, bei 2 davon gehe ich auch 
davon aus das das Fake Typen sind (Beschriftungen entfernt). Bei den 
andern 3 bin ich mir noch nicht zu 100% sicher, die sehen wie die 
funktionierende aus.

Mir zerreist es immer den AVR, sieht zumindestens so aus.
Hatte mal nur die Spannung angelegt und eine der Originaltasten 
betätigt, Musik machen kann der Player wenn er will. Nur unter AVR 
Kontrolle geht nichts.

Parallel habe ich mal eine Platine gemacht wo ich alles selber in 
Software mache. Mal sehen was schneller fertig ist der 2. DF-Player oder 
mein eigenes Teil.

VG Uli

von Uli (Gast)


Lesenswert?

Es sind bei mir 5 Fake Player.
Ohne AVR gehen die alle und machen Musik, aber mit AVR geht nichts.

Original: blaue LED  +  YX5200 chip

Fake: rote LED + abgeschliffen oder andere Bezeichnung


Also Augen auf beim einkaufen.

von Swen N. (niesel)


Lesenswert?

Hallo,

ich habe dieses Projekt gefunden, als ich im Internet auf der Suche nach 
einem Kinderradio für meinen 2,5 Jahre alten Sohn war. Das einzige 
kommerzielle Radio, welches in Frage gekommen wäre war der „Hörbert“. 
Somit ist diese Variante für meinen kleinen ideal :-). Also erstmal 
vielen Dank für die tolle Idee.

Da wir die Bambusbox vom großen Schwedischen Kaufhaus eh im Bad 
rumstehen hatten, konnte ich mich auch gleich an die Arbeit machen. Ich 
habe dabei auch den Boden der Box als Front genommen und ein Lochraster 
für den Lautsprecher mit einem Holzbohrer gebohrt (Bilder folgen). Die 
Optik des Radios gefällt mir richtig gut. Den Elektronikpart habe ich 
1:1 von diesem Projekt übernommen. Derzeit habe ich lediglich den IC 
Sockel des Attiny per Kabel mit dem Arduino Uno verbunden. Auf die SD 
Karte habe ich die Ordner 01 bis 11 mit jeweils zwei mp3s angelegt.

Bisher konnte ich folgende Funktionen erfolgreich testen:

1. Wenn ich auf einen der 11 Knöpfe drücke, wird jeweils der erste Track 
dieses Ordners abgespielt.

2. Lautstärkeregelung funktioniert vor und nach dem Abspielen des 
Tracks.

Was derzeit nicht funktioniert:

3. Lautstärkeregelung während der Wiedergabe.

4. Nachdem das erste Lied zu Ende ist, geht der yC wieder in den loop. 
Er spielt also nicht automatisch das zweite Lied.

5. Während der Wiedergabe kann ich kein anderes Lied ansteuern.

Wenn ein Lied abgespielt wird, läuft das Programm bis zur folgenden 
Zeile:
ret = player.readCurrentFileNumber(DFPLAYER_DEVICE_SD);
Wenn das Lied zu Ende ist, geht es direkt wieder in den loop.

Was mich noch stört:

6. Sobald der DFPlayer Strom bekommt knackt der Lautsprecher

7. Während die 11 Ordner durchsucht werden, knackt der Lautsprecher 
jeweils 1mal.

Den "Advert" und "MP3" Ordner habe ich noch nicht angelegt. Müssen hier 
bestimmte Tracks abgelegt werden???

Ich würde mich freuen, wenn mir irgendjemand weiterhelfen kann ;-)

von Klaus R. (klaus2)


Lesenswert?

...hast du den Thread gelesen? Du hast vermtl eine fake DFPlayer.

Klaus.

von Swen N. (niesel)


Lesenswert?

Hallo Klaus,

ja ich habe den Thread gelesen.
Ich kann den DFPlayer über die seriellen Schnittstelle TX RX ja 
ansteuern. Sowohl die Ordnerauswahl, in der die MP3s liegen sowie die 
Lautstärke kann ich ändern. Dies funktioniert aber nur bevor ich ein 
Lied starte und wenn dies zuende ist.

Ich habe es bisher so verstanden, dass bei den Fakes keine Kommunikation 
über die serielle Schnittstelle möglich ist.

Ach ja, die LED wenn ein Track abgespielt wird leuchtet blau :-)

von Klaus R. (klaus2)


Lesenswert?

...ah, OK - dann hätte ich vll genauer lesen sollen. Dachte genau der 
Effekt wäre auch beim Abspielen mal aufgetreten, aber da du ja ne blaue 
LED hast, kann es ja quasi kein fake sein ;)

Klaus.

von ghmartin77 (Gast)


Lesenswert?

Hi Swen,

dann sammeln wir mal, in der Hoffnung, dass Dir irgendwas weiterhilft:

zu #3) Ist durch die Punkte #4 und #5 erklärbar. Das Lautstärke-Handling 
erfolgt in der Main-Loop, die scheinbar nach Start eines Tracks nicht 
weiter ausgeführt wird.

zu #4) Hängt mit #5 zusammen. Der Code versucht nach Track-Start die ID 
des aktuell laufenden Tracks vom Player abzuholen 
(readCurrentFileNumber), um nach dessen Ende den nächsten Track zu 
starten. Wie du schreibst kommt readCurrentFileNumber aber nicht mehr 
zurück, damit ist der "Continuous Play"-Mechanismus kaputt.

zu #5) Die gute Nachricht: Wenn Du das gelöst bekommst, sind Deine 
anderen Probleme auch weg :-) Die schlechte Nachricht: Ich habe keine 
Ahnung, was die Ursache ist, aber ich rate mal fleißig: Variante A: Es 
gibt noch eine andere Fake-Version des DFPlayers. Variant B (darauf 
tippe ich): Vor 15 Tagen gab es eine Änderung im Github-Repo 
https://github.com/DFRobot/DFRobotDFPlayerMini. Evtl. hat die Änderung 
meinen Code inkompatibel werden lassen. Solltest Du die frischeste 
Version aus dem Repo nutzen, kannst Du ja mal in der Zeit etwas 
zurückreisen und die Version vor dem 1.0.3-Commit probieren.
Randbemerkung dazu: Eigentlich sollte es (Fake-Chips mal außen vor) 
"virtually impossible" sein, dass der Code an der Stelle hängen bleibt, 
die Du beschreibst: Die DFPlayer-Lib sieht extra einen Timeout vor, 
nachdem diverse Funktionen (u.a. auch readCurrentFileNumber) 
zurückkehren müssen, auch wenn keine Antwort vom Player kommt. Dieser 
Timeout steht auf 1sec. Da ich davon ausgehen, dass Deine Test-MP3s 
länger sind, muss was anderes verquer sein. DASS der Code trotz meiner 
"Kann eigentlich nicht sein"-Argumentation dort hängenbleibt, zweifle 
ich übrigends nicht an. Alle Deine anderen Fehlerbeschreibungen 
bestätigen das und von den Erfahrungen mit Fake-Modulen, passiert es 
dort offensichtlich auch nachweislich.

zu #6) Ein einmaliges Knacken ist bekannte "Funktion": Das passiert, 
sobald der Verstärker auf dem DFPlayer aktiviert wird. Ist halt ein 
Billig-Low-End-Modul. Da kannst Du nichts Großes erwarten. Falls Du 
dauerhaftes Knacken/Störgeräusch hörst, weist das auf einen fehlenden 
(oder falsch dimensionierten) Widerstand zwischen TX-ATTiny-Pin und 
RX-DFPlayer-Pin hin.

zu #7) Das ist mir bisher nicht aufgefallen. Da hierbei fleißig mit dem 
Player über UART "gesprochen" wird, tippe ich auf zu klein 
dimensionierten Widerstand (siehe #6).

Nummernlos: Den "Advert" und "MP3" Ordner habe ich noch nicht angelegt. 
Müssen hier bestimmte Tracks abgelegt werden???
Ja, so ist es. Ist auf der GitHub-Seite beschrieben.

Dann man viel Erfolg und lass mal hören, woran's gelegen hat...

Grüße
ghmartin77

von Tim M. (brotzeit)


Lesenswert?

Hallo zusammen,
da mein Junior total auf Hörspiele abfährt bin ich gestern, auf der 
Suche, über diesen Beitrag gestolpert, und war gleich mal hin und weg:

KLASSE PROJEKT!

Gefällt mir richtig gut, und genau das was ich/wir brauchen.
Zum Nutzen für den Junior, und für mich, um den Spieltrieb zu 
befriedigen.

Leider ist hier vieles für mich Neuland (schon wieder einer dieser Sorte 
;-) ).

Würde mich freuen wenn ihr mir zur Realisierung des Projektes 
weiterhelfen würdet:

- Wenn ich das richtig verstanden habe muss ich einen Programmcode auf 
den DFplayer kopieren!? Wie und mit was realisiere ich das?
Oder ist der Player vorkonfiguriert?

- Ist der Widerstand auf der Platine für die Lautstärkebegrenzung?

: Bearbeitet durch User
von ghmartin77 (Gast)


Lesenswert?

Hi Tim,

> - Wenn ich das richtig verstanden habe muss ich einen Programmcode auf
> den DFplayer kopieren!? Wie und mit was realisiere ich das?
> Oder ist der Player vorkonfiguriert?

Den DFPlayer kannst Du so nehmen wie er ist (vorausgesetzt, Du erwischt 
keinen Fake (s.o.)). Der Programmcode kommt (compiliert) in den 
ATTiny-Mikrocontroller. Dazu gibt's mehrere Wege. Empfehlen würde ich 
ArduinoIDE und einen Arduino zum Flashen. Entsprechende Anleitung hier: 
https://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren
Das sollte zum Einlesen und Abschätzen, worauf Du Dich im "Neuland" 
einlässt ausreichen. Aber sei beruhigt: "Wir schaffen das" :)

>
> - Ist der Widerstand auf der Platine für die Lautstärkebegrenzung?

Solltest Du die Widerstände auf der Button-Platine meinen, dann nein. 
Wenn Du mit DEM Widerstand auf der Platine den auf der Hauptplatine 
zwischen DFPlayer und ATTiny meinst, dann bedingt. Guxtu hier: 
https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299
Ohne den Widerstand gibt's zuweilen starke Stromgeräusche. Die Doku sagt 
"But if you find the noise is quite loud, then you could attach an 1K 
resistor to the TX pin."
Die Lautstärkebegrenzung, die Du meinst steckt eher in den beiden Potis: 
Eins für den externen Regler und ein zweites für die Maximaleinstellung.

Grüße
ghmartin77

von Swen N. (niesel)



Lesenswert?

Hallo ghmartin77,

erstmal vielen Dank für Deine schnelle Unterstützung. Dank Deiner Hilfe 
konnte ich das größte Problem lösen. Der Player bleibt jetzt nicht mehr 
hängen und geht nach start des Tracks direkt wieder in den loop. Somit 
kann ich die Lautstärke während des Abspielens verändern und mit einer 
anderen Taste ein anderes Lied starten.
Das Problem lag tatsächlich an der library. Allerdings hatte ich nicht 
die neuste sondern eine älter drin 1.0.2

Somit ist mein DFPlayer i.O.  :-)

Momentan ist es aber so, dass er nur das erste Lied aus dem jeweiligen 
Ordner spielt. Drücke ich den selben Knopf noch mal, spielt er wieder 
das erste Lied. Nachdem das Lied zu Ende ist wird kein weiters 
automatisch gestartet.

Das Knacken der Lautsprecher habe ich nur noch beim Einschalten.

Das mit dem "Advert" und "MP3" Ordnern habe ich irgendwie noch nicht so 
richtig verstanden. Auf der GitHub-Seite ist zwar beschrieben wie die 
Ornerstruktur aussehen soll. Mir ist aber nicht klar, ob ich da jetzt 
normale Lieder rein packe oder ob da bestimmte Files hinein müssen.

Werde mich jetzt weiter auf die Fehlersuche begeben.

Nochmals vielen Dank für die Unterstützung.

Grüße
Swen

von ghmartin77 (Gast)


Lesenswert?

Hi Swen,

klingt lösbar :)
Jetzt bist Du vermutlich soweit im DFPlayer-GitHub-Projekt 
zurückgegangen, dass Du Dir einen anderen Fehler eingehandelt hast.
Schau mal bitte, ob du in Deiner jetzigen Version von 
DFRobotDFPlayerMini.cpp solche Zeilen findest:
1
int DFRobotDFPlayerMini::readFileCounts(){
2
  readFileCounts(DFPLAYER_DEVICE_SD);
3
}
4
5
int DFRobotDFPlayerMini::readCurrentFileNumber(){
6
  readCurrentFileNumber(DFPLAYER_DEVICE_SD);
7
}

Falls ja, pack doch vor jeden der read*-Aufrufe im Inneren der Methoden 
ein beherztes "return ". Den Fehler haben sie mit diesem Commit mal 
behoben aber nachträglich oder vorher wohl mal was anderes 
kaputt-gefixt: 
https://github.com/DFRobot/DFRobotDFPlayerMini/commit/0cf620c20da92716404efcffbdc089e3a29b9e24

Vermutlich kommt dann Dein Knacken beim Start zurück, wenn er die 
Verzeichnisse scannt (Widerstands-Theorie dazu hast Du ja bereits von 
mir).

Zum Verständnis der Folder "Advert" und "MP3" habe ich mal ein Manual 
mit ins GitHub-Repository hochgeladen: 
https://github.com/ghmartin77/KidsMP3Player/blob/master/assets/Manual%20German.pdf
Seiten 3,4 und die letzte lassen hoffentlich ein Glöckchen bei Dir 
klingeln, was das soll :) Hinweis: "Es spricht..."
Warum die gleichen Dateien als Replik in "Advert" UND "MP3" liegen 
müssen, steht weiter oben in diesem Thread.

Und das Wichtigste zuletzt:
Cooles Kistlein ist's geworden!!! Respekt! :)

Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

@Tim:
Meine "Stromgeräusche" im Text oben sollten "Störgeräusche" sein.
Poti zur internen Maxlautstärkeeinstellung siehst Du im soeben 
hochgeladenen Manual:

https://github.com/ghmartin77/KidsMP3Player/blob/master/assets/Manual%20German.pdf

Seite 8, "Have It Your Way" zeigt's...

Hoffe's hilft Dir weiter...

von Tim M. (brotzeit)


Lesenswert?

Hallo ghmartin77,

danke für deine Unterstützung!

Ja, ich meinte den Poti auf der Platine.
Schöne Anleitung hast du da noch hinzugefügt!

Gestern hab ich einige Bauteilbestellungen angestoßen, ich kanns kaum 
abwaren bis die einflattern.

Jetzt muss ich mir mal genau durchlesen wie ich den Programmcode in den 
attiny bekomme...

Sollte ich am Besten nen Arduino UNO R3 beschaffen?
(Da gibts ja tausende "nachbauten!?)

Nochmals Danke, neue Fragen kommen garantiert.... ;-)

: Bearbeitet durch User
von ghmartin77 (Gast)


Lesenswert?

Tim M. schrieb:
> Sollte ich am Besten nen Arduino UNO R3 beschaffen?

Welcher Arduino, ist relativ wurscht, da er in diesem Fall nur zum 
Flashen des ATTiny genutzt wird. Ich persönlich nutze dazu am liebsten 
einen Arduino Nano. Der hat -selbst in Deutschland geordert- ein 
halbwegs vernünftiges Preis-/Leistungsverhältnis, kann auf ein 
Breadboard neben den zu flashenden ATTiny gesteckt werden und macht 
damit alles, was ich brauche.
Die oben verlinkte Anleitung funktioniert auch mit einem Nano... 
(relevante Pins sind beim UNO und beim Nano gleich beschriftet)

von Marcus (Gast)


Lesenswert?

Hallo,
Zuerst einmal: Tolles Projekt. Das möchte ich unbedingt für meine kleine 
basteln.

Leider hab ich überhaupt keine Erfahrung mit sowas und daher noch ein 
paar fragen.

Den Arduino Nano brauche ich um den attiny zu flashen? Kann ich den 
einfach draufstecken oder wird der auch gelötet?

Welchen Widerstand hat dein Lautsprecher? Den gibts ja mit 4 und 8 ohm.

Funktioniert das auch mit 2 Ls in Stereo?

Schöne Grüsse

von ghmartin77 (Gast)


Lesenswert?

Hallo Marcus,

Marcus schrieb:
> Leider hab ich überhaupt keine Erfahrung mit sowas und daher noch ein
> paar fragen.

Völlig ok.

> Den Arduino Nano brauche ich um den attiny zu flashen?

Wenn man keine Erfahrung hat, sollte man zumindest ein kleines bissel 
Aufwand in Recherche stecken. Nur einen Eintrag über Deiner Frage steht 
in diesem Thread:
1
Welcher Arduino, ist relativ wurscht, da er in diesem Fall nur zum 
2
Flashen des ATTiny genutzt wird.

Insofern kann ich Deine Frage überhaupt nicht nachvollziehen. Ich helfe 
gern weiter, aber dann möchte ich auch ein gewisses Maß an 
Eigeninitiative wahrnehmen.

> Kann ich den einfach draufstecken oder wird der auch gelötet?

Ebenfalls im Eintrag direkt vor Deinem steht
1
Die oben verlinkte Anleitung...

Mit minimalstem Aufwand ist besagter Link auf diese auch direkt hier im 
Thread zu finden. Da hat sich jemand anders bereits viel Mühe gegeben, 
zu beschreiben, wie man einen ATTiny mit einem Arduino flasht. Kurz 
lesen und Du weißt, ob was gelötet wird oder aufgesteckt.

>
> Welchen Widerstand hat dein Lautsprecher? Den gibts ja mit 4 und 8 ohm.
>

Auf der GitHub-Anleitungsseite steht
1
Visaton 8006 Speaker
Den finde zumindest ich nur in einer 8Ohm-Version.


> Funktioniert das auch mit 2 Ls in Stereo?

Ja, der DFPlayer hat Ausgänge für R und L, allerdings dafür keinen 
Amplifier an Board (den nur für Mono). D.h. Du bräuchtest einen 
separaten Stereo-Amplifier, z.B. PAM8403 oder PAM8610.

>
> Schöne Grüsse

Grüße
ghmartin77

von Tim M. (brotzeit)


Lesenswert?

Es geht vorwärts, die ersten Bauteile trudeln langsam ein...

Hab mich gestern mit dem Arduino laut Anleitung oben versucht, und beim 
"Testen" der "KidsMP3Player.ino" bekomme ich die Fehlermeldung dass er 
"DFRobotDFPlayerMini.h" nicht findet (#include <DFRobotDFPlayerMini.h) 
...

Der DFPlayer hat wohl nen Transportschaden, da wurden alle Pins beim 
Transport durch die Verpackung gedrückt.
Hab gestern dann mal 5V und gnd angeschlossen, da leuchtete allerdings 
keine LED (auch nicht mit Karte). Wann leuchtet diese?
(wollte testen ob blau oder rote LED :-) )

@Marcus
Den attiny kannst nicht direkt aufstecken.
Geht über ein "Breakout Board" (schimpft man das so!?) und einzelne 
Kabel die am Board und am Arduino eingesteckt werden.

von Marcus (Gast)


Lesenswert?

Moin, danke für die Antworten,
.
@ghmartin77
Genau der thread über meinem hat mich ja auf due Frage gebracht. Da hab 
ich mich wohl falsch ausgedrückt. Ich wollte eigentlich nur wissen ob 
der attiny gesteckt oder gelötet wird. Danke@Tim.

Ich gelobe Besserung und werde mich erstmal gründlich einlesen.
Wenn ich das richtig verstanden habe dauert es ja eh etwas bis ich die 
Teile zusammen habe.
Thx

von Stefan F. (Gast)


Lesenswert?

> Ich wollte eigentlich nur wissen ob der attiny gesteckt oder gelötet wird.

Fest einlöten würde ich Mikrocontroller nur, wenn ich ganz sicher bin, 
dass ich ihn niemals austauschen werden muss. Also eher: IC's Immer 
stecken. Selbst wenn das nicht ausdrücklich im Bauplan steht.

von ghmartin77 (Gast)


Lesenswert?

Hi Marcus,

genau wie Stefanus schreibt. Immer in einen Sockel. Würde ich auch für 
den DFPlayer empfehlen. Da gibt's keinen Sockel zu, aber weibliche 
Stiftleisten, die man auflöten kann, und den Player dann da reinstecken.
Hintergrund: Manchmal sind die Komponenten sehr hitzeempfindlich und 
gehen beim Löten (gerade, wenn man Anfänger ist) kaputt, wenn man sich 
außerhalb der "Lötspezifikation" der jeweiligen Komponente bewegt. Also 
erst immer unbestückte(!) Sockel/Stiftleiste verlöten, dann einstecken 
(dabei natürlich korrekte Ausrichtung beachten).

Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

Hi Tim,

Tim M. schrieb:
> Hab mich gestern mit dem Arduino laut Anleitung oben versucht, und beim
> "Testen" der "KidsMP3Player.ino" bekomme ich die Fehlermeldung dass er
> "DFRobotDFPlayerMini.h" nicht findet (#include <DFRobotDFPlayerMini.h)
> ...

ArduinoIDE unterstützt externe Bibliotheken und die DFRobotDFPlayer ist 
genau eine solche. Auf GitHub hier zu finden:
https://github.com/DFRobot/DFRobotDFPlayerMini

Zwei Varianten, das lauffähig zu bekommen:
1) Als Library in ArduinoIDE einbauen.
2) Oder einfach die Files DFRobotDFPlayerMini.h und 
DFRobotDFPlayerMini.cpp neben das KidsMP3Player.ino-File legen.

Hinweis: Die frischeste Version der DFRobotDFPlayerMini-Files aus dem 
Repo scheint aktuell nicht vollständig zu funktionieren. Siehe 
Diskussionen in diesem Thread weiter oben.

Grüße
ghmartin77

von Klaus R. (klaus2)


Lesenswert?

Hallo Martin,

biete doch fertig geflashte AT85 auf ebay (oder hier) an? Dann ist es 
"nur noch" ein Bausatz...ich finde dein Projekt super und es werden sich 
noch viele Nachbauer finden, doch wenn jmd NULL Ahnung hat, ist auch 
diese Hürde schon hoch ;)

Die Bauteile zu sockeln sollte eine Empfehlung in der Beschreibung zu 
sein, ja.

Klaus.

von Swen N. (niesel)


Lesenswert?

….. mein Radio ist endlich fertig und funktioniert so wie es soll :-)

Nach vielen Stunden, die ich für die Fehlersuche benötigt habe, war die 
Lösung so einfach.

Ich habe mir als erstes die besagten Zeilen angeguckt. Der „return “ 
Befehl war dort vorhanden. Trotzdem wurden weder die FileCounts noch die 
CurrentFileNumber zurückgegeben. Da ich mir bis zu Letzt nicht 100% 
sicher war, ob es vielleicht doch am DFPlayer liegt, habe ich mir bei 
einem offiziellen Distributor von DFRobot einen weiteren Player 
bestellt. Den neuen schnell aufs Board gesteckt, Speicherkarte rein und 
siehe da, es funktioniert!!!

Jetzt habe ich hier drei Player liegen, die alle unterschiedlich viel 
können:

Player 1. direkt aus China -> rote LED, spielt Lieder ab, muss direkt 
angesteuert werden, serielle Schnittstelle funktioniert aber nicht!

Player 2. Bezug über Amaz* -> blaue LED, serielle Schnittstelle 
funktioniert, die Performanz ist sehr langsam, Initialisierung der 11 
Ordner dauert extrem lange ca. 1min, Es wird immer nur das erste Lied 
pro Ordner abgespielt.

Player 3. Bezug über offiziellen Disti -> blaue LED, Initialisierung der 
11 Ordner dauert ca. 3sec, voller Funktionsumfang.
In den nächsten Tagen werde ich noch zwei weitere Player aus China 
bekommen. Mal gucken ob einer von denen funktioniert.

In Summe hatte ich mit dem Radio drei Probleme, die ich lösen musste:

1. Beim drücken der Knöpfe ist nichts passiert.
Lösung: die Abfrage über die Höhe des Stroms musste etwas gesenkt 
werden. Mein Multimeter gab mir in der Schaltung 998mA bis 1008mA aus. 
Somit habe ich den Wert für das handleKeyPress von original 1000 auf 985 
gesenkt.
2. Während des abspielen eines Tracks konnten keine weiteren Eingaben 
getätigt werden
Lösung: Ich hatte eine alte Library 1.0.2 des DFRobotDFPlayer genutzt. 
Version 1.0.3 sowie 1.0.5 funktionieren. Habe beide getestet!
3. Es konnte immer nur der erste Track eines Ordners abgespielt werden
Lösung: DFPlayer fake gegen original ausgetauscht.

Ich werde das Gehäuse jetzt noch um eine USB Buchse auf der Rückseite 
erweitern, da ich zum Aufladen der Powerbank nicht immer den Deckel 
abschrauben möchte.

Anschließend werde ich mal gucken was sich sonst noch so modifizieren 
lässt ;-)

Ich möchte mich noch mal recht herzlich bei ghmartin77 für diese tolle 
Idee und konstruktive Unterstützung bedanken.

von Klaus R. (klaus2)


Lesenswert?

Was kostet der DFPlayer vom Distri? (link)

Gibt es einen günstige Chinaquelle, deren DF Player auch nachweislich 
funktionieren?

Die teile sind ja super, da kann man mal welche bunkern...aber natürlich 
lieber für 1.20 als 3.99 :)

Klaus.

von Swen N. (niesel)


Lesenswert?

@Klaus: beim Distri in Deutschland habe ich 5,99 Euro + Versand bezahlt.
In China habe ich jetzt zwischen 2 und  Euro inkl Versand bezahlt.
Bei Amaz* in Deutschland habe ich für den "defekten" 6,99 Euro bezahlt!
Werde versuchen diesen umzutauschen!

von Klaus R. (klaus2)


Lesenswert?

...ich habe mal einen für 1.17 in China bestellt und werde mein Geld 
zurückfordern, falls der nicht geht. Die Chinesen können sehr gerne 
direkt an mich verkaufen - aber dann bitte kein fake (was auch meistens 
nicht der Fall ist), wegen mir dann auch für 2.34

Klaus.

von Hermann (Gast)


Lesenswert?

Hallo,
habe den Player nachgebaut und funktioniert auch so weit.
Allerdings habe ich Probleme mit der Tastenerkennung. Einige Tasten 
werden falschen Ordnern zugeordnet.
Die Tasten 7 und 4 werden als Taste 1 erkannt und Ordner 1 wird dann 
auch abgespielt. Sieht nach einem Offset aus .
Die Hardware ist Okay, habe ich schon zweimal nachgesehen.
Da ich kein SW Profi bin, weiß ich nicht wo ich drehen muss.
Kann mir jemand helfen ?
Gruß
Hermann

von ghmartin77 (Gast)


Lesenswert?

Hallo Hermann,

das Tastenfeld ist als Spannungsteiler ausgelegt, das die Spannung am 
ATTiny-Eingangspin auswertet. Das entsprechende PCB geht davon aus, dass 
alle verbauten Widerstände den gleichen Wert haben. Den 
unterschiedlichen Spannungen, die sich je nach gedrücktem Knopf aus der 
Spannungsteiler-Funktion ergeben, stehen im Quellcode entsprechende 
Werte gegenüber.
Da Widerstände produktionsbedingt Toleranzen haben, kann's sein, dass 
die Werte im Code nicht mit der Hardware zusammenpassen.

Ab hier sind die "spannenden" Teile im Code:
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L243

1000, 949, 894, usw. sind die Zahlen, die Du passend zu Deinem Setup 
drehen musst.

(Randnotitz @Klaus: Das ist übrigens ein gewichtiger Grund, warum das 
mit den vorgeflashten ATTinys nicht so leicht ist. Dann bräuchte man 
einen "Anlernmodus" und muss schauen, dass man die Werte irgendwo im 
EEPROM unterbekommt.)

Welche Werte nun für Deine Hardware die richtigen sind, kannst Du auf 
drei Arten herausfinden:
1) Spannungsteiler-Rechnung + Dreisatz: Der Wert 1024 entspricht VCC am 
Tastenfeld. Der Wert 0 entspricht GND. Je nach gedrücktem Knopf ergibt 
sich eine andere Spannung am Ausgangspin des Tastenfeldes (kannst Du 
rechnen oder messen). Die Spannung gemäß Dreisatz auf einen Wert in das 
Fenster [VCC=1024 und GND=0] umrechnen.

2) Wenn Du einen Arduino zur Hand hast, spielst Du den Sketch darauf und 
packst ein Serial.println(keyCurrent) an entsprechende Stelle. Dazu sind 
allerdings grundlegende Arduino/Programmierkenntnisse notwendig.

3) Ausprobieren, Flashen, Ausprobieren, Flashen... Wenn Du dabei 
strukturiert vorgehst (Binärsuche) kommst Du mit < 1000 Versuchen hin, 
ist aber müüüüüüßig :)

Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

Swen N. schrieb:
> ….. mein Radio ist endlich fertig und funktioniert so wie es soll :-)

Herzlichen Glückwunsch!!!
Das freut mich, dass nun alles klappt :-)

Vielen Dank für die ausführliche Analyse Deiner Fehler-Odyssee.

Ein Anmerkung zu:
> 1. Beim drücken der Knöpfe ist nichts passiert.
> Lösung: die Abfrage über die Höhe des Stroms musste etwas gesenkt
> werden. Mein Multimeter gab mir in der Schaltung 998mA bis 1008mA aus.
> Somit habe ich den Wert für das handleKeyPress von original 1000 auf 985
> gesenkt.

Dein Fix ist sicher richtig, aber der Weg dahin und die 
Schlussfolgerungen vermutlich nicht. Fast 1A Stromfluss in der Schaltung 
fände ich überraschend viel.
Der Input-Pin "reagiert" nicht auf Stromstärke (bei 1A wäre der ATTiny 
auch tot), sondern auf Spannung in Bezug auf Referenz VCC. Dass Du den 
Wert reduzieren musstest, kann mit deinen Hardwareteilen zusammenhängen 
(siehe auch vorhergehender Eintrag), aber es gibt keine (direkte) 
Verbindung zwischen Deiner Stromstärken-Messung und der Zahl im 
Quell-Code.
Geholfen hat's aber glücklicherweise trotzdem :)

> Anschließend werde ich mal gucken was sich sonst noch so modifizieren
lässt ;-)

Da lass uns doch bitte dran teilhaben. Vielleicht kann ich was auf die 
GitHub-Seite übernehmen.

Grüße
ghmartin77

von Hermann (Gast)


Lesenswert?

Hallo ghmartin77 ,
vielen Dank für die Erklärungen, das werde ich schon hinbekommen.
Nach meinem Verständnis ist aber auch noch ein pullup an dem Keyport 
geschaltet. Wenn der auch beim Tastendruck aktiv ist , verändert der 
natürlich auch den Spannungsteiler.
Und der Tastentoleranzwert von 25 ist auch noch da.
Am Besten wird sein, life messen , umrechnen und programmieren.

Übrigens ist es sehr hilfreich, wenn man sich kurze mp3s (ca 10s) mit 
den Ordnernamen erzeugt und die dann jeweils als erstes „Lied“ in den 
Ordnern ablegt. Dann weiß man sofort ob die Zuordnung der Tasten stimmt.

Gruß
Hermann

von ghmartin77 (Gast)


Lesenswert?

Hallo Hermann,

da hast Du absolut Recht:
1
Zeile#156 pinMode(PIN_KEY, INPUT_PULLUP);

...und der gehört mit in die Rechnung rein. --> Im Betrieb messen (wie 
Du schreibst) :)

Toitoi!

Grüße
ghmartin77

PS: Sehen wollen :) Reichst Du noch ein Bild nach?

von Klaus R. (klaus2)


Lesenswert?

@ghmartin77: So einen Anlernmodus habe ich mal bei einer IRMP 
Universal-FB eingebaut, das ist an sich kein Hexenwerk (war aber nur 
eine Übung, gebraucht hätte ich das nicht) ;)
Man muss halt beim Init einmalig die Tasten in der Lern-Reihenfolge 
drücken...mit etwas "Toleranz" um den erkannten Wert (+/-50) war das 
eine sehr saubere Sache. Wenn man "PWR" (schaltet direkt auf Masse) beim 
Startup halten würde, wird der Anlernprozess neu gestratet.

-> mMn dürfte das aber mit 1% Rs auch so kein Problem sein...?

Klaus.

von ghmartin77 (Gast)


Lesenswert?

Klaus R. schrieb:
> @ghmartin77: So einen Anlernmodus habe ich mal bei einer IRMP
> Universal-FB eingebaut, das ist an sich kein Hexenwerk (war aber nur
> eine Übung, gebraucht hätte ich das nicht) ;)
> Man muss halt beim Init einmalig die Tasten in der Lern-Reihenfolge
> drücken...mit etwas "Toleranz" um den erkannten Wert (+/-50) war das
> eine sehr saubere Sache. Wenn man "PWR" (schaltet direkt auf Masse) beim
> Startup halten würde, wird der Anlernprozess neu gestratet.
>
> -> mMn dürfte das aber mit 1% Rs auch so kein Problem sein...?
>
> Klaus.

Hi Klaus,

die Idee als solche finde ich durchaus interessant. Der Anlernmodus 
selbst ist von der Programmierung her auch nicht das Problem. Mein Kopf 
kriegt im Moment nur noch nicht unter, wie ich den Anlernmodus triggern 
soll.
Klar, frisch geflashter ATTiny ist einfach. Da kann ich dann gucken, ob 
im EEPROM schon Werte stehen. Wenn nicht, dann Anlernmodus beim 
Einschalten. Prima.
Aber wenn dann der Anlernmodus einmal durch ist, habe ich Werte im 
EEPROM und keinen Pin mehr frei, über den ich sagen könnte, dass ich den 
Anlernmodus erneut starten möchte (weil ich z.B. nur mal mit einem 
Testbutton in einem Versuchsaufbau rumgespielt habe).
Der einzige noch freie Pin ist der Reset-Pin. Den kann ich aber nicht 
auf High ziehen, weil der ATTiny dann resettet. Ich hab zwar was 
gelesen, das man den als analogen IN-Pin konfigurieren kann und dann 
kleine Spannungen "lesen" kann, weil er erst an einem Schwellwert 
resettet, aber das ist von der Bedienung ein bissel schwierig...

Aber wo ich mich gerade mittels dieser Zeilen klardenke: Man könnte die 
Filestruktur auf der SD-Karte nutzen. Über den DFPlayer kann man zwar 
keine Files lesen, aber man kann ANZAHLEN von Files in Ordnern auslesen 
(also bei den Non-Fake-DFPlayern zumindest :)). Darüber könnte man 
steuern, ob der ATTiny beim Einschalten in den Lernmodus geht.

Wenn z.B. im Folder 12 (heute unberücksichtigt) 1 File liegt, dann 
Anlernmodus.
Ist Folder 12 leer oder nicht vorhanden, dann normaler Start.

Hmmmmm...

Könnte klappen...

Mach ich aber nur, wenn ausreichend Interesse an vorgeflashten ATTinys 
besteht.

Und was man noch überlegen müsste, wäre ob und wie man Varianten mit 
unterschiedlich vielen Knöpfen unterstützen möchte...
Man kann bspw. zum Abbruch des Lernmodus einfach die erste Taste drücken 
lassen und dann kann jeder gemäß seiner HW-Config stoppen...

Mal gucken, ob hier ein paar Leute "Haben wollen" posten, dann könnte 
ich den Code ändern. Dann findet sich bestimmt noch wer, der 
vorgeflashte ATTinys anbieten möchte :)

Grüße
ghmartin77

von Klaus R. (klaus2)


Lesenswert?

...ein Taster muss direkt auf Masse schalten, dann sieht der ADC immer 
"0" - wenn DIESER beim PowerUp gedrückt ist, wird neu gelernt. So mache 
ich es.

Aber nochmal: Bei 1% Widerständen sollte es mit einer stabilen Vcc (die 
kann man aber intern messen, oder?) und einer Toleranz von +/- x Counts 
(das müsste man einmal ermitteln) immer klappen?

...wobei natürlich der Lernfaktor bei selber flashen und Code editieren 
größer ist ;)

Klaus.

von ghmartin77 (Gast)


Lesenswert?

Klaus R. schrieb:
> ...ein Taster muss direkt auf Masse schalten, dann sieht der ADC
> immer
> "0" - wenn DIESER beim PowerUp gedrückt ist, wird neu gelernt. So mache
> ich es.

Ah, geschnallt. Jepp, das geht natürlich. Brett vorm Kopf bei mir :)

>
> Aber nochmal: Bei 1% Widerständen sollte es mit einer stabilen Vcc (die
> kann man aber intern messen, oder?) und einer Toleranz von +/- x Counts
> (das müsste man einmal ermitteln) immer klappen?
>

Ja, da bin ich voll bei Dir. Die "+/-"-Toleranz ist bereits im Code. Mal 
sehen, was bei Hermanns Messungen rauskommt. Dass 1,4 und 7 zusammen als 
1 interpretiert werden, ist zumindest mal verdächtig und könnte am Ende 
doch noch ein Hardware-Problem sein. Auch mit größeren Abweichungen, als 
bei 1%-Widerständen, sind derart große Abweichungen ungewöhnlich bis 
unmöglich (intakte Bauteile vorausgesetzt).

Anlernen bei vorgeflashten ATTinys wäre trotzdem sinnvoll, denn sonst 
muss man bei einer Variante mit weniger Knöpfen einen 
"Kompensationswiderstand" einbauen, damit das Spannungsteilerverhältnis 
auf die sonst fix einprogrammierten 11 Buttons und deren 
Widerstandsverschaltung passt.

> ...wobei natürlich der Lernfaktor bei selber flashen und Code editieren
> größer ist ;)

Definitiv. Aber in einer Marktwirtschaft bestimmt die Nachfrage das 
Angebot :) Wenn's also ausreichend gemeldeten Bedarf vorgeflashter 
ATTinys gäbe, hack ich das Anlernen in den Code.

Grüße
ghmartin77

von Hermann (Gast)


Lesenswert?

Hallo ghmartin77,
so, jetzt habe ich gemessen in meinem Aufbau :
Versorgungsspannung war 5,02V
Taste 11= 4,56V / T9= 4,14V / T6= 3,72V
T3= 3,30V / T2= 2,89V / T5= 2,47V
T8= 2,03V / T10= 1,57V / T7= 1,09V
T4= 0,56V / T1= 0V
Bei den kleineren Spannungswerten wirkt sich der pullup schon spürbar 
aus.
Laut Datenblatt hat der pullup einen Wert zwischen 20-50kOhm, die 
Spannung am port steigt dadurch um ca 0,2V bei den kleineren Werten.

Die daraus resultierenden Werte für das scetch sind bei mir :
T11=930 / T9=844 / T6=759 / T3=673 / T2=590 / T5=504
T8=414 / T10=320 / T7=222 / T4=114 / T1>0
Diese Werte habe ich in das Programm eingetragen und den Attiny neu 
programmiert.
Jetzt funktioniert es so wie es soll, alle Ordner werden richtig 
angesprungen und abgespielt :-)
Ich freu mich.
Gruß
Hermann

von ghmartin77 (Gast)


Lesenswert?

Hi Hermann,

Ick freu mir auch :-)

Prima, dass Dein Gerät nun läuft, wie's soll. Dann war die Krux 
allerdings nicht etwaige Abweichungen von Standard-Widerständen, sondern 
vermutlich die verbaute Spannweite von Pullup-Widerständen in 
verschiedenen ATTinys. 20k-50kOhm ist ja schonmal ein breites Spektrum.
Den internen Pullup zu nutzen, ist -wenn man den Code unverändert lassen 
möchte- scheinbar keine gute Idee von mir. Wieder was gelernt. Danke 
dafür!

Wollst Du Dein Werk denn noch per Photo zeigen?

Grüße
ghmartin77

von Stefan F. (Gast)


Lesenswert?

Ich komme besser mit externen Pull-Up Widerständen klar. Die Internen 
sind recht hochohmig. Wenn mehr als 10cm Draht dran hängen, fängt man 
sich leicht Radiowellen ein.

von Tim (Gast)


Angehängte Dateien:

Lesenswert?

ghmartin77 schrieb:
> ArduinoIDE unterstützt externe Bibliotheken und die DFRobotDFPlayer ist
> genau eine solche. Auf GitHub hier zu finden:
> https://github.com/DFRobot/DFRobotDFPlayerMini

Bibliothek war das Stichwort... hat mir weitergeholfen, DANKE!

Es geht weiter... Gehäuse ist im Bau, die erste Platine soweit fertig.
Warte aktuell auf den Attiny85 und die Taster.
Habe leider nen DFPlayer mit ner roten LED erwischt, werde jetzt einen 
beim Distribotor bestellen.

von ghmartin77 (Gast)


Lesenswert?

Wowy! Sehr sauber. Du handwerkerst nicht zum ersten Mal :)

Das mit der hohen Schlagzahl an DFPlayer-Fakes dieser Tage ist echt 
nervig. Da guck ich mir mal meine Vorräte an. Mal sehen, ob ich bei 
meinen Vorratsbestellungen (aliex…) auch betuppt worden bin.

Apropos LED: Habe die bei meinem Player mit nem scharfen Teppichmesser 
runtergekratzt. Dann gibt's kein nerviges Leuchten im Kasten und es 
spart nochmal ein paar wenige mA...

Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

Schöne Alternative hab ich gerade gefunden (wer gern RFID haben mag):
https://www.voss.earth/tonuino/

Pfiffige Idee, die ganze Elektronik direkt in eine fertige Box 
reinzubasteln.

Grüße
ghmartin77

von Tim (Gast)


Lesenswert?

ich schon wieder... am verzweifeln...
Inzwischen sind fast alle Bauteile da. Auch ein "blauer" DFPlayer. :-)

Aktuell scheitert es allerdings beim "brennen" des Bootloaders.
Bekomme immer Fehlermeldung:
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x56
...

Bin strikt nach Anleitung vorgegangen, Beispiele, Arduino ISP, 
Boardverwalter, ATTiny85, Programmer: Arduino as ISP und dann Bootloader 
brennen.
Is aber nicht. Hab auch mal die Verbindung zwischen ATTiny und Arduino 
durchgemessen, das passt alles.

Im Bordverwalter hab ich auch schon 2 verschiedene "Pakete" probiert, 
jedoch ohne Änderung.

(Arduino 1.8.6, AAtiny Core by Spence Kode 1.1.5)


Freue mich über eure Hilfe...

von Stefan F. (Gast)


Lesenswert?

Hast du denn den Arduino ISP Sketch auf dein "Arduino as ISP" Board 
installiert? Sind dessen Fuses korrekt gesetzt?

Hast du MISO und MISO 1:1 verbunden oder gekreuzt (muss 1:1 sein)?

von Tim (Gast)


Lesenswert?

Stefanus F. schrieb:
> Hast du denn den Arduino ISP Sketch auf dein "Arduino as ISP" Board
> installiert? Sind dessen Fuses korrekt gesetzt?

Im Sketch Ordner ist ArduinoISP.ino drin und unter Beispiele Arduino ISP 
angewählt (es geht ein neues Fenster auf)

Unter Programmer hab ich dann 2 Auswahlmöglichkeiten:
Adruino as ISP oder Arduino as ISP (ATTiny Core)

Was sind Fuses? Die Einstellungen?
Board: ATTiny 25/45/85
Save EEprom: EEprom retained
Timer 1 Clock: CPU
LTO: disabled
B.O.D.: disabled
Chip: ATTiny85
Clock: 1MHz (internal)
Port: COM 6 (Arduino...)

MISO? = Pin6 am ATTiny? ist verbunden mit Pin 12 am Arduino!

von ghmartin77 (Gast)


Lesenswert?

Wild guesses:
1) 
https://www.heise.de/make/artikel/Arduino-Nano-mit-neuem-Bootloader-4011641.html

2) Kondensator am Arduino vergessen

Ansonsten: Um zu schauen, ob das mit dem Flashen funktioniert, ist 
"Bootloader brennen" nicht so entscheidend. Im ATTiny-Fall macht der 
nichts außer sog. Fuses zu setzen. Die sind aber im Normalfall schon 
passend gesetzt, so dass Du mal schauen kannst, was Du für Meldungen 
bekommst, wenn Du einen Sketch auf den ATTiny hochlädst. Vielleicht gibt 
Dir die dann kommende Meldung noch eine weitere Idee, was schief sein 
könnte...

von Stefan F. (Gast)


Lesenswert?

Schau dir mal im Internet die Doku zum Arduino ISP Sketch an, dort sind 
viele wichtige Fragen geklärt.

von Tim (Gast)


Lesenswert?

Ist ein ganz neuer originaler Arduino... und ich dachte damit fährt man 
besser... hehe


Kondensator ist dran einfach hochladen is nich :-(

Der Sketch verwendet 7344 Bytes (89%) des Programmspeicherplatzes. Das 
Maximum sind 8192 Bytes.
Globale Variablen verwenden 237 Bytes (46%) des dynamischen Speichers, 
275 Bytes für lokale Variablen verbleiben. Das Maximum sind 512 Bytes.

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x8e
...
Problem beim Hochladen auf das Board. Hilfestellung dazu unter 
http://www.arduino.cc/en/Guide/Troubleshooting#upload.

von ghmartin77 (Gast)


Lesenswert?

Nochmal langsam getze. Bin nicht sicher, ob wir nicht aneinander 
vorbeireden. Fragen und Antworten passen noch nicht so richtig zusammen 
und für mich ist noch nicht ausgeschlossen, dass Stefanus' allererste 
Frage nicht schon das Problem löst:

> Hast du denn den Arduino ISP Sketch auf dein "Arduino as ISP" Board
installiert?

Du schreibst:
> Im Sketch Ordner ist ArduinoISP.ino drin und unter Beispiele Arduino ISP
angewählt

Wenn das wörtlich zu verstehen ist, dann kann ich sagen, dass das so 
nicht reicht und auch nicht gehen wird.
Die Logik ist folgende: Der Arduino wird mittels Sketch zu einen 
ATTiny-Flasher. Dazu benötigt man den ArduinoISP.ino-Sketch aus den 
Beispielen. Der muss für Board Arduino compiliert werden und mittels 
"AVR ISP" auf den Arduino gespielt werden. Das ist Schritt eins. Erst 
wenn das erfolgreich ist, kann's Richtung ATTiny, Bootloader usw. 
weitergehen.
Dann kommen die Schritte, dass Du einen dedizierten ATTiny-Sketch 
(Beispielsweise die KidsMP3Player.ino für das Board ATTiny compilierst 
und dann "durch" den Arduino über "Arduino as ISP" auf den ATTiny 
spielst...

@Tim: Jetzt nochmal Du. Passt das soweit zu Deinem Setup und Deinen 
Vorbereitungsschritten?

Grüße
ghmartin77

von Stefan F. (Gast)


Lesenswert?

Du hast noch nicht verstanden, welche Rolle der Arduino bei dem ganzen 
Konstrukt hat.

Irgendwie muss der Sketch von dem MP3 Player in den ATtiny85 geladen 
werden. Außerdem müssen vermutlich die Fuses des ATtiny85 eingestellt 
werden. Sie heißen EFUSE, HFUSE und LFUSE (Extended-, High- und 
Low-Fuse). Siehe: http://www.engbedded.com/fusecalc/ und das Datenblatt 
des ATtiny85.

Irgendwie muss dieser ATtiny85 mit deinem PC verbunden werden. Einen USB 
Anschluss hat er nicht, als muss ein Adapter her. Diesen Adapter nennt 
man: ISP Programmer.

Die meisten Leute kaufen einen fertigen ISP Programmer irgendeines mehr 
oder weniger namhaften Herstellers, um Sketche in "nackte" 
Mikrocontroller zu laden. Zum Beispiel diesen: 
https://www.conrad.de/de/diamex-programmieradapter-usb-isp-stick-avr-7200-842379.html

Als Alternative zu Fertigprodukten kann man einige Arduino Module mit 
dem "Arduno ISP Sketch" ausstatten, dadurch wird das Arduino Modul 
faktisch zu einem ISP Programmieradapter. Arduino Module werden 
vorprogrammiert verkauft. Sie enthalten bereits ein Programm namens 
Bootloader, welches es ermöglicht, Sketche direkt über den USB Anschluss 
zu laden. Doku https://www.arduino.cc/en/Tutorial/ArduinoISP

Die Arbeitsschritte sind also diese:

1) Arduino Modul per USB mit dem PC verbinden.
2) Den Arduino ISP Sketch auf das Arduino Modul laden. Als Verbindung 
wird der Arduino Bootloader verwendet (Achtung: Es gibt inzwischen zwei 
Varianten. Der alte hat 57600 Baud Geschwindigkeit, der neue 115200 
Baud).
3) Du hast nun einen ISP Programmieradapter vorliegen.
4) Den ATtiny85 mit dem ISP Programmieradapter verbinden, gemäß der Doku 
auf https://www.arduino.cc/en/Tutorial/ArduinoISP
5) Installiere nun den Bootloader mit der Arduino IDE auf den ATtiny85. 
Dadurch werden die Fuses so gesetzt, wie das bei Arduino vorgesehen ist. 
Der Bootloader wird durch den nächsten Schritt wieder gelöscht, Schritt 
5 ist trotzdem wegen der Fuses notwendig - denke ich jedenfalls.
6) Nun den MP3 Player Sketch öffnen und auf den ATtiny85 laden. Die 
Übertragungsmethode ist wieder "Arduino as ISP".

Jetzt solltest du fertig sein.

Du machst gerade folgenden Fehler: Du versuchst, das Arduino Modul als 
ISP Programmieradapter zu verwenden, aber er ist noch kein ISP 
Programmieradapter, weil du den Arduino ISP Sketch noch nicht 
installiert hast. Du versucht, den Arduino ISP Sketch auf den ATtiny zu 
laden, der gehört aber auf das Arduino Modul.

Da das Arduino Modul noch kein ISP Programmieradapter ist, bekommst du 
die Fehlermeldung, dass der Programmieradapter nicht antwortet. Das 
Stichwort "stk500" ist der Name des Übertragungsprotokolls zwischen PC 
und Programmieradapter. Es entspricht einem alten Entwicklungs-Kits vom 
Atmel mit dem Namen STK500.

von Tim M. (brotzeit)


Lesenswert?

@ghmartin77 @Stefanus F.

Hatte gestern leider keine Zeit mehr zum Testen, das werde ich heute 
nachholen. Ich glaub ich hab den Fehler gefunden:

ghmartin77 schrieb:
> ...auf dein "Arduino as ISP" Board
> installiert?

Ich ging von einer Installation im Arduino Windows Programm aus.

Stefanus F. schrieb:
> Du machst gerade folgenden Fehler: Du versuchst, das Arduino Modul als
> ISP Programmieradapter zu verwenden, aber er ist noch kein ISP
> Programmieradapter, weil du den Arduino ISP Sketch noch nicht
> installiert hast.

Richtig, hab ich eindeutig versucht (geht so nicht ;-) )


Danke euch schonmal für eure Geduld und ausführlichen Tipps, heut abend 
gehts weiter, ich werde berichten...

: Bearbeitet durch User
von Tim M. (brotzeit)


Lesenswert?

Hallo zusammen,

ich hab es gestern hinbekommen und den Microcontroller beschrieben.
Danach musste ich noch etwas an den Einstellwerten für die Taster feilen 
bis die Tastenzuordnung gepasst hat.
Bin erstmal begeistert das es soweit funktioniert.

Habe dann festgestellt das der DFRobot kurze Titel wohl überhaupt nicht 
mag.
(Hab zur Kontrolle der einzelnen Ordner/Tasterzuodnung entsprechende 
Ansagen erstellt). Da Spielt er einzelne Titel hintereinander ab, 
ignoriert Tasteneingaben und stürzt dann ab.


Aktuell sind noch sporadische Fehler aufgetaucht:
- Wenn ein Timer eingestellt ist, funktioniert die Lautstärkeregelung 
manchmal nicht.
- Nach dem Einschalten (Wartezeit 2-3sec?) reagiert er manchmal nicht 
auf Tasteneingaben. Dann muss ich 1-2mal Aus- und Einschalten.
Diese Fehler treten aber nicht immer auf.
Möglicherweise stört er sich noch an den Dateinamen? Habe an manche 
Dateinamen nur die Nummern vorne angehängt und dahinter den Text 
gelassen.
Das werde ich heut nochmal ändern.

Ansonsten:
- Wird die Lautstärke zu laut, schaltet sich das Ganze ab. (Ich denke 
das ist normal, oder mangelt es hier an der Stromversorgung? 
Kondensator?)


Bisher auf jedenfall ein tolles "Spielerlebnis" und begeisterndes 
Zwischenergebnis!

Jetzt geht es mit dem Gehäuse weiter...

von ghmartin77 (Gast)


Lesenswert?

Tim M. schrieb:
> ich hab es gestern hinbekommen und den Microcontroller beschrieben.
Chapeau :) Sehr gut!

> Habe dann festgestellt das der DFRobot kurze Titel wohl überhaupt nicht
> mag.
> (Hab zur Kontrolle der einzelnen Ordner/Tasterzuodnung entsprechende
> Ansagen erstellt). Da Spielt er einzelne Titel hintereinander ab,
> ignoriert Tasteneingaben und stürzt dann ab.

Ob Du da den DFPlayer richtig in Verdacht hast, kann ich nicht sagen. 
Das Ding ist tatsächlich in bestimmten Situationen etwas "zickig" und 
die Programmier-API ist auch ein wenig schräg, als Komponente in einem 
Setup, das grundsätzlich läuft, ist er aber recht zuverlässig. 
Kontinuierliches Abspielen von Titeln innerhalb einer Playlist ist 
Feature des Codes im ATTiny und der Code ist (im Zusammenspiel mit der 
DFPlayer-API) darauf angewiesen, dass die Einzeltitel >1 Sekunde lang 
sind. Sind sie kürzer, geht das kontinuierliche Abspielen nicht richtig, 
aber abstürzen sollte da nichts. Was konkret interpretierst Du als 
Absturz?

> Aktuell sind noch sporadische Fehler aufgetaucht:

Ich will nicht vollständig ausschließen, dass mein Code definitiv 
schuldlos ist, aber die (Hard- und Software-)Version, wie sie auf GitHub 
gezeigt ist, läuft sehr zuverlässig. Habe nach jetzt fast einem Jahr 
Betrieb keine Fehlermeldung erhalten.

> - Wenn ein Timer eingestellt ist, funktioniert die Lautstärkeregelung
> manchmal nicht.

Das ist seltsam. Funktioniert dann ein Track-Wechsel noch oder ist es 
nur die Lautstärkeregelung?

> - Nach dem Einschalten (Wartezeit 2-3sec?) reagiert er manchmal nicht
> auf Tasteneingaben. Dann muss ich 1-2mal Aus- und Einschalten.
> Diese Fehler treten aber nicht immer auf.

Auch das ist seltsam. Nach dem Einschalten dauert es ein paar Sekunden, 
weil die Anzahl der Files pro Track-List Ordner vom DFPlayer geholt 
werden. Danach muss der Player aber bedienbar sein.

> Möglicherweise stört er sich noch an den Dateinamen? Habe an manche
> Dateinamen nur die Nummern vorne angehängt und dahinter den Text
> gelassen.

Welchen Text dahinter? Das Namensschema ist auf der GitHub-Seite und 
nochmal in der dort verlinkten Bedienungsanleitung beschrieben. An 
keiner Stelle ist ein Text hinter der Nummer erwähnt.

> Das werde ich heut nochmal ändern.
>
> Ansonsten:
> - Wird die Lautstärke zu laut, schaltet sich das Ganze ab. (Ich denke
> das ist normal, oder mangelt es hier an der Stromversorgung?
> Kondensator?)

Was bedeutet "schaltet sich das Ganze ab"? Stellt Deine Powerbank dann 
die Versorgung ein (LED geht aus)? Der Verstärker auf dem DFPlayer 
verspricht 3W. Damit dürfte der Gesamtaufbau unter Volllast etwas über 
0,6A bei 5V fressen (ATTiny, Tastaturfeld und Rest vom DFPlayer kann man 
vernachlässigen). Eine Powerbank, die dann schon aussteigt, scheint mir 
recht schwachbrüstig. Konnte ich mit meiner nicht beobachteb. Andersrum 
wird bei mir ein Schuh draus: Wenn zu wenig Strom "verbraucht" wird, 
geht der Spannungswandler der Powerbank aus und das System schaltet 
wegen Unterversorgung (in Bezug auf Spannung) ab. Den ATTiny allein kann 
man nicht über solch eine Powerbank versorgen, weil der einfach zu 
sparsam ist. Auch wenn man den Verstärker des DFPlayers ausschaltet, 
bricht der Verbrauch so weit ein, dass meine Powerbank-Testkandiaten 
alle abgeschaltet haben. Diesen Umstand mache ich mir im Code für den 
Sleeptimer zu Nutze.

Du kannst ja für Deinen Volllasttest mal ein USB-Ladegerät mit mind. 1A 
Ausgangsleistung anschließen und schauen, ob Dein Setup dann 
funktioniert. Ist dem so, tippe ich als Fehlerursache auf die Powerbank.

Weiterhin frohes Schaffen
ghmartin77

von Stefan F. (Gast)


Lesenswert?

Die Abschaltung könnte auch mit einem zu dünnen Kabel oder zu lockerem 
Stecker in der Stromversorgung zusammen hängen.

von Tim M. (brotzeit)


Lesenswert?

ghmartin77 schrieb:

> aber abstürzen sollte da nichts. Was konkret interpretierst Du als
> Absturz?

Dann sind jegliche Tastereingaben wirkungslos!


>> Aktuell sind noch sporadische Fehler aufgetaucht:
...
>> - Wenn ein Timer eingestellt ist, funktioniert die Lautstärkeregelung
>> manchmal nicht.
>
> Das ist seltsam. Funktioniert dann ein Track-Wechsel noch oder ist es
> nur die Lautstärkeregelung?

Track-Wechsel ist auch nicht möglich.
Wenn ein Timer eingestellt ist, stoppt dann der Titel nach Ablauf der 
Zeit, oder auch wenn ein Titel zu Ende ist? Aktuell endet die Wiedergabe 
nach Beendigung des Titels. (z.B. 5min Timer eingestellt, Titel 3min)


> Was bedeutet "schaltet sich das Ganze ab"? Stellt Deine Powerbank dann
> die Versorgung ein (LED geht aus)?

Die Power Bank schaltet sich nicht ab, nur die Wiedergabe bricht ab und 
lässt sich nicht mehr starten.


> Du kannst ja für Deinen Volllasttest mal ein USB-Ladegerät mit mind. 1A
> Ausgangsleistung anschließen und schauen, ob Dein Setup dann
> funktioniert. Ist dem so, tippe ich als Fehlerursache auf die Powerbank.

Wird gemacht!


Danke für eure schnelle Hilfe!

von ghmartin77 (Gast)


Lesenswert?

Tim M. schrieb:
> Wenn ein Timer eingestellt ist, stoppt dann der Titel nach Ablauf der
> Zeit, oder auch wenn ein Titel zu Ende ist? Aktuell endet die Wiedergabe
> nach Beendigung des Titels. (z.B. 5min Timer eingestellt, Titel 3min)

https://github.com/ghmartin77/KidsMP3Player/blob/master/assets/Manual%20German.pdf
Seite 4, dann Seite 3, dann nachdenken... :)

Zu den anderen Fehlerbildern -ergänzend zu Stefanus' wichtiger Anmerkung 
oben- fällt mir noch siedendheiß die Diskussion über 
Abblockkondensatoren am ATTiny ganz oben in diesem Thread ein. In meinem 
Build habe ich einen 100nF-Keramikkondensator in den Hohlraum zwischen 
Sockel und ATTiny reingestopft (natürlich mit Anschluss an VCC und GND 
des ATTiny), das aber nie im Schaltbild nachgezogen. Werd ich alsbald 
nachrüsten.

Das wäre auch etwas, was Du mal probieren kannst. Vielleicht fällt 
tatsächlich der ATTiny um, wenn der DFPlayer unter Volllast losrockt, 
weil das Auswirkungen auf die Spannung hat.

Grüße
ghmartin77

von Stefan F. (Gast)


Lesenswert?

Kann sein.

Abblock-Kondensatoren haben allerdings primär die umgekehrte Aufgabe: 
Sie sollen die Spannungsversorgung vor Störungen bewahren, die vom IC 
kommen.

von ghmartin77 (Gast)


Lesenswert?

Neuigkeiten bzgl. vermeintlicher Fake-Chips:
Habe meine Vorräte an DFPlayern ausgepackt. Auf den ersten Blick sehen 
sie gleich aus, wie die Variante, mit der ich entwickelt habe: Blaue 
LED, gleiche "MP3-TF-16P"-Aufschrift neben dem MiniSDCard-Slot.
Funktioniert haben sie nur nicht. Habe viele Fehlerbilder 
wiedergefunden, die oben im Thread beschrieben sind.
Der wesentliche Unterschied:

Die eine Version hat einen Chip mit der Aufschrift YX5200 an Board 
(meine Entwicklungsversion), die anderen einen mit MH2024K.

Damit ein wenig gegoogelt und diverse Stellen gefunden, an denen Leute 
drüber weinen, dass mit dem MH2024K die Serial-Schnittstelle nicht 
ginge. Der Treffer, der mich auf die richtige Spur brachte, war der 
hier:
https://github.com/DFRobot/DFRobotDFPlayerMini/issues/12

Meine Tests sind noch nicht final vollendet, aber vermutlich gehen Eure 
als Fake vermuteten Player, wenn ihr ab Zeile 164 den folgenden Code...:
1
  while (!player.begin(softSerial)) {
2
    delay(200);
3
  }

durch den hier ersetzt...:
1
  player.begin(softSerial, false, false);

Das Serial-Antwortverhalten des MH2024K ist scheinbar nicht sauber (kein 
ACK), zudem macht er beim Reset einen ziemlichen Krach über den 
Lautsprecher. Die beiden "false"-Parameter schalten beides ab: Reset und 
keine ACK-Erwartung.
Das macht die Kommunikationsschnittstelle zwar etwas "unzuverlässiger", 
funktioniert aber scheinbar sowohl mit MH2024K als auch mit YX5200.

Ich teste noch ein bissel und packe dann eine aktualisierte Fassung ins 
GitHub-Repo...

Grüße
ghmartin77

von Brotzeit (Gast)


Lesenswert?

Habe den Abblockkondensator installiert, Kabelquerschnitte vergrößert, 
Lötstellen kontrolliert , SD- Karten getestet und das Ganze mit dem 
Labornetzgerät betrieben. Trotzdem läuft das Ganze nicht zuverlässig :-(

Muss das System mehreremale Neustarten bis es funktioniert. Beim 
Einschalten knackt es mehrmals laut, manchmal reagiert es auf Eingaben, 
manchmal nicht.


Habe ich trotz offiziellem Distributor evtl. einen Fake erwischt?

von ghmartin77 (Gast)


Lesenswert?

Hi Tim,

hast Du meinen Post direkt über Deinem gelesen?
Welchen Chip hast Du auf Deinem DFPlayer (Unterseite)?
Ggfs. hilft die vorgeschlagene Codeänderung.

Ansonsten kann ich Dir noch einen Sketch für den Arduino anbieten, mit 
dem Du Debug-Output erhältst, wenn Du den Arduino als Steuereinheit für 
den Player nimmst. Vielleicht kommen wir auch so dahinter, wo's 
klemmt...

Deinen berichteten "Absturz" bei voller Lautstärke konnte ich mit einem 
ausreichend dimensionierten Lautsprecher (Visaton, 8Ohm, 10W) 
nachvollziehen. Bei mir schaltet dann der DFPlayer ab lässt sich aber 
nach Reduzieren der Lautstärke per Knopfdruck wieder zum Abspielen des 
nächsten Titels überreden.

Grüße
ghmartin77

von Brotzeit (Gast)


Lesenswert?

Auf dem "originalen" steht bei mir:
 DFROBOT LISP3 (großer chip)
XY8002D 170721

Auf dem Fake:
JC AA1752CJ3J13.1-94
auf dem kleinen Chip steht beim Fake nichts.

Wenns es bei kir zum Absturz kommt bekomm ich das Teil nicht mehr 
gestartet.
Wenn ich es an der Powerbank betreibe, geht diese dann nach einiger Zeit 
aus.

von ghmartin77 (Gast)


Lesenswert?

Brotzeit schrieb:
> Auf dem "originalen" steht bei mir:
>  DFROBOT LISP3 (großer chip)
> XY8002D 170721

Nach den jüngsten Recherchen und der Lernerfahrung "YX5200 vs MH2024K" 
bin ich vorsichtig mit "Fake" rufen, aber das Internet kennt 
verdächtigerweise keinen Chip und auch keinen DFPlayer mit der 
Aufschrift "LISP3".

Falls Du die o.g. Code-Änderung (ist auch mittlerweile auf GitHub) nicht 
bereits probiert hast, würde ich das noch vorschlagen...

Ansonsten Fake oder -wenn doch Original- hat das Teil vielleicht nen 
Schlag weg. Wenn wir den ATTiny noch als Fehlerverursacher ausschließen 
wollen, gib mir Bescheid, dann lade ich den Sketch für den Arduino hoch. 
Dann kannst Du damit nochmal rumprobieren.

> Wenns es bei kir zum Absturz kommt bekomm ich das Teil nicht
> mehr gestartet.
> Wenn ich es an der Powerbank betreibe, geht diese dann nach einiger Zeit
> aus.

Auch das ist mindestens mal verdächtig. Wie oben beschrieben, konnte ich 
mit hoher Last erzwingen, dass der DFPlayer die Wiedergabe abbricht 
(dann schickt er allerdings noch eine Abbruchsmeldung und lässt sich 
danach weiter ansteuern). Wenn Deine Powerbank kurz darauf ausschaltet, 
ist das ein Indiz dafür, dass der DFPlayer sich wirklich komplett 
weggehängt hat, zumindest aber den ADC deaktiviert. Nur dann fällt der 
Gesamtstromverbrauch unter eine Schwelle, dass eine Powerbank ausgeht.

Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

Vorgängerpost: ADC --> DAC

von Tim (Gast)


Lesenswert?

ghmartin77 schrieb:
> Ggfs. hilft die vorgeschlagene Codeänderung.

Mit der Codeänderung kann ich den Player zwar zuverlässig mit einer der 
Tasten starten, aber dann reagiert er auf keinerlei Eingaben mehr. Auch 
die Lautstärkeregelung ist außer Funktion.
Beim Einschalten ist diesmal kein Knacken zu hören.

Hab das ganze jetzt mit nem zweiten ATTiny getestet. Identische Funktion 
zum Ersten.

Ich glaub ich order noch einen DFPlayer von nem anderen Distributor...

von ghmartin77 (Gast)


Lesenswert?

Hallo zusammen,

hab noch ein weiteres Feature im GitHub-Code nachgerüstet: Über Taste 3 
(2 Sekunden halten) kann man nun einstellen, ob der Player beim 
Einschalten, den zuletzt nicht vollständig abgespielten Track, bei dem 
ausgeschaltet wurde, automatisch erneut startet.

Grüße
ghmartin77

von Tim M. (brotzeit)


Angehängte Dateien:

Lesenswert?

ghmartin77 schrieb:
> Über Taste 3
> (2 Sekunden halten) kann man nun einstellen, ob der Player beim
> Einschalten, den zuletzt nicht vollständig abgespielten Track, bei dem
> ausgeschaltet wurde, automatisch erneut startet.

Genau das hat noch gefehlt. Ist bei längeren Hörspielen die nicht 
gesplittet sind von Vorteil.

Hab gestern das Gehäuse soweit fertiggestellt, jetzt muss ich nur noch 
die Technik hinbekommen und einbauen...
Ich hoffe mit nem neuen DFPlayer läuft die Kiste...

von Stefan F. (Gast)


Lesenswert?

Mir gefällt dieses Projekt sehr, ganze besondere die hübsche Kiste - 
obwohl ich selbst dafür keinen Anwendungsfall habe. Ich behalte es aber 
als Geschenk-Idee im Hinterkopf.

Es ist wirklich schade, das so schlechte DFPlayer Klone im Handel sind.

von ghmartin77 (Gast)


Lesenswert?

Tim M. schrieb:
> Genau das hat noch gefehlt. Ist bei längeren Hörspielen die nicht
> gesplittet sind von Vorteil.

Genau lesen:
> den zuletzt nicht vollständig abgespielten Track, bei dem
> ausgeschaltet wurde, automatisch erneut startet.

An exakt der Stelle aufsetzen, an der ausgeschaltet wurde, bringt der 
DFPlayer in seiner API nicht mit (genausowenig wie Spulen). Bei langen 
Hörspielen ohne Split hilft das Feature leider nicht, wohl aber wenn ein 
aufgeteiltes Hörspiel in mehreren Tracks in einer Playlist liegt (oder 
mehrere Folgen einer Serie).

> Hab gestern das Gehäuse soweit fertiggestellt
Sieht super aus!!!

> Ich hoffe mit nem neuen DFPlayer läuft die Kiste...
Da bin ich zuversichtlich. Wenn's ganz dicke kommt, kann ich Dir einen 
meiner Player zuschicken, damit die "Bestelllotterie" ein Ende hat und 
Du einen Player mit YX5200 oder MH2024K hast...

Grüße
ghmartin77

von Tim M. (brotzeit)


Lesenswert?

ghmartin77 schrieb:
...

> Genau lesen:
>> den zuletzt nicht vollständig abgespielten Track, bei dem
>> ausgeschaltet wurde, automatisch erneut startet.

Ah, OK. Aber das hilft auch. Dann kann man ja die mp3 in viele Teile 
splitten und es geht am Trackanfang wieder los. Hilft auf jedenfall 
auch!

>> Hab gestern das Gehäuse soweit fertiggestellt
> Sieht super aus!!!

Freut mich wenn es gefällt!



>> Ich hoffe mit nem neuen DFPlayer läuft die Kiste...
> Da bin ich zuversichtlich. Wenn's ganz dicke kommt, kann ich Dir einen
> meiner Player zuschicken, damit die "Bestelllotterie" ein Ende hat und
> Du einen Player mit YX5200 oder MH2024K hast...

Das wäre natürlich SUPER! Bin jetzt mal gespannt was ich geliefert 
bekomme....
Kann dir auch gerne ein paar Fakes anbieten. Aufgrund defekter 
Verpackung habe ich eine Lieferung doppelt bekommen...

: Bearbeitet durch User
von Tim M. (brotzeit)


Lesenswert?

Was mir noch positiv aufgefallen ist: Der Klang!

Bin total überrascht wie gut die Tonqualität ist, welche der kleine 
Lautsprecher in dem Gehäuse abliefert.
Sowohl für Musik als auch für gesprochene Texte!

von Hermann (Gast)


Lesenswert?

Hallo,
mein Dfplayer hat den Aufdruck DFROBOT/LISP3
Ist identisch zu dem in diesem shop
https://www.robotshop.com/de/de/dfplayer-mini-mp3-player.html#Lieferantenproduktcode
Da gibt es auch Datenblätter und library

Bislang ist mir keine Fehlfunktion aufgefallen
Der Player ist allerdings auch noch nicht im Gebrauch , Gehäuse fehlt 
noch
Gruß
Hermann

von Tim (Gast)


Lesenswert?

Heute ist mein zweiter Player gekommen, ebenfalls mit dem Aufdruck 
DFROBOT LISP3

Dieser startet allerdings genauso schlecht und unzuverlässig wie der 
Erste.

von Uli (Gast)


Lesenswert?

Wie viele DF-Player Vesionen gibt es den inzwischen die funktionieren?

Von den anderen kann ich inzwischen ein kleines Geschäft aufmachen unter 
dem Motto: "Super Fake Player, China schrott exterem billig".

Muss gerade noch 2 Player bauen und freue mich schon auf die neuen FAKE 
Player.

von Tim (Gast)


Lesenswert?

Gerade mal das neueste Programm mit der Trackwiederholung für den ATTiny 
getestet.
Funktioniert bei mir nicht. Keine Lautstärkeregelung möglich, keine 
Reaktion auf Tastereigaben... Aber: startet zuverlässig immer mit dem 
gleichen Track... hehe

von ghmartin77 (Gast)


Lesenswert?

Hmmm, jetzt wird's langsam gleichsam interessant wie verwirrend.

@Hermann: Danke für den Link und die Auskunft, dass besagter Player bei 
Dir funktioniert. Ich habe zwar -wie oben beschrieben- (per Google) 
keinen Chip mit der Aufschrift DFPlayer/LISP3 gefunden, aber die 
Shop-Aufmachung wirkt hinreichend professionell, vor allem auch mit 
einem Photo der Chip-Unterseite, dass ich verleitet bin zu glauben, dass 
auch dieser Chip vernünftig laufen sollte.

Damit hätten wir in Summe die Theorie, dass Chips mit folgenden 
Aufschriften funktionieren:
-YX5200
-MH2024K
-DFPlayer/LISP3

Folgender scheint tatsächlich insofern ein Fake zu sein, als dass die 
UART-Schnittstelle zumindest mal nicht so läuft wie die DFPlayer-Library 
das erwartet:
-JC AA1752CJ3J13.1-94

Bleibt die Frage, warum die zwei DFPlayer/LISP3-Chips von Tim nicht 
funktionieren. Entweder sind das Fakes, bei denen jemand die Aufschrift 
geschickt nachahmt, oder das Problem steckt doch im konkreten Aufbau.
Ich würd' mich mit Ankunft des zweiten Players und gleichem Problem mal 
auf letzteres einschießen und Dich, Tim, bitten, folgendes zu prüfen:
1) Sind die Verbindungen zwischen ATTiny und DFPlayer (i.e. RX, TX) 
exakt gemäß dem Schaltplan auf der GitHub-Seite verbunden?
2) Ist der Widerstand in der richtigen Leitung eingebaut?
3) Ist es sicherlich ein 1KOhm-Widerstand?
4) Jetzt wird's etwas esoterisch: Ich habe irgendwo mal gelesen, dass 
SoftSerial nur mit bestimmter Taktung des ATTiny aufgrund von 
Timing-Issues korrekt funktioniert: Mit welcher Clock-Angabe ist Dein 
ATTiny-Bootloader "gebrannt"? 1 MHz (internal) oder 8 MHZ (internal)? Im 
Zweifel probier beides aus und schau, ob sich was am Verhalten Deines 
Systems ändert. ACHTUNG!!! Bitte keinesfalls einen der "x MHz 
(external)"-Menüpunkte probieren, sonst kriegst Du ohne Zusatzmaterial 
Deinen ATTiny nicht mehr ans Laufen. Alle Einträge mit "internal" im 
Namen sind aber safe.

Bin gespannt auf Deine Rückmeldungen :)

Grüße
ghmartin77

von Hermann (Gast)


Lesenswert?

Hallo,
ganz wichtig ist meiner Meinung nach auch, die Spannungswerte in der 
Tastaturwiderstandskette zu messen und falls notwendig die Zahlenwerte 
im Programm zu ändern. Nur dann werden die Keys sicher erkannt und man 
hat eine mögliche Fehlerquelle weniger.
Gruß
Hermann

von Tim M. (brotzeit)


Lesenswert?

ghmartin77 schrieb:
> leibt die Frage, warum die zwei DFPlayer/LISP3-Chips von Tim nicht
> funktionieren. Entweder sind das Fakes, bei denen jemand die Aufschrift
> geschickt nachahmt, oder das Problem steckt doch im konkreten Aufbau.

Da ich bei zwei verschiedenen offiziellen Distributoren bestellt habe, 
kann ich mir nicht vorstellen dass es sich um Fakes handelt.

Ich werde heute nochmal die Verdrahtung, Lötpunkte Widerstand etc. 
Prüfen!
Vielleicht bau ich nochmal ne Platine auf. Bauteile hab ich inzwischen 
genug rumliegen.... hehe


>Mit welcher Clock-Angabe ist Dein
> ATTiny-Bootloader "gebrannt"? 1 MHz (internal) oder 8 MHZ (internal)?

Habe den Bootloader mit 1 MHz (internal) gebrannt, kann die 8MHz gerne 
testen.


@Hermann
Das Ändern der Werte zur Spannung war bei mir ebenfalls Pflicht.
Mit den Standardwerten gingen nur wenige Tasten, bzw. mehrere Taster 
waren dem gleichen Ordner zugewiesen.

von Tim (Gast)


Lesenswert?

ghmartin77 schrieb:
> Jetzt wird's etwas esoterisch: Ich habe irgendwo mal gelesen, dass
> SoftSerial nur mit bestimmter Taktung des ATTiny aufgrund von
> Timing-Issues korrekt funktioniert

Tja, was soll ich sagen... der Kandidat erhält 100 Punkte!

Bootloader mit 8MHz gebrannt und schon läuft die Kiste perfekt.
Kein Knacken beim Einschalten, zuverlässige Titelanwahl!

Großes Lob! Danke für eure Mühen und Geduld, ganz besonders dir 
ghmartin77!!!


Jetzt kann ich die Kiste fertig bauen, Bilder werden folgen...
Mit den Vorräten an Bauteilen, muss ich bestimmt noch nen zweiten bauen 
;-)

von ghmartin77 (Gast)


Lesenswert?

Tim schrieb:
> ...und schon läuft die Kiste perfekt.

Ja mei, da kriegst Pippi inne Augen :)

...und mir deucht, ich sollte in der Doku auf GitHub noch ein wichtiges 
Detail hinterlassen :)
Die 8 MHz sind nach Datenblatt scheinbar auch der Default. Deshalb hatte 
da bisher wohl auch niemand Stress mit.

Ich würd mal sagen: Projektziel vollumfänglich erfüllt :) Haben wir alle 
einiges gelernt. Weiß zwar nicht, ob Du Dir das so vorgestellt hattest, 
Tim, oder einfach nur einen Player basteln wolltest... Ich für meinen 
Teil freu mich, ob der spannenden Erkenntnisse...

Chapeau!

von Tim M. (brotzeit)


Lesenswert?

ghmartin77 schrieb:
> Ich würd mal sagen: Projektziel vollumfänglich erfüllt :) Haben wir alle
> einiges gelernt. Weiß zwar nicht, ob Du Dir das so vorgestellt hattest,
> Tim, oder einfach nur einen Player basteln wolltest...

Dazulernen war eindeutig mit eingeplant. Bin schon davon ausgegangen, 
dass die eine oder andere Stolperfalle dazukommt. Das Playerroulette war 
zwar etwas nervig, aber ansonsten hats viel Spaß gemacht.
Mission erfüllt, das Ding funktioniert!

Außerdem ist mein Junior Feuer und Flamme, und gibt den Player nicht 
mehr aus der Hand, das entschädigt alles!

von ghmartin77 (Gast)


Lesenswert?

> Außerdem ist mein Junior Feuer und Flamme, und gibt den Player nicht
> mehr aus der Hand, das entschädigt alles!

Truly the only thing that matters :)

von Tim (Gast)


Angehängte Dateien:

Lesenswert?

Wie versprochen noch ein paar Bilder...

von ghmartin77 (Gast)


Lesenswert?

Saubere Sache!

Das ist eine andere Hausnummer als meine Heißkleber-Montagetechnik für 
die Powerbank :)

Das nächste Gehäuse bestelle ich bei Dir :)

Grüße
ghmartin77

von Stefan F. (Gast)


Lesenswert?

ghmartin77 schrieb:
> Die 8 MHz sind nach Datenblatt scheinbar auch der Default.

Nein, per Default ist bei allen AVR die CLKDIV8 Fuse gesetzt. Aber bei 
den für Arduino verkauften Chips mit Bootloader ist sie aus.

Am Besten wäre, wenn du alle drei Fuse-Bytes ausliest und dokumentierst, 
nicht nur dieses eine Bit.

von ghmartin77 (Gast)


Lesenswert?

Recht hast Du... in beiderlei Hinsicht.
Habe die Doku auf GitHub entsprechend ergänzt.

Grüße
ghmartin77

von Stefan F. (Gast)


Lesenswert?

ghmartin77 schrieb:
> Habe die Doku auf GitHub entsprechend ergänzt.

Sehr gut, das ist ein tolles Projekt. Ich finde die vielen Fotos dazu 
auch sehr hilfreich.

Das könnte man sicher gut auf dem Weihnachtsmarkt verkaufen - ich aber 
nicht, ich würde die Box nicht so schön hinbekommen.

Ein Verbesserungsvorschlag:
Bei der Tastenabfrage würde ich den internen Pull-Up durch einen 
externen ersetzen, wegen seiner Präzision. Ich denke, dann entfällt das 
Manuelle Anpassen der ADC Schwellwerte.

von Hermann (Gast)


Lesenswert?

Hallo,
noch eine Frage zu den Fuse Bits:
Ist es denn ausreichend, den Clock auf 8 Mhz intern, beim brennen des 
Boatloaders zu stellen?
Mir ist nicht klar, wie ich an die drei Fuses herankomme mit dem Arduino 
Ide?
Zusatzfrage:
Wenn ich einen schon einmal programmierten Attiny85 neu programmiere, 
kann ich dann auch den Boatloader auf 8 Mhz (von ehemals 1Mhz)  neu 
brennen?
Gruß
Hermann

von ghmartin77 (Gast)


Lesenswert?

Hermann schrieb:
> Hallo,
> noch eine Frage zu den Fuse Bits:
> Ist es denn ausreichend, den Clock auf 8 Mhz intern, beim brennen des
> Boatloaders zu stellen?
> Mir ist nicht klar, wie ich an die drei Fuses herankomme mit dem Arduino
> Ide?
> Zusatzfrage:
> Wenn ich einen schon einmal programmierten Attiny85 neu programmiere,
> kann ich dann auch den Boatloader auf 8 Mhz (von ehemals 1Mhz)  neu
> brennen?
> Gruß
> Hermann

Hallo Hermann,

diese "Bootloader brennen"-Geschichte ist historischer Unfug aus der 
Welt, aus der die ArduinoIDE ursprünglich kommt: Arduino. Dort kann mit 
dieser Funktion genau das getan werden, was der Name vermutet, nämlich 
einen Bootloader zu brennen. Das ist einfach ein Mini-Stück-Code, das 
beim Starten des Chips für wenige Sekunden schaut, ob jemand über ein 
vereinbartes Protokoll neuen Code hochladen möchte, diesen dann 
entgegennimmt und in den Chip packt (ohne den Bootloader zu 
überschreiben und ohne, dass man den Chip mit Low-Level-Mechanismen 
flashen muss, die teilweise recht aufwändig sind).
Im ATTiny-Falle gibt es dagegen keinen Bootloader. Stattdessen wird 
diese Funktion genutzt, um die sog. Fuses zu setzen. Das sind 
Konfigurations-Bits, verteilt auf 3 Byte, die den Chip in einen 
bestimmten Zustand konfigurieren, beispielsweise die Taktfrequenz 
setzen.
Wenn Du in der ArduinoIDE unter "Datei" -> "Voreinstellungen" die beiden 
Häkchen bei "Ausführliche Ausgabe" setzt, siehst Du etwa so was im 
unteren Konsolen-Fenster:
1
C:\***/bin/avrdude -CC:\***avrdude.conf -v -pattiny84 -cstk500v1 -PCOM5 -e -Uefuse:w:0xFF:m -Uhfuse:w:0b11010111:m -Ulfuse:w:0xE2:m

Daran kannst Du die Werte der Fuses sehen, die er setzen will (der 
hfuse-Wert ist hier als Binärwert angegeben (entspricht Hex 0xD7)). Mit 
dem Tool avrdude kannst Du sie auch "per Hand" setzen. Abgeleitet werden 
sie in ArduinoIDE von den Settings für den Chip (Taktfrequenz, 
Brown-out-Detection (BOD), etc.). In der ArduinoIDE reicht es für den 
MP3-Player, wenn Du die Clock-Frequenz auf 8MHz (internal) setzt. Der 
Rest kann bei den Defaults bleiben.
Da die Fuses erhalten bleiben, brauchst Du das nicht jedesmal beim 
Hochladen eines Programms machen. Wenn ein ATTiny schon passend 
konfiguriert ist, reicht es, nur noch den Sketch hochzuladen.
Lustige Effekte kriegst Du aber, wenn Fuses und Compile-Schalter nicht 
zusammenpassen. Beispiel: Deine Fuses stehen auf 8MHz. Dann setzt Du die 
Taktfrequenz in der ArduinoIDE auf 1MHz um und lädst den kompilierten 
Sketch hoch. In diesem Fall werden "Pausenzeiten" zur Compile-Zeit auf 
1MHz berechnet, der Chip läuft aber immer noch mit 8MHz.
Was dann bspw. mit einer Funktion wie "delay()" passiert, überlasse ich 
Deiner Phantasie :)

Zur Zusatzfrage noch die explizite Antwort: Du kannst Fuses und Programm 
jederzeit und so häufig es die Speicherstellen aushalten, neu brennen. 
So lange Compile-Zeit-Einstellungen und Fuses zusammenpassen, reicht es 
aber, immer nur das Programm neu hochzuladen.

Grüße
ghmartin77

von Klaus R. (klaus2)


Lesenswert?

...und statt "brennen" würde man "schreiben" (ND: flashen) sagen, da ich 
vermute dass der Begriff noch aus der Zeit kommt, als mit "richtigen 
Programmern" bei OTPs sie Zellen "verbrannt" wurden, was dann einer 
logischen 0 entsprach? Aber das hat sich so eingebürgert und ist daher 
natürlich weiterhin verständlich ;)

Klaus.

von ghmartin77 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Hermann,
hallo Stefanus,
hallo Klaus R.,

hab mir die Sache mit den Key-Werten im Programm nochmal angeschaut, 
weil mich die Abweichungen verwirrten.
Angehängt ein kleines LibreOffice-Calc-Sheet.
Jetzt ist mir einiges klarer :)

1) Vorweg und am wichtigsten: Stefanus hat weiterhin Recht: Den internen 
Pullup zu benutzen, ist für ein zum Nachbau vorgesehenes Projekt eine 
blöde Idee, weil der laut Datensheet von 20kOhm bis 50kOhm schwanken 
kann.

2) Mein Fritzing-Diagramm und der Code passen nicht zusammen: Ich habe 
im Fritzing-Diagramm 1kOhm-Widerstände reingemalt, verbaut habe ich aber 
10kOhm (Braun, Schwarz, Orange). Bei einem internen Pullup mit 36kOhm 
komme ich dann rechnerisch (siehe auch Sheet) auf 950, 896, 850, 806, 
759, 706, 642, 560, 448, 281, 0. Das ist sehr nah an den Werten, die ich 
im Programm-Code stehen habe (seinerzeit durch Messen ermittelt).

3) Mache ich die selbe Rechnung für 1kOhm-Widerstände bei gleichem 
internen Pullup auf (Zelle E1 ändern, dann rechnet das Sheet neu), 
ergibt sich rechnerisch: 933, 846, 761, 676, 591, 505, 415, 322, 223, 
116, 0. @Hermann: Kommen Dir diese Werte bekannt vor? :)

4) Nummer 1 ist immer noch richtig und der einzig vernünftige Weg, dem 
Problem aus dem Weg zu gehen...

Grüße
ghmartin77

von Tim (Gast)


Lesenswert?

Kleiner Zwischenbericht:
Die Freude am Player ist ungebrochen und er hat schon stundenlang 
Hörbücher abgespielt.
Er funktioniert zuverlässig und fast perfekt.

Einen Bug hab ich noch:
Ab und an bleibt er nach einem Titel stehen, und spielt den nächsten 
erst bei betätigen der Taste aus dem gleichen Ordner. (Die Powerbank ist 
an!)
Ist allerdings nicht immer der gleiche Titel, sondern unterschiedlich...

Aus den restlichen Bauteilen bau ich gerade nen 2. Player. 
Komischerweise schaltet sich die 2. Powerbank bei leiser Lautstärke ab. 
Hab jetzt nen 130Ohm Widerstand parallel geschaltet, damit scheint das 
Problem gelöst zu sein. Die Powerbank schaltet sich auch weiterhin ab 
wenn kein Titel abgespielt wird.
Ich hoffe das ist "elektrisch vertretbar"!?

Teste den zweiten Player gerade mit nem Visaton SC 5.9 ND (8056)

von ghmartin77 (Gast)


Lesenswert?

Hi Tim,

schön zu hören, dass ihr Spaß mit dem Gerät habt :)

Zu Deinen Fehlerbildern:
1) "Kontinuierliches Abspielen zuweilen unzuverlässig": Kann -wie immer 
im Leben- mehrere Ursachen haben:
a) Rückmeldung, dass ein Track zu Ende ist, wird nicht sauber erkannt. 
Code dazu steckt hier: 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L339 
(ff).
Ursächlich könnte das eine Störung auf der Leitung vom DFPlayer zum 
ATTiny (die ohne Widerstand) sein. Damit wird evtl. das Callback-Paket 
komplett nicht oder in den entscheidenen Punkten falsch gelesen. Dem 
könnte man evtl. mit Entstörkondensatoren entgegenwirken (bin ich aber 
nicht bewandert, soll mal jemand was aus diesem Forum zu sagen, der 
echte Ahnung hat). Wenn's keine Störung ist, könnte es auch eine 
Timing-Frage sein. Die Kommunikation zwischen DFPlayer und ATTiny läuft 
mit 9600 Baud 
(https://github.com/ghmartin77/KidsMP3Player/blob/609a59758d550903c2a1ad18d126d9e76df3ef7c/KidsMP3Player/KidsMP3Player.ino#L193). 
Wg. leichter Timing-Fehler könnte eine Antwort -genau wie bei Störungen- 
Verschütt gehen. Probieren kannst Du mit leicht größerer oder leicht 
kleinerer Baudrate.

b) Die jetzige Rückmeldungsverarbeitung prüft, ob der abgespielte Track 
mit dem zuletzt gestarteten übereinstimmt: 
https://github.com/ghmartin77/KidsMP3Player/blob/609a59758d550903c2a1ad18d126d9e76df3ef7c/KidsMP3Player/KidsMP3Player.ino#L343 
und 
https://github.com/ghmartin77/KidsMP3Player/blob/609a59758d550903c2a1ad18d126d9e76df3ef7c/KidsMP3Player/KidsMP3Player.ino#L336
Das kann in zwei Ecken in die Hose gehen: Lesefehler im Callback-Paket, 
deshalb falsche Tracknummer. Alternativ ist die Pause in Zeile 335 zu 
klein und der Player gibt nach 500ms noch die falsche curTrackFileNumber 
zurück.

In allen Fällen hilft vermutlich nur Rantasten (ist bei 
"Nur-Manchmal"-Fehlern immer ein hartes Brot :)). Ich würde in folgender 
Reihenfolge vorgehen (wenn's jeweils nicht hilft, nächsten Schritt 
angehen):
1) Zeile 335: delay(500) erhöhen auf delay(1000).
2) Zeile 343: Tracknummer-Vergleich entfernen.
3) Hardware: Kabelabschirmung (so überhaupt ein Kabel und keine 
Leiterbahn) und Entstörungsversuche.
4) Spielen mit der Baudrate.

Zu Deinem anderem Punkt:
2) "Powerbank geht aus": Der neue Lautsprecher, den Du gewählt hast, hat 
wesentlich weniger Watt, als der vorherige. Damit ist vermutlich bei 
leisem Abspielen der Gesamtstromverbrauch nicht mehr hoch genug für die 
Powerbank und sie schaltet den Spannungswandler ab. Ein 
parallelgeschalteter Widerstand erhöht den Stromverbrauch für ein bissel 
Wärme und behebt Dein Problem. Achte drauf, dass der Widerstand "hinter" 
dem Ein-/Ausschalter liegt, damit die Powerbank nicht dauerhaft 
leergesaugt wird. Ansonsten gibt's elektrisch betrachtet von meiner 
Warte nichts zu meckern. Kriegst nur keinen grünen Umweltstempel mehr :)

Grüße
ghmartin77

von Tim (Gast)


Lesenswert?

ghmartin77 schrieb:
> 1) Zeile 335: delay(500) erhöhen auf delay(1000).
Brachte keine Besserung

> 2) Zeile 343: Tracknummer-Vergleich entfernen.
Die Zeile bis zur Klammer löschen?
Welche Funktionen sind dann nicht mehr gegeben?
Beim Einschalten des kontinuierlichen Abspielens springt er automatisch 
nen Track weiter!?!

von Tim (Gast)


Angehängte Dateien:

Lesenswert?

Testplayer ;-)

von ghmartin77 (Gast)


Lesenswert?

Tim schrieb:
>> 2) Zeile 343: Tracknummer-Vergleich entfernen.
> Die Zeile bis zur Klammer löschen?
> Welche Funktionen sind dann nicht mehr gegeben?
> Beim Einschalten des kontinuierlichen Abspielens springt er automatisch
> nen Track weiter!?!

Neenee, nicht die ganze Zeile löschen, ich meinte nur den 
Tracknummer-Vergleich:
1
if (type == DFPlayerPlayFinished /* && value == curTrackFileNumber */) {

Beim nochmaligen Drübernachdenken und Code-Analyse der DFPlayer-Lib 
schwindet meine Sicherheit, dass das helfen könnte. Habe gesehen, dass 
in der DFPlayer-Lib eine Prüfsumme ausgewertet wird, so das eine 
Nachricht vom Player nur verarbeitet wird, wenn die Prüfsumme passt. 
Insofern ist Erhalt der DFPlayerPlayFinished-Nachricht mit falscher 
Tracknummer (mit ausreichender Wahrscheinlichkeit) nicht möglich.
Trotzdem kannst Du das mal probieren, auch wenn das -wie Du richtig 
vermutet hast- Seiteneffekte hat, die ich initial nicht bedacht hatte 
(Abspielen von Konfigurationstexten (z.B. Sleep Timer), wenn der Player 
gerade nichts abspielt, könnte den Effekt haben, dass danach einfach ein 
Track aus den Playlists abgespielt wird).

Trotzdem hilft uns das evtl. weiter. Solltest Du mit ausreichender 
Genauigkeit sagen können, dass das Problem dann weg ist (ja, ja, ich 
weiß, man kann Ausbleiben eines Fehlers nicht beweisen :)), liegt die 
Ursache bei Erfassung der curTrackFileNumber und wir können an der Ecke 
weitersuchen. Das wäre zumindest mal eine Einschränkung des Problems.
Bleibt das Problem bestehen, wissen wir, dass die 
DFPlayerPlayFinished-Meldungen nicht immer vom ATTiny gesehen werden.

Siehst Du das beschrieben Verhalten in beiden Deiner Player?
Wie häufig kommt das vor? Gibt's in Deinen Augen irgendeine 
Gemeinsamkeit der Tracks, nach denen das kontinuierliche Abspielen 
abbricht? Besonders kurz, besonders lang, besonders laut? Wenn es bei 
einem Track passiert, passiert es bei diesem Track dann immer?

Kriegst Du das Verhalten auch mit der KidsMP3Player.ino-Version vor 
Einbau der Funktion des erneuten Start eines unvollendeten Tracks beim 
Einschalten? 
https://github.com/ghmartin77/KidsMP3Player/tree/77621df2cf0c73cfc919e383d6546d23f876d431 
(die Key-Referenz-Values müssen noch angepasst werden).

Grüße
ghmartin77

von Tim (Gast)


Lesenswert?

ghmartin77 schrieb:
> Wie häufig kommt das vor? Gibt's in Deinen Augen irgendeine
> Gemeinsamkeit der Tracks, nach denen das kontinuierliche Abspielen
> abbricht? Besonders kurz, besonders lang, besonders laut? Wenn es bei
> einem Track passiert, passiert es bei diesem Track dann immer?

Ich kann es nicht reproduzieren. Lautstärke, Track, kurz, lang... immer 
unterschiedlich

> Kriegst Du das Verhalten auch mit der KidsMP3Player.ino-Version vor
> Einbau der Funktion des erneuten Start eines unvollendeten Tracks beim
> Einschalten?

Ich teste aktuell deine Version "vor Disable ACK"
War die Erste Version die ich nach meiner Anmeldung runtergeladen hatte.
Scheit bis jetzt problemlos zu laufen.

Ich hab das Gefühl die Pausen nach dem Track sind etwas länger und der 
Player spielt dadurch zuverlässiger weiter.

von Tim (Gast)


Lesenswert?

Tim schrieb:
> Ich teste aktuell deine Version "vor Disable ACK"
> War die Erste Version die ich nach meiner Anmeldung runtergeladen hatte.
> Scheit bis jetzt problemlos zu laufen.

Ich lehn mich mal aus dem Fenster und schließe den Fehler mit der 
Version aus.
Der erste Player läuft damit auch durch...

von ghmartin77 (Gast)


Lesenswert?

Interessant. Mit und nach dem "Disable ACK"-Commit habe ich insgesamt 
noch zwei Änderungen eingebaut, die die Ursache sein könnten: "Disable 
ACK" eben oder das Wiederanspielen des letzten unvollendeten Tracks.

Würde gern noch den Root-Cause des Problems finden:
Kannst Du mal den Head aus dem GitHub-Repo nehmen und die Änderung des 
"Disable ACK"-Commits manuell zurückdrehen? D.h.
1
  player.begin(softSerial, false, false); // disable ACK to work with MH2024K-24SS chips
ersetzen durch
1
  while (!player.begin(softSerial)) {
2
    delay(200);
3
  }

Btte "automatisches Wiederanspielen" aktivieren (Taste 3).
Wie verhält sich der Player dann, was das kontinuierliche Abspielen 
angeht?

Danke für's Experimentieren!

Grüße
ghmartin77

von Let the Music Play (Gast)


Lesenswert?

Tim schrieb:
> Wie versprochen noch ein paar Bilder...
Sieht etwas ambivalent aus: Die modernen bunten Knöpfe und das 
altbackene dunkle Holz der 80er. Aber trotzdem nette Arbeit!

von Tim (Gast)


Lesenswert?

Let the Music Play schrieb:
> Tim schrieb:
> Wie versprochen noch ein paar Bilder...
>
> Sieht etwas ambivalent aus: Die modernen bunten Knöpfe und das
> altbackene dunkle Holz der 80er. Aber trotzdem nette Arbeit!


Das Holz ist nichg wirklich dunkel. Multiplex Ahorn. Lediglich def Griff 
ist etwas dunkler (Buche)


@ghmartin77
Experiment wird noch durchgeführt. Hatte bisher noch keine Zeit...

von Ronny S. (dr_bal)


Angehängte Dateien:

Lesenswert?

Hi,

Auch wenn der Code bei mir nicht läuft :-( möchte ich Euch schon mal 
mein Design vorstellen.  Ich werde die Teile dafür auf die eigens dafür 
gebaute cnc Maschine Fräsen und dann verleimen.

Die ersten Tests verliefen sehr gut.


Den Code werde ich wohl noch anpassen werden, ich denke das liegt am 
china Klon.

Player.playfolder(1, 1); zum Beispiel läuft nicht zuverlässig. 
Player.playLargeFolder(1, 1); dagegen schon...

Aber das teste ich mal noch :-)

Danke auf alle Fälle für die Inspiration.

Vg
Ronny

von Klaus R. (klaus2)


Lesenswert?

Hut ab, holztechnisch bench und ein schönes Design (vor Allem der 
Lautsprecher gefällt mir im dänischen Design viel besser!)...

Klaus.

Beitrag #5599441 wurde von einem Moderator gelöscht.
Beitrag #5599580 wurde von einem Moderator gelöscht.
von Ralf L. (ladesystemtech)


Lesenswert?

Ronny D. schrieb:
> möchte ich Euch schon mal
> mein Design vorstellen.

Respekt! Ist das Gehäuse mit dem Griff aus dem 'Vollen' geschnitzt 
(gefräst) worden?

von mb (Gast)


Lesenswert?

Wow Super umgesetzt Respekt.

von Berd Schlehe (Gast)


Lesenswert?

Hallo Ronny, sieht gut aus was du da ausgefräst hast mit deiner CNC 
Fräse.
Habe mir seit längerem Gedanken zu einem Hörbert ähnlichen mp3 Player 
gemacht und hab auch noch eine Menge guter Ideen was die Funktionen 
anbelangt.
Mein einziges Problem ist, das ich nicht programmieren kann.
Und bis jetzt einige Prototypen mit fertigen China mp3 Boards realisiert 
habe.
Leider kann ich die super Funktionen die mir im Kopf rumschweben leider 
so nicht umsetzen, deswegen wäre ich super dankbar wenn ich jemand hätte 
der mich beim programmieren unterstützen könnte und im Gegenzug dafür 
einiges an Funktionsideen und mechanischen Lösungen bekommen würde.
Wenn du Lust hast ein Projekt zusammen zu starten schreib mir einfach 
kurz eine mail, dann setzen wir uns in Verbindung, würde mich freuen.
:-)

mail: berd.schlehe@web.de

von Ronny S. (dr_bal)


Angehängte Dateien:

Lesenswert?

Hi, ja der wird direkt ausgefräst.

Bin noch am experimentieren mit dem Setup, habe aber gestern den Test 
aus dem Foto gefräst.

Über den Lautsprecher kommt auch noch eine Blende, dann sieht es nicht 
so nackt aus.

Für mehr aktuelle Infos könnt ihr bei Instagram schauen 
https://instagram.com/ronbal1308

Oder bei Github, da werde ich dann meinen Form veröffentlichen. Wenn 
Interesse besteht kann ich das Gehäuse als fusion360 Datei auch 
bereitstellen.
Https://Github.com/ronbal


Vg
Ronny

: Bearbeitet durch User
von ghmartin77 (Gast)


Lesenswert?

Hi Ronny,

das sieht sehr schick aus! Coole Idee, das Gehäuse "in Scheiben" zu 
Fräsen. Wenn Du in das Sandwich noch eine passend gefräste 
Plexiglas-Scheibe reinbaust, kannst Du mit ein paar Zusatz-LEDs noch 
eine schicke Beleuchtung dabeizaubern. Auch die Abrundungen Deines 
Designs finde ich sehr gelungen und dazu wesentlich verletzungsärmer, 
als die doch recht spitzen Ecken und Kanten der Ikea-Box.

Top! Top!

Ronny D. schrieb:
> Auch wenn der Code bei mir nicht läuft :-(

Na, das kriegen wir auch noch hin :-) Was steht denn für eine 
Bezeichnung auf deinem Chip des DFPlayers? (Die Diskussionen oben im 
Thread zum Thema Klone hast Du schon gelesen?)

Grüße
ghmartin77

von Tim (Gast)


Lesenswert?

ghmartin77 schrieb:
> Interessant. Mit und nach dem "Disable ACK"-Commit habe ich
> insgesamt
> noch zwei Änderungen eingebaut, die die Ursache sein könnten: "Disable
> ACK" eben oder das Wiederanspielen des letzten unvollendeten Tracks.
>
> Würde gern noch den Root-Cause des Problems finden:
> Kannst Du mal den Head aus dem GitHub-Repo nehmen und die Änderung des
> "Disable ACK"-Commits manuell zurückdrehen? D.h.
> player.begin(softSerial, false, false); // disable ACK to work with
> MH2024K-24SS chips
> ersetzen durch  while (!player.begin(softSerial)) {
>     delay(200);
>   }
>
> Btte "automatisches Wiederanspielen" aktivieren (Taste 3).
> Wie verhält sich der Player dann, was das kontinuierliche Abspielen
> angeht?
>
> Danke für's Experimentieren!
>
> Grüße
> ghmartin77

Da jetzt endlich meine Taster aus China angekommen sind, konnte ich 
heute die "Tastatur" fertigstellen und experimentieren.

Soweit ich das bis jetzt beurteilen kann läuft der Player mit der 
Codeänderung zuverlässig durch...

von Hermann (Gast)



Lesenswert?

Hallo Zusammen,
bei meinem player war es auch so wie bei Tim, dass mit der aktuellen SW 
, ab und zu stehen blieb und erst durch drücken einer Taste weiter 
spielte .
Nachdem ich das „Disable ACk „ wieder rückgänglg gemacht habe, wie 
gmartin77 vorschlug, läuft der player einwandfrei durch, spielt Lied auf 
Lied und bleibt nicht mehr hängen .

Noch ein Hinweis, bei Reichelt gibt es klare transparente Tastenkappen 
für die Multimec Taster.
Man kann einen Tropfen Lack, z.B. Revell Farblack, von innen in die 
Kappe geben und so beliebig farbige Kappen erzeugen

von Hermann (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
noch ein Bild vom Aufbau

von Michael (Gast)


Lesenswert?

Hallo zusammen, könnte mir jemand vl. einen ATTiny programmieren und auf 
dem Postweg zukommen lassen.
Kann leider nicht programmieren und hätte somit auch kein 
Programmer....AVR Studio usw. würde trotzdem gerne ein paar Player bauen 
für die Kinder in unserem Familien und Freundeskreis.
Wäre jemand so nett und würde mir welche bespielen wenn ich die ATTinys 
mit der Post schicke?

Würde mich freuen wenn jemand so nett wäre.

Viele Grüße Michael

von Marcus (Gast)


Lesenswert?

Hallo,
Attiny und Dfplayer sind nun angekommen und ich wollte langsam mal die 
Anderen Bauteile zusammenbestellen. Ich habe jetzt die Multimec Taster 
bei Reichelt gefunden, aber welche muss ich denn bestellen? Wechsler 
oder Schließer? SMD oder THT?
schonmal Danke und schöne Grüße

von Hermann (Gast)


Lesenswert?


von Marcus (Gast)


Lesenswert?

Ich vermute mal, dass ich einen Wechsler brauche, da ich ja die 
Playlists durchschalten will. Und den Unterschied zwischen THT und SMD 
habe ich auch herausgefunden.
Hat irgendjemand eine komplette Materialliste? Ich als totaler Neuling 
scheitere ja schon an der Auswahl der Widerstände.
Ich hab jetzt mal die hier genommen
https://www.reichelt.de/widerstand-kohleschicht-10-kohm-axial-500-mw-5-arc-rcc050-10k-j-p237477.html?&trstct=pol_1
bzw die 1KOhm Variante.

von Marcus (Gast)


Lesenswert?

Hermann schrieb:
> Hallo Marcus,
> als Taster kannst du diese verwenden
> https://www.reichelt.de/multimec-taster-ohne-beleu...
>
> Die zugehörigen Tastenkappen sind
> https://www.reichelt.de/kappe-fuer-taster-3f-rund-...?

Moin Hermann,
vielen Dank.
Hab ich mal bestellt. Mal sehn ob ich den ganzen Kram zusammengebaut 
kriege.

von Ronny S. (dr_bal)


Angehängte Dateien:

Lesenswert?

Hi ghmartin77,

Ja habe ich gelesen.

Habe jetzt den code soweit angepasst, das es grundlegend läuft.

Player.readstate() unterstützt mein klon nicht... Ergebniss  ist immer 
-1

Es gibt einen blanko Chip und den vom Foto.

Deswegen hat er weder advertise und mp3folder nicht gespielt.


Kleiner Tip an alle, ich lasse jetzt ein Hallo Name des Kindes  nachdem 
einschalten abspielen.

Mein Sohn freut sich gerade bei jeden  neustart ?


Vg
Ronny

von Ronny S. (dr_bal)


Lesenswert?

Michael schrieb:
> Hallo zusammen, könnte mir jemand vl. einen ATTiny programmieren und auf
> dem Postweg zukommen lassen.
> Kann leider nicht programmieren und hätte somit auch kein
> Programmer....AVR Studio usw. würde trotzdem gerne ein paar Player bauen
> für die Kinder in unserem Familien und Freundeskreis.
> Wäre jemand so nett und würde mir welche bespielen wenn ich die ATTinys
> mit der Post schicke?
>
> Würde mich freuen wenn jemand so nett wäre.
>
> Viele Grüße Michael

Hi Michael,

Kaufe doch einfach einen Arduino Nano. Dann hast Du alles in einen Chip 
und du kannst Ihn direkt bespielen  ohne extra Hardware.

Vg
Ronny

von ghmartin77 (Gast)


Lesenswert?

Ronny D. schrieb:
> Kleiner Tip an alle, ich lasse jetzt ein Hallo Name des Kindes  nachdem
> einschalten abspielen.

Hi Ronny,

sehr coole Idee. Das nehme ich mit ins Github-Repo, sobald ich Zeit 
habe.

Der Chip von Deinem Photo ist der oben in diesem Thread (und im 
Internet) diskutierte JC AA1752CJ3J13.1-94. Bisherige Gerüchte gehen, er 
sitze auf einer Platine mit roter LED und wäre ein Fake. 
Erfahrungsberichte gehen von "Funzelt überhaupt nicht" über "Geht nicht 
per UART" bis "eingeschränkt nutzbar".
Interessant, dass Du das Ding ans Laufen bekommen hast. Hab nie so einen 
bei meinen Bestellungen in die Hand bekommen. Den hätte ich mir gern mal 
mit einem Logic-Analyzer angeschaut. Vermutlich hält der sich einfach 
nur nicht exakt an das Kommunikationsprotokoll, wie die DFPlayer-Lib das 
erwartet.

Was waren denn die Kernänderungen, die Du vornehmen musstest, damit das 
Teil lief? Und: Läuft es mit vollem Funktionsumfang oder musstest Du 
Dinge entfernen?

Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

Ronny D. schrieb:
> Hi Michael,
>
> Kaufe doch einfach einen Arduino Nano. Dann hast Du alles in einen Chip
> und du kannst Ihn direkt bespielen  ohne extra Hardware.
>
> Vg
> Ronny

+1

Relevante Schritte sind weiter oben in diesem Thread verlinkt, z.B. 
Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder auf ATTiny-Basis"

Alles kein Hexenwerk und gibt Dir die Flexibilität auch Änderungen am 
Code vorzunehmen (selbst als Nichtprogrammierer).

Grüße
ghmartin77

von Michael (Gast)


Lesenswert?

Hallo Ronny.
Ich hab sowas von keine Ahnung vom Programmieren und schon gar nicht von 
Arduino Programmierung, hab da schon bissl mit einem Arduino micro und 
Nano und einem Schild mit einem VS1053 rumgespielt, hat alles zu nix 
geführt :-)

Such schon lange jemand der einfach gut programmieren kann und meine 
Ideen die wirklich sinnvoll sind für die Benutzung des mp3 Players (vor 
allem für Kinder) in relativ kurzer Zeit wenn möglich auf Arduino Basis 
umsetzen kann.

Im Grunde gibt es ja bereits viele Bibliotheken gerade für den VS1053B 
allerdings das drumrum was man eben an Programm schreiben kann das fehlt 
mir.

Wenn du bereit wärst mir da zu helfen können wir gerne auch mal per 
email schreiben, und ich erzähle dir was ich so vor habe.

Ich denke die eine oder andere Erweiterung wirst du sicher für dich 
übernehmen können. Habe mir da echt schon sehr viele Gedanken dazu 
gemacht.

Toll wäre doch wenn wir zusammen ein Projekt auf die Beine stellen 
könnten das
genau so von allen in einfachen Schritten ohne große 
Programmierkenntnisse umgesetzt werden kann, sodass sich jeder einen 
Kinder mp3 Player bauen kann.

Habe bereits preiswerte und leichtgängige Taster gefunden, Passende 
Kappen dazu, ein LiIOn  Akku und passende Ladeelektronik, einen 3W 
Stereo Verstärker usw....
alles schon zuhause, fehlt mir nur noch der Arduino mit der Software....

Wäre doch eine tolle Sache.

Email: Kunibertkamel@web.de

Ist wirklich meine Email Adresse :-)

Grüße Michael

von Ronny S. (dr_bal)


Angehängte Dateien:

Lesenswert?

ghmartin77 schrieb:
> Was waren denn die Kernänderungen, die Du vornehmen musstest, damit das
> Teil lief? Und: Läuft es mit vollem Funktionsumfang oder musstest Du
> Dinge entfernen?
>


Im Prinzip musste ich nur in Zeile 327

player.playFolder(curFolder, curTrack);

Durch

player.playLargeFolder(curFolder, curTrack);

ersetzen.


Weiterhin versteht er in playoradvertise den readstat  nicht und somit 
weiß der Arduino nicht ob gerade gespielt wird.

Ich habe das erstmal so gelöst, das er es als playmp3folder abspielt. 
Dann stoppt zwar die Wiedergabe, das wäre aber ok für mich. Alternativ 
müsste ich halt den vorherigen Titel speichern und den neu starten.

Vielmehr war es bis jetzt nicht. War halt viel debuggen ?

Hatte 3 von denen Bestellt und werde mal einen anderen testen, 
vielleicht ist das ja auch nur ein Einzelfall.

Wenn du magst schick ich Dir den 3. dann kannst du testen. Soszusagen 
als Lohn für Deine Mühe hier :-)

Im Anhang noch 2 Bilder vom Gehäusestatus. Für das erstmal sehr gut 
bisher.

Vg
Ronny

: Bearbeitet durch User
von Irenäus B. (irenaeusbecker)


Lesenswert?

Hi,

gestern hier den Thread gefunden und direkt mal die Teile bestellt ;-)

Drei kleine Fragen zum Aufbau, da ich eher mehr mit Software und weniger 
mit Löten etc vertraut bin:

- Der zweite interne Poti... ist das in der schematischen Abbildung der 
10kOhm Widerstand R1?

- Platine für die Taster. Ist das eine Streifenrasterplatine obwohl die 
eher wie eine Lochrasterplatine ausschaut? Ich wundere mich nur über das 
Bild, da die Taster an sich einzeln verlötet sind, aber keine Verbindung 
analog der schematischen Abbildung untereinander haben. Hätte hier noch 
zusätzliche Litzen zwischen Tastern erwartet.

- Die Nachbauten sehen sich sehr ähnlich. Gibt es irgendwie eine Bohr- 
oder Fräßschablone, die ich noch nicht gefunden habe?

Danke vorab!!

von ghmartin77 (Gast)


Lesenswert?

Hallo Irenäus,

Irenäus B. schrieb:
> - Der zweite interne Poti... ist das in der schematischen Abbildung der
> 10kOhm Widerstand R1?

Exakt. In meiner Aufbaute ist das in den Photos der kleine, blaue, 
rechteckige "Klotz". In der Benutzungsanleitung, die auf GitHub liegt, 
ist das auch im Photo explizit ausgewiesen.

> - Platine für die Taster. Ist das eine Streifenrasterplatine obwohl die
> eher wie eine Lochrasterplatine ausschaut? Ich wundere mich nur über das
> Bild, da die Taster an sich einzeln verlötet sind, aber keine Verbindung
> analog der schematischen Abbildung untereinander haben. Hätte hier noch
> zusätzliche Litzen zwischen Tastern erwartet.

Falls Du von dem Photo meiner Platine auf GitHub sprichst: Das ist eine 
Lochrasterplatine (siehst Du deutlich an den Kupferringen, um die 
Rasterlöcher). Die Verbindung zwischen den Buttons besteht genau wie im 
Schaltbild, aber evtl. lässt sich das Auge täuschen. Die Verbindungen 
(Widerstände auf der einen Seite, Draht auf der anderen) sind zwischen 
den Buttons, nicht innerhalb eines Knopfes (,was ja auch keinen Sinn 
ergäbe).

>
> - Die Nachbauten sehen sich sehr ähnlich. Gibt es irgendwie eine Bohr-
> oder Fräßschablone, die ich noch nicht gefunden habe?

Ich habe keine. Der Übertrag zum Bohren aufs Holz ist aber recht simpel, 
da es genau das Lochraster der Platine abbildet: Einfach gucken, wieviel 
Löcher Abstand zwischen Deinen Tastern liegen würde. dann kannst Du das 
mit einer "nackten" Platine und einer Stecknadel/Fineliner entsprechend 
übertragen. Passend großer Bohrer bei und los geht's.
Für's Schneiden der Platine musst Du allerdings den Versatz der Löcher 
einkalkulieren: Das Rastermaß stimmt, aber die Mitte der Taster/Deiner 
Bohrlöcher kommt nicht auf einem Loch aus, wenn der Taster auf der 
Platine sitzt.
Bei Eintritt von Kopfrauchen bei Verarbeitung der vorhergehenden Sätze: 
Nochmal lesen, einmal im Kopf oder mit Material durchspielen, danach 
wird's klar, versprochen :)

Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

ghmartin77 schrieb:
> Die Verbindung zwischen den Buttons besteht genau wie im
> Schaltbild, aber evtl. lässt sich das Auge täuschen. Die Verbindungen
> (Widerstände auf der einen Seite, Draht auf der anderen) sind zwischen
> den Buttons, nicht innerhalb eines Knopfes (,was ja auch keinen Sinn
> ergäbe).

Ergänzend dazu fehlt vermutlich noch dieses Puzzleteil:
Die verwendeten Taster sind so aufgebaut:
1
1-----2
2
  T|
3
3-----4

Damit sind die 4 Füße (1,2,3,4) paarweise miteinander verbunden (1 mit 2 
und 3 mit 4). Der Taster T schließt bei Betätigung die Verbindung 
zwischen den "Leitungen" 1/2 und 3/4.

Grüße
ghmartin77

von Irenäus B. (irenaeusbecker)


Lesenswert?

Danke dir für die Rückmeldung! Ich habe tatsächlich im Bild 
05pcbkeys_back.png gedacht, dass die Füße mitteinander verdrahet sind... 
Danke für die Auflösung des Gehirnknotens. Jetzt fehlt nur noch die 
Paketlieferung und dann hoffe ich auf schnelle Erfolge.

von Ronny S. (dr_bal)


Angehängte Dateien:

Lesenswert?

So langsam nimmt die Front formen an...

Wie findet ihr den Entwurf?

von ghmartin77 (Gast)


Lesenswert?

Ronny S. schrieb:
> Wie findet ihr den Entwurf?

Lass es mich so ausdrücken: Shut up and take my money :)

Grüße
ghmartin77

PS: Du brauchst auf jeden Fall einen vollwertigen DFPlayer. Wär schade, 
bei dem geilen Gehäuse auf den vollen Funktionsumfang des Player-Codes 
verzichten zu müssen (z.B. kontinuierliches Abspielen).

von Tim M. (brotzeit)


Lesenswert?

Ronny S. schrieb:
> Wie findet ihr den Entwurf?

Sieht gut aus!!!

@ghmartin77
Würde dir für deine Mühen auch einen Player wie oben abgebildet 
spendieren.
Hab einige davon hier rumliegen!

von ghmartin77 (Gast)


Lesenswert?

Hab mich nochmal mit der DFRobotDFPlayerMini-Library und den 
Unterschieden zwischen den Chips MH2024K-24SS und YX5200 beschäftigt und 
ein paar Dinge herausgefunden:

1) MH2024K reagiert auf ACK-Anforderungen nicht bei allen Kommandos, wie 
die Library das erwartet (und bspw. der YX5200 es tut). Meist kommt 
einfach nur die Antwort auf die Kommandoanfrage, die ACK-Antwort bleibt 
aus.
==> Um Kompatibilität des Codes für beide Chips zu erreichen, muss der 
ACK-Modus ausgeschaltet werden. Das ist die Änderung, die ich bereits 
mit commit 77621df2cf0c73cfc919e383d6546d23f876d431 ins Repo gebracht 
hatte.

2) Wenn ich die Library recht verstanden habe, hat sie ein generelles 
konzeptionelles Problem, das zu seltsamen Effekten führen kann, die 
meinen Code speziell bei der Abfrage nach dem aktuell abgespielten File 
aus dem Tritt bringen kann: Die Kommunikation mit dem Player ist 
grundsätzlich bidirektional. Er schickt über die UART-Schnittstelle 
sowohl Antworten auf Anfragen von einem Mikrocontroller als auch 
Callback-Nachrichten, die vom Player zu beliebigen Zeitpunkten initiiert 
werden. Letztere sind beispielsweise Callbacks für "SD Karte 
eingesteckt", "SD Karte entfernt" oder eben auch "Abspielen von File 
Nummer 4711 beendet".
Leider scheint es keinerlei Synchronisation oder Entkopplung für die 
zwei Paketversandgründe durch den Player (Callback oder Anfrageantwort) 
zu geben. Der Kommando-Teil ist vom Grundschema in folgender Art 
implementiert:
1
    Schicke Kommando-Paket an Player
2
    Warte Timeout ms auf Antwort (d.h. verfügbare Daten auf UART)
3
    Wenn die Antwort vom Typ DFPlayerFeedBack ist
4
        gebe das Anfrageergebnis zurück
5
    sonst
6
        gebe -1 zurück (Fehler)
Stecken im Puffer der UART-Schnittstelle (SoftSerial-Lib) noch alte 
Pakete vom Player (z.B. nicht mit read() abgeholte Antwortpakete) oder 
kommt bei der Kommandoausführung zwischendurch ein Callback-Paket des 
Players an (z.B. "Abspielen von File Nummer 4711 beendet"), gilt der 
Kommandoaufruf als fehlgeschlagen, was bei meiner Implementierung 
beispielsweise das kontinuierliche Abspielen stören kann, weil manchmal 
die Nummer des aktuell abgespielten Files nicht gelesen werden kann. 
@Tim: Das passt zu dem Verhalten, das Du nach der "Disable ACK"-Version 
gesehen hast.

Habe den Code jetzt robuster gestaltet, indem sowohl Overflows des 
SoftSerial-Buffers (meine delay()s im Code sind eigentlich auch nicht 
mit der Funktionsweise der Lib vereinbar) als auch zwischenfunkender 
Gesprächsbedarf seitens des DFPlayers an den entscheidenden Stellen 
hartnäckiger gehandlet werden. Liegt im GitHub und sollte für 
MH2024K-24SS und YX5200 stabil laufen.

Erfahrungsberichte nehme ich gern entgegen :) ...und Danke für die 
bisherigen!

Grüße
ghmartin77

PS: @Tim und @Ronny: Danke für das Angebot, mir einen der JC 
AA1752CJ3J13.1-94 zuschicken zu wollen. Da ich nur zu diesem Zweck nicht 
noch extra eine Packstation-Anmeldung machen möchte und ich meine 
Privatadresse im Internet nicht herausgebe, klappt das nicht. Trotzdem 
weiß ich euer Angebot aber sehr zu schätzen. Danke nochmal!

von Ronny S. (dr_bal)


Angehängte Dateien:

Lesenswert?

Lautsstärkeknopf werde ich auch selbst bauen. Gerade ersten Versuch mit 
ner Bohrmaschine und Schraubendreher als Drechselmesser ;-)

Gar nicht so schlecht. Ist ein Ast von einem Kirschbaum gewesen.

Vg
Ronny

von Irenäus B. (irenaeusbecker)


Lesenswert?

So, ich hätte da noch einen, frisch via Amazon Prime geliefert:
JC/JT AA1828CJ5M2U.1-94

Musik abspielen klappt aber problemlos... sprich Taster, Nächster Titel 
etc. Läuft hier seit ca. 45 Minuten durch. Das mit Advert und den 
Funktionstasten habe ich aber noch nicht aktiv probiert.
Habe weiterhin das .ino von vor vier Tagen verwendet sowie die DFPlayer 
Bibliothek 1.05.

Kleine Anmerkung: Anscheinend passt dein Fritzing nicht ganz zum 
Lötbild; bei der Verbindung zum Key-Pad sind VCC und GND vertauscht. 
Aber hier fluppt jetzt alles. Ist mir nur aufgefallen, da ausschließlich 
"Folder 07" gespielt wurde, egal welcher Taster betätigt wird.

Meine Powerbank steigt immer aus, mit Batterien klappt alles. Habt ihr 
eine USB Powerbank Empfehlung? Widerstand von 130 Ohm führt ja zu 
zusätzlichen 40mA Verbrauch, was eine 2000mAh Powerbank im Betrieb ja 
quasi halbiert (mein DF Player braucht ca. 40mAh bei Zimmerlautstärke).

@Ronny: Kannst du das mit dem personalisierten Ansprechen hier 
darstellen? Würde das ebenfalls sehr gerne übernehmen. Danke vorab!

Danke vorab!

von Irenäus B. (irenaeusbecker)


Lesenswert?

Doch noch eine Anmerkung: restartLastTrackOnStart funktioniert bei mir 
nicht für Folder "01", bei allen anderen aber scheinbar problemlos.

von ghmartin77 (Gast)


Lesenswert?

Irenäus B. schrieb:
> So, ich hätte da noch einen, frisch via Amazon Prime geliefert:
> JC/JT AA1828CJ5M2U.1-94

Ei geh, noch a neues Modell :)

>
> Musik abspielen klappt aber problemlos... sprich Taster, Nächster Titel
> etc. Läuft hier seit ca. 45 Minuten durch. Das mit Advert und den
> Funktionstasten habe ich aber noch nicht aktiv probiert.
> Habe weiterhin das .ino von vor vier Tagen verwendet sowie die DFPlayer
> Bibliothek 1.05.
>

Na, zumindest vorerst gute Neuigkeiten für den neuen Chip-Kandidaten.

> Kleine Anmerkung: Anscheinend passt dein Fritzing nicht ganz zum
> Lötbild; bei der Verbindung zum Key-Pad sind VCC und GND vertauscht.

Verstehe nicht, was Du meinst. VCC/GND/DATA sind im Fritzing-Diagramm 
bei beiden Anschlusspins richtig ausgewiesen...
Was meinst Du mit Lötbild? Wenn Du auf das Photo der Platine abzielst, 
dann ja, da muss es keine Überdeckung geben. Die schematische 
Darstellung des Fritzing-Diagramms hat wenig mit der Pinposition des 
konkreten Boards zu tun. Das ist ja auch ein Schema, kein PCB-Layout.

> Aber hier fluppt jetzt alles. Ist mir nur aufgefallen, da ausschließlich
> "Folder 07" gespielt wurde, egal welcher Taster betätigt wird.
>
> Meine Powerbank steigt immer aus, mit Batterien klappt alles. Habt ihr
> eine USB Powerbank Empfehlung? Widerstand von 130 Ohm führt ja zu
> zusätzlichen 40mA Verbrauch, was eine 2000mAh Powerbank im Betrieb ja
> quasi halbiert (mein DF Player braucht ca. 40mAh bei Zimmerlautstärke).
>

Kannst Dich mit größer werdenden Widerständen rantasten, wieviel 
Stromabruf Deine Powerbank benötigt, damit der 5V-Wandler anbleibt. 
Vorschläge für ein gutes Modell habe ich leider keine. Meine Variante 
war ein Noname-Teil vom Grabbeltisch eines Discounters.
Vielleicht können die anderen Mitleser aber Empfehlungen aussprechen.

> @Ronny: Kannst du das mit dem personalisierten Ansprechen hier
> darstellen? Würde das ebenfalls sehr gerne übernehmen. Danke vorab!

Quickhack:
Leg Dir ein File /20/001.mp3 an mit einer Aufnahme "Hallo <Kindname>..." 
+ vorgeschaltetem THX-Sound versteht sich :)
Dann füge in Zeile 209 ungefähr Folgendes ein:
1
player.playFolder(20, 1);
2
delay(<dauer_des_mp3_in_msec>);

>
> Danke vorab!

> Doch noch eine Anmerkung: restartLastTrackOnStart funktioniert bei mir
> nicht für Folder "01", bei allen anderen aber scheinbar problemlos.

Das guck ich mir demnächst mal tiefer an. Vom scharfen Angucken des 
Codes in den letzten 5 Minuten wollte sich mir ein solches Verhalten 
nicht erschließen, aber das heisst nix :)

Grüße
ghmartin77

von Tim M. (brotzeit)


Lesenswert?

ghmartin77 schrieb:
> annst Dich mit größer werdenden Widerständen rantasten, wieviel
> Stromabruf Deine Powerbank benötigt, damit der 5V-Wandler anbleibt.

Ich habe am 2. Player nen Vorwiderstand und dahinter nen Drehpotti 
angebracht.
So kann man den Stromverbrauch genau einstellen.

von ghmartin77 (Gast)


Lesenswert?

ghmartin77 schrieb:
>> Doch noch eine Anmerkung: restartLastTrackOnStart funktioniert bei mir
>> nicht für Folder "01", bei allen anderen aber scheinbar problemlos.
>
> Das guck ich mir demnächst mal tiefer an. Vom scharfen Angucken des
> Codes in den letzten 5 Minuten wollte sich mir ein solches Verhalten
> nicht erschließen, aber das heisst nix :)

Fehler gefunden. Danke für Deinen Hinweis! In Deinem Folder "01" lag nur 
ein File, richtig? In diesem Fall funktionierte das Wiederanspielen des 
letzten Tracks nicht.

Hab den Code überarbeitet. Liegt korrigiert im GitHub-Repo.

Zusätzlich habe ich die DFPlayerMini-Library wg. ihres Konzeptproblems 
(s.o.) durch eine andere ersetzt, die mit Callbacks arbeitet und dieses 
Problem nicht hat. Hoffe, ich habe dabei keine neuen Fehler eingebaut :)

Grüße
ghmartin77

von Tim (Gast)


Lesenswert?

Ich komm mit den Softwareversionen gar nimmer hinterher... das geht ja 
ratz fatz.
Hab gestern erstmal die letzte Version draufgespielt.
Die läuft nicht schlecht.

Bei der ganz aktuellen kann ich z.B. im ersten Ordner keinen Track 
wechseln...

von Irenäus B. (irenaeusbecker)


Lesenswert?

Hallo Tim,

ich kann selbiges Verhalten bestätigen, sprich bei der aktuellen Version 
vom 11.11.2018 kann ich im Folder 01 nur Lied 001.mp3 abspielen. Bei 
allen anderen Foldern klappt das problemlos.

VG

von N. B. (gabunz)


Lesenswert?

Hallo ghmartin77,

mal eine andere Frage. Ich habe das Projekt auch nachgebaut, aber mit 
einem kleineren Lautsprecher. Da die Stromentnahme nicht ausreicht 
schaltet die Powerbank natürlich nach ein paar Sekunden ab.

Eine probate Lösung ist natürlich, einen "Entladewiderstand" zwischen 
Vcc und Gnd zu schalten. Bei mir würde dann aber die Laufzeit auf ein 
drittel reduziert. Zudem müsste man die Schwelle suchen, an dem die 
Schaltung mit Widerstand die Powerbank an lässt und wenn der Player nix 
mehr tut die Powerbank auch abschaltet.

Wäre dies nicht einfacher, wenn man einen Port am Attiny freischaufelt 
und man dort eine Programmgesteuerte Impulsentladung über einen 
Widerstand mittels Transistorschaltung realisiert? Die Powerbanks 
benötigen meistens keine dauerhafte Entladung um angeschaltet zu 
bleiben. Oft reicht ein kurzer Impuls von wenigen ms 
([[http://www.mino-elektronik.de/Powerbank/powerbank.htm]]). Das würde 
dann die Akkulaufzeit deutlich wieder nach oben schrauben. Zudem könnte 
man, wenn der Prozessor in den SleepModus geht, das Aussenden des 
Impulses einstellen und die Powebank geht garantiert aus!

Mein Vorschlag wäre es, man verzichtet auf die interne 
Volume-Einstellung und hat den Pin frei. Alternativ könnte man diese 
Einstellung doch auch über einen Tasten-Shortcut realisieren, ähnlich 
wie beim Sleep-Modus. Z.B. Taste 5 für 3 Sek. drücken und anschließend 
Tasten 1-11 für die gewünschte maximale Lautstärke. Der Wert könnte auch 
im EEProm gespeichert werden. Das spart schon mal ein Bauteil, etwas 
Lötarbeit und ist später auch leichter zu Handeln. Zur Sicherheit, dass 
das fixe Kind es nicht verstellt wäre eine "Codeabfrage" denkbar.

Grüße
gabunz

von Christian S. (chris02)


Lesenswert?

Aus meiner Sicht ist da einfach die PowerBank ungeeignet. Wieso sollte 
man hierfür eine extra Softwareversion schaffen?

Meistens lassen sich die PowerBanks Recht leicht öffnen. Guck doch Mal 
rein, evtl hast du eine Strommessung über einen Shunt oder andere 
Beschaltung, welche du ruckzuck anpassen kannst.

von Stefan F. (Gast)


Lesenswert?

Die Idee, den Lastwiderstand pulsierend an die Powerbank anzulegen ist 
nicht neu. Irgendwo habe ich das als komplettes Projekt mit 
Dokumentation gesehen.

Dazu brauchst du nicht einmal einen Transistor, denn die I/O Pins der 
AVR Mikrocontroller vertragen 40mA, das sollte genügen.

Wenn etwas weniger Strom reicht, kann man dazu vermutlich einfach den 
TxD Ausgang des Mikrocontrollers verwenden.

von Klaus R. (klaus2)


Lesenswert?

...die Strom- bzw Verbrauchermessung ist bei den einfachen PBs 
(schätzungsweise damit der Großteil der hier verwendeten!) im für diesen 
Zwekc hochintegrierten Chip enthalten. Forget it (falls das damit nicht 
klar sein sollte). Es reichen oft WENIGE xx mA bei den SO8 Spezial-Chips 
um "aktiv" zu triggern.

Klaus.

: Bearbeitet durch User
von Christian S. (chris02)


Lesenswert?

Habe zu dem Thema auch nochmal ein wenig gegoogelt. Der von Stefanus 
angeaprochener Threads sollte der hier sein.

Beitrag "Powerbank-Shut-Off überlisten"

Ansonsten einen einfachen mosfet nehmen und einen pulldown gegen Masse 
schalten.

Der attiny kommt mit seinen Pins langsam an die Grenze, aber auch ein 
arduino für wenig Geld und schon inkl. USB Schnittstelle tut hier seinen 
Dienst. Werde hierzu meinen Aufbau Mal übernächste Woche Posten, dann 
habe ich hoffentlich alles zusammen.

von N. B. (gabunz)


Lesenswert?

Christian S. schrieb:
> Aus meiner Sicht ist da einfach die PowerBank ungeeignet. Wieso sollte
> man hierfür eine extra Softwareversion schaffen?

Nun, man muss es nicht, aber man kann es. Zudem hätte es den Vorteil, 
dass man die Software nur einmal anpasst, eine kleine, wenige Cent 
kostende Schaltung integriert und ich und jeder andere sich keine 
Gedanken mehr um die Powerbank machen muss. Zwei Widerstände, ein 
Transistor oder Mosfet und gut iss. Hab derzeit einen 57 Ohm Widerstand 
in der Versorgungsspannung hängen, der mir etwa 87mA unnütz verbrät. 
Alle 5 Sek. einen kurzen 0,5 Sek.-Impuls am Attiny-Ausgang erzeugen, 
würde diesen Verbrauch auf umgerechnet <10mA Dauerlast senken.

> man hierfür eine extra Softwareversion schaffen?

müsste man gar nicht. Man könnte das mit einbauen und in der Software 
nach bedarf toggeln. Genug Speicher sollte noch da sein.

vg

von Irenäus B. (Gast)


Lesenswert?

Pin 1 ist ja noch ungenutzt... wäre der dafür geeignet?

von Christian S. (chris02)


Lesenswert?

OK, ihr habt mich mit der SW Variante überzeugt. :D Mal gucken was meine 
PowerBank nach dem Zusammenbau des Players macht, ich werde berichten .

Pin 1 ist auch als IO verwendbar. Wenn du das eingestellt hast, kannst 
du den attiny danach aber nicht mehr per SPI programmieren. Also eher 
schlecht. Du brauchst einen HV programmer um dies zurück setzen zu 
können.
Evtl gibt's da Möglichkeiten eines speziellen Bootloaders?


Aber was spricht gegen einen größeren Controller? Der Preis bei 1St ist 
es wohl nicht.

: Bearbeitet durch User
Beitrag #5622297 wurde vom Autor gelöscht.
von Irenäus B. (Gast)


Lesenswert?

Erneutes Löten :)

Ansonsten erstelle ich einfach eine zweite Mini-Platine mit einem 
weiteren Attiny85, Transistor und Widerständen.

Hat sonst schon jemand die aktuelle Software von ghmartin77 getestet? 
Tim und ich haben ja Probleme mit dem Folder 01

Beitrag #5622490 wurde von einem Moderator gelöscht.
von ghmartin77 (Gast)


Lesenswert?

Hallo zusammen,

Danke für die Fehlermeldung mit Folder 1. War ein Timing-Problem. Hatte 
die neue Variante nur mit einem Arduino Nano probiert, der etwas länger 
zum Startup benötigt als der ATTiny. Letzterer will dann bereits die 
Anzahl der Files im ersten Folder vom DFPlayer wissen, wenn der Player 
noch nicht initialisiert ist, kriegt keine korrekte Anzahl und geht von 
0 Files aus. Das führt dazu, dass man nur das erste im Ordner enthaltene 
File abspielen kann.
Hab ein paar Pausen und Retries eingebaut.

--> Einen Fix findet ihr im GitHub-Repo.

Die Sache mir dem KeepAlive der Powerbank finde ich ganz interessant. 
Der Reset-Pin eignet sich nicht, weil dann erneutes Flashen "unbequem" 
ist (wie oben bereits erwähnt). Allerdings hatte ich ja weiter oben 
schon angemerkt, dass internes und externes Lautstärken-Poti bei 
cleverer Verschaltung auch mit nur einem Pin auskämen. Damit hätte man 
einen Pin frei, um einen Mosfet zu triggern, der einen kurzen Peek-Strom 
aus der PowerBank zieht, um sie wach zu halten.

Lasst mal hören, ob ihr euch bereits was als Workaround gebastelt habt, 
oder ob noch Interesse an entsprechendem Code besteht.

Grüße
ghmartin77

von Christian S. (chris02)


Lesenswert?

ghmartin77 schrieb:
> Allerdings hatte ich ja weiter oben schon angemerkt, dass internes und
> externes Lautstärken-Poti bei cleverer Verschaltung auch mit nur einem
> Pin auskämen

Mir fällt das nur die Möglichkeit ein, die Potis mittels Multiplexer 
umzuschalten. Aber selbst dafür fehlt ein Digital Pin um den Multiplexer 
um zu schalten.

Schaltest du sie in Reihe, tastest du nur das Verhältnis ab und 
beeinflusst beide Lautstärken gegenseitig.

Die einzigen Möglichkeiten, die ich mit einem Attiny88 sehe sind
- interne LS per Software, was aber u.a. auf Reisen und auch sonst 
schlecht im Alltag umzusetzen ist (Meine Frau kann nicht mal eben neu 
Flashen)
- über einen Bootloader zu gehen. Aber hier habe ich auch nichts 
passendes gefunden um den ResetPin frei zu bekommen.

von Gabunz (Gast)


Lesenswert?

Christian S. schrieb:
> Mir fällt das nur die Möglichkeit ein, die Potis mittels Multiplexer
> umzuschalten. Aber selbst dafür fehlt ein Digital Pin um den Multiplexer
> um zu schalten.

Nun, was wäre mit der Option, eine Taste für 3 Sek. zu drücken,  dann 
die Tasten 1 - 11 abzufragen für die gewünschte Maximallautstärke? 
Genau so, wie auch der Sleep-modus eingestellt wird.

Das hätte den Vorteil, man braucht das interne Poti gar nicht --> 
weniger Lötarbeit. Auch muss das Kästchen nicht geöffnet werden für 
diese Einstellung.  Und nur der, der dann die Keep-Alive-Funktion 
braucht, der schaltet einen Widerstand am feiern Port an, der dann per 
Software periodisch ein- und ausgeschaltet wird.

Vg

von Hermann (Gast)


Lesenswert?

Hallo, in meinem player habe ich diese powerbank von Reichelt eingebaut
https://www.reichelt.de/powerbank-li-ion-4400-mah-usb-xlyne-x41-p153236.html?&trstct=pol_10
Die schaltet auch bei sehr kleinen Strömen von wenigen mA nicht ab.
Mit nur 5mA LED Last läuft die powerbank durch.
Gruß Hermann

von Tim (Gast)


Lesenswert?

ghmartin77 schrieb:
> --> Einen Fix findet ihr im GitHub-Repo.

Die Version funktioniert bei mir nicht.
Der Player ist mit keiner Taste zum Leben zu erwecken...

von ghmartin77 (Gast)


Lesenswert?

Hi Tim,

bitte hilf mir, das etwas einzugrenzen. Wenn ich Dich recht verstehe, 
dann

1) ...lief die Version vom 11.11. 
(https://github.com/ghmartin77/KidsMP3Player/tree/c1f444d317912c850930e528ac0618a07d701efd) 
grundsätzlich gut bei Dir, nur über Taste 1 konntest Du nur den ersten 
Track abspielen.

2) ...läuft die jetzige Head-Version aus dem Repo bei Dir gar nicht bei.

3) Aussagen #1+#2 beziehen sich jeweils auf die selbe Hardware.

So richtig?
Kannst Du mir bitte noch die Chipbezeichnung Deines DFPlayers nennen?

Danke Dir!

Grüße
ghmartin77

von Irenäus B. (irenaeusbecker)


Lesenswert?

Hallo Tim, ghmartin77,

habe heute mal den aktuellen Code aus dem Repo auf den Attiny85 
hochgeladen. Bei mir klappt alles wunderbar, sprich kann nun Folder 01 
auch wieder durchklicken.

Danke

von ghmartin77 (Gast)


Lesenswert?

Hallo Irenäus,

Danke für die Rückmeldung.

Irenäus B. schrieb:
> Bei mir klappt alles wunderbar, sprich kann nun Folder 01
> auch wieder durchklicken.

Genau so war mein Fix auch beabsichtigt :)

Mal sehen, was Tim noch berichtet, dass wir das bei ihm bestehende 
Problem weiter einkreisen können...

Grüße
ghmartin77

von Tim (Gast)


Lesenswert?

ghmartin77 schrieb:
> 1) ...lief die Version vom 11.11.
> 
(https://github.com/ghmartin77/KidsMP3Player/tree/c1f444d317912c850930e528ac0618a07d701efd)
> grundsätzlich gut bei Dir, nur über Taste 1 konntest Du nur den ersten
> Track abspielen.
>
RICHTIG!
>
> 2) ...läuft die jetzige Head-Version aus dem Repo bei Dir gar nicht bei.
>
Richtig! Keine Reaktion vom Player.
>
> 3) Aussagen #1+#2 beziehen sich jeweils auf die selbe Hardware.
>
> So richtig?

Richtig!

> Kannst Du mir bitte noch die Chipbezeichnung Deines DFPlayers nennen?

DFROBOT LISP3
XY8002D 170721

Aktuell läuft der Player mit der Version, bei der in Folder 1 das 
Wiederanspielen nicht funktioniert, recht gut.

So langsam verlier ich den Überblick mit den ganzen  Versionen...

von ghmartin77 (Gast)


Lesenswert?

Hi Tim,

seltsam, seltsam.
Ich stell mal noch ein paar Fragen (bis auf 1+2 alle in Bezug auf die 
Head-Version aus dem GitHub-Repo):

1) Wie lange benötigt Dein Player ungefähr mit der Variante, die 
funktioniert, bis ein erster Ton aus dem Lautsprecher erklingt?

2) Sind in Deinem Folder 01 viele oder große Files enthalten? Entspricht 
das Benennungsmuster den Vorgaben? 001.mp3, 002.mp3 usw.?

3) Was passiert, wenn Du die Files aus Folder 02 in den zuvor geleerten 
Folder 01 kopierst?

4) Was passiert, wenn Du nur ein File 001.mp3 in den Folder 01 kopierst?

5) Was passiert, wenn Du den Folder 01 komplett leer lässt?

Grüße
ghmartin77

von Irenäus B. (irenaeusbecker)


Lesenswert?

Gerade nochmal mit einem zweiten Attiny gecheckt und folgendes in Zeile 
208 eingebaut:

player.playFolderTrack(20, 1);
delay(2000);

Fluppt alles wunderbar.

Tim, wird denn dein Attiny fehlerfrei beschrieben / überschrieben?

von Tim (Gast)


Lesenswert?

ghmartin77 schrieb:
> Ich stell mal noch ein paar Fragen (bis auf 1+2 alle in Bezug auf die
> Head-Version aus dem GitHub-Repo):
>
> 1) Wie lange benötigt Dein Player ungefähr mit der Variante, die
> funktioniert, bis ein erster Ton aus dem Lautsprecher erklingt?
>
Sieben Sekunden

> 2) Sind in Deinem Folder 01 viele oder große Files enthalten? Entspricht
> das Benennungsmuster den Vorgaben? 001.mp3, 002.mp3 usw.?
>
45 Tracks mit ca. 4MB je Track

> 3) Was passiert, wenn Du die Files aus Folder 02 in den zuvor geleerten
> Folder 01 kopierst?
>
Dann funktioniert es !!???!!!!

> 4) Was passiert, wenn Du nur ein File 001.mp3 in den Folder 01 kopierst?
>
> 5) Was passiert, wenn Du den Folder 01 komplett leer lässt?

Komisch, hab jetzt alles mögliche probiert. Folder 1 leer, nur ein 
Track, mehrere Tracks -> Keine Funktion.
Seit ich die Tracks von Folder 2 in 2´1 kopiert habe, scheint es zu 
funktionieren!

Edit:
Kopiere ich dann allerdings die 45Tracks wieder zurück in Folder 1, geht 
nix mehr...

von ghmartin77 (Gast)


Lesenswert?

Hi Tim,

sieht mir nach einem Timing-Issue aus. Probier mal bitte folgendes:
Ersetze bitte Zeile 115 durch folgenden Code:
1
delay(1000);
2
softSerial.setTimeout(2000);

Grüße
ghmartin77

von Tim (Gast)


Lesenswert?

ghmartin77 schrieb:
> Ersetze bitte Zeile 115 durch folgenden Code:delay(1000);
> softSerial.setTimeout(2000);

Zeile 115 = delay(250); ???

ersetzen durch:
(Zeile 115:) delay(1000);
(Zeile 116:) softSerial.setTimeout(2000);

Bin ich da richtig?

von ghmartin77 (Gast)


Lesenswert?

Tim schrieb:
> Bin ich da richtig?

Absolut und total...

von Tim (Gast)


Lesenswert?

ghmartin77 schrieb:
> Ersetze bitte Zeile 115 durch folgenden Code:delay(1000);
> softSerial.setTimeout(2000);

Funktioniert trotzdem nicht. Player ohne Reaktion.

von Irenäus B. (irenaeusbecker)


Lesenswert?

Tim, hast du mal die MP3 Dateien aus Folder 01 geprüft? Hat da eine 
Datei ggfs. eine komische Bitrate etc? Ist ja schon auffällig, dass die 
Dateien aus Folder 02 in Folder 01 funktionieren.

Sonst mach mal eine Rekodierung mit Audiograbber etc.

von Tim M. (brotzeit)


Lesenswert?

In Folder 2 waren auch nur vier Tracks.
Ich vermute es liegt an der Menge der Dateien.
Bei der älteren Version werden die Files ja aucn abgespielt...

von Ronny S. (dr_bal)



Lesenswert?

So langsam geht es wieder weiter. Hatte die letzten 3 Wochen keine Zeit.

der Originale DFPlayer ist auch bestellt.

Ich habe jetzt noch 4 LEDs für den Akkustand der Powerbank integriert. 
Dafür ist dann das Plexiglasteil.

Mal schauen ob ich die Originale Anzeige verwende oder sogar ws2812b 
LEDs mit Farbfunktion. Dann könnten diese in der Farbe der jeweiligen 
Playlist Leuchten ;-)

Frontplatte werde ich wohl noch einmal neu machen müssen, da hat die 
Fräse nicht gut gearbeitet.

noch viel schleifarbeit :-)

: Bearbeitet durch User
von Irenäus Becker (Gast)


Angehängte Dateien:

Lesenswert?

WoW, schaut sehr professionell aus. Ist das mit einer CNC-Fräse 
hergestellt? Hast du da einen Hersteller bzw. Modell-Tipp für die 
Zukunft etc oder kannst du sogar diesen Bären bei Interesse herstellen 
und verschicken? Natürlich gegen Vergütung!

Ich selbst bin nun auch mit der "Mädels"-Version fertig und habe heute 
alles fertigestellt. Siehe Fotos.

Im Grunde hat sich mein Powerbank-Problem von selbst erledigt, da diese 
keinen Verpolungsschutz hatte und damit direkt (durch 5V !) zerstört 
wurde. Habe eine neue besorgt, die auch problemlos mit 30-40mAh 
Verbrauch funktioniert: https://www.ebay.de/itm/173589965885

von Stefan F. (Gast)


Lesenswert?

Ich fine die versetzten Kanten auf der Front-Seite irritierend.

von Tim M. (brotzeit)


Lesenswert?

Irenäus Becker schrieb im Beitrag
> Ich selbst bin nun auch mit der "Mädels"-Version fertig und habe heute
> alles fertigestellt.

Und wieder ein Player fertig, wunderbar.
Jetzt noch die Kanten etwas verrunden, und vorsicht dass der Griff nicht 
abbricht.
Kinder sind gnadenlos mit dem Player, ruck zuck ist da was hinüber!
Welchen Lautsprecher hast du verbaut?

Die CAD-Daten von dem Bär könnte ich auch brauchen ;-)

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Tim M. schrieb:
> Welchen Lautsprecher hast du verbaut?

ich, ich, ich, ich weiß es :-)

Visaton FR 8

von Tim M. (brotzeit)


Lesenswert?

Vermutlich Art. Nr. 2008 bei 8Ohm!?

Haut das hin mit den 10Watt?  Da sollte doch der Player in die Knie 
gehen!?

von Irenäus Becker (Gast)


Lesenswert?

Hi,

die Kanten habe ich vorhin nochmal geschliffen und natürlich diese 
Multiplex-Kante geölt. Sieht jetzt noch etwas besser aus.

Der FR8 hat ja dieselben Leistungsdaten wie der SC5.9; ehrlicherweise 
ist der voll aufgedreht sehr laut, der DF hat das auch ohne Probleme 
durchgehalten; demnach bin ich aber froh, dass die Lautstärke über den 
zweiten Poti reduziert wird. (@Martin: Danke für dieses tolle Feature in 
der Planung!)
Ist ja für schließlich auch für Kinder gedacht; insofern mache ich mir 
da keine Sorgen. Falls der DF doch mal defekt ist, habe ich hier noch 
einen Backup-DF für 5€ rumfliegen.

@Stefanus: Im Grunde ist es Geschmackssache; ich wollte erst die 
Anleitung 1:1 mit Ikea-Rahmen nachbauen, aber dann hat meine Frau ein 
ähnliches Design bei Hoerbert-Nachbauten gefunden... da durfte ich dann 
umplanen. Anfangs war das Gehäuse einfach nur geölt, wir haben es dann 
noch nachlasiert. Deshalb sieht es ein wenig "Shabby" aus... sieht aber 
in Natura viel besser aus als auf den Fotos.

@Tim: Mir persönlich gefällt der runde Lautsprecher optisch besser als 
der SC5.9/4.7. Klanglich reicht der VIS FR 8-8 vollkommen aus!

@Tim #2: Der Griff ist verleimt und von unten mit zwei Schrauben 3x16mm 
verschraubt; bin selber gespannt wie lange der halten wird ;)

von Irenäus Becker (Gast)


Lesenswert?

Hallo Martin,

habe doch nochmal eine Frage... "Continuous Play ON/OFF" meint, dass die 
Lieder im Folder kontinuierlich durchgespielt werden, korrekt?

Gäbe es eine Möglichkeit bei PowerON das Lied ab der letzten 
abgespielten Position weiter abzuspielen? Die DFMiniMp3 Bibliothek hilft 
mir da nicht weiter... und Dr. Google findet leider auch nichts.

VG
Irenäus

von ghmartin77 (Gast)


Lesenswert?

Irenäus Becker schrieb:
> eine Möglichkeit bei PowerON das Lied ab der letzten
> abgespielten Position weiter abzuspielen?

Hi Irenäus,

das kann der DFPlayer leider nicht. Das höchste der Gefühle ist der 
bereits eingebaute Wiederanlauf des zuletzt spielenden Tracks. Dieser 
aber von Anfang an. Die Spielposition kann man sich weder merken noch 
beim Abspielen anspringen.

Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

Irenäus Becker schrieb:
> "Continuous Play ON/OFF" meint, dass die
> Lieder im Folder kontinuierlich durchgespielt werden, korrekt?

Genau das heisst es. Zusätzlich gibt es noch die Einstellung zur 
Endlosschleife innerhalb einer Playlist, die separat aktiviert werden 
kann.

Siehe auch Seite 4 der deutschsprachigen Anleitung:
https://github.com/ghmartin77/KidsMP3Player/blob/master/assets/Manual%20German.pdf

Grüße
ghmartin77

von Ronny S. (dr_bal)


Lesenswert?

Irenäus Becker schrieb:
> WoW, schaut sehr professionell aus. Ist das mit einer CNC-Fräse
> hergestellt? Hast du da einen Hersteller bzw. Modell-Tipp für die
> Zukunft etc oder kannst du sogar diesen Bären bei Interesse herstellen
> und verschicken? Natürlich gegen Vergütung!
>

Hi ja mit einer Eigenbau Größe habe ich die Sachen gegrüßt und dann 
zusammengeklebt.

Wie groß sollte der Teddy werden? Auch mit dem Lautsprecherloch?

von Ronny S. (dr_bal)


Lesenswert?

Hi,

Ich habe heute die Akkuanzeige integriert.

Der Arduino Nano misst die Spannung des Akkus und zeigt diese mittels 4 
ws2812 LEDs an.

Zusätzlich habe ich es jetzt so programmiert, dass die LEDs anzeigen 
welche Playlist, also welche Knopfarbe gerade spielt.

Hier ein kleines Video dazu:

https://youtu.be/DxMN2CIl4x8

Vg
Ronny

von Irenäus B. (Gast)


Lesenswert?

Hi,

Coole Idee. Ich darf wohl nächstes Jahr ein zweites bauen. Magst du hier 
ggfs den Code und die Verkabelung mit dem Nano teilen?

VG
Irenäus

von Ronny S. (dr_bal)


Angehängte Dateien:

Lesenswert?

Irenäus,

Klar habe mal das Repository von Martin geforked.

Ich werde den code Mail bei gelegenheit aktualisieren.

https://github.com/ronbal/KidsMP3Player


Bin gerade am lackieren.

von Steffen R. (steffenrahm)


Lesenswert?

Hallo,

ich bräuchte etwas Hilfe.

Ich habe mir ein Attiny85 von digispark gekauft ( wie oben beschrieben) 
funktioniert dieser (scheinbar) nicht mit softwareserial.
Auch mit softserial habe ich keine Lösung hinbekommen.

Könnte mir jmd. einen Tipp/ Hilfe geben?

Vielen Dank im voraus!!!

Generell auch ein Danke für dieses Projekt!


MfG
Steffen

von ghmartin77 (Gast)


Angehängte Dateien:

Lesenswert?

Hi Steffen,

Settings anbei sind IMHO die relevanten: 8MHz internal + danach 
Bootloader brennen, um die Fuses entsprechend zu setzen. Danach frisch 
compilieren und Code hochladen. Bild aus der ArduinoIDE im Anhang.

Um rauszufinden, ob dir damit tatsächlich geholfen werden kann, müsstest 
du aber noch ein paar Details rauslassen:
1) Wie kommst du drauf, dass Softserial bei dir nicht geht?

2) Welches Setup hast du? Geht's auch um ein Abspielgerät mit DFPlayer?

3) Wie äußert sich "geht nicht" konkret?

Grüße
ghmartin77

von Florian R. (flo1234)


Lesenswert?

Hallo,

ich würde gerne meinen Player noch um eine Kopfhörerbuchse erweitern. 
Ich habe gesehen, dass es Klinkenbuchsen mit Schaltkontakt gibt:
https://m.aliexpress.com/item/32737039341.html

Haltet ihr es für möglich die Kopfhörerbuchse parallel zum Lautsprecher 
anzuschließen und  eine Leitung zum Lautsprecher über den Öffnerkontakt 
der Buchse zu führen? Wenn dann ein Kopfhörer eingesteckt wird sollte 
doch der Lautsprecher stumm werden, oder?

Gruß Florian

von Tim M. (brotzeit)


Lesenswert?

Da bin ich auch grad dran...
Der Player hat ja nen Kopfhörerausgang, und theoretisch sollte man den 
Öffnerkontakt der Buchse zum Unterbrechen der Lautsprecherleitung 
verwenden können.
Hab nur Bedenken das beim Einstecken ein Kurzschluss entstehen 
könnte!???

von Florian R. (flo1234)


Lesenswert?

Ich hab mir jetzt die Buchsen bestellt, ich probiere dann Mal ein 
bisschen rum. Ich würde vermutlich den Lautsprecherausgang auch für für 
Kopfhörer nehmen, dann dürfte es ja auch keinen Kurzschluss geben, oder?

von Klaus R. (klaus2)


Lesenswert?

Das wird aber evtl zu laut! Da müssen ggf zusätzl Widerstände in die + 
Leitung, vll 150 Ohm.

Klaus.

von Florian R. (flo1234)


Lesenswert?

Klaus R. schrieb:
> Das wird aber evtl zu laut! Da müssen ggf zusätzl Widerstände in die +
> Leitung, vll 150 Ohm.
>
> Klaus.

Okay, d.h. besser den Kopfhörer an die DAC_R /DAC_L -Ausgänge, oder?

von Irenäus Becker (Gast)


Lesenswert?

Hallo Florian,

die Idee ist super. Kannst du später nach dem Test hier deine Ergebnisse 
teilen?

Danke vorab!

von Florian R. (flo1234)


Lesenswert?

Hallo,
ja das mache ich gerne. Wird aber dauern, da ich die Buchsen in China 
bestellt habe.
Gruß Florian

von Klaus R. (klaus2)


Lesenswert?

...da nimmt man irgend nen e-schrott und baut die da aus - feddich.

Klaus.

von Jan H. (heidi87)


Lesenswert?

Moin Moin,

Ich hab alles so gebaut wie es beschrieben wurde.
Soweit funktioniert es auch.
Ich hab jedoch das Problem das sporadisch die Tracks stehen bleiben.
Dann muss ich einmal einen Neustart durchführen um weiter Abspielen zu 
können. Es gibt auch keinen definierten Zeitpunkt wann ein Der Stopp 
kommt.

Ich würde mich über Unterstützung freuen.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Jan H. schrieb:
> Ich hab jedoch das Problem das sporadisch die Tracks stehen bleiben.

Ich hatte mal eine Powerbank, die ca. alle 40s kurz ausgeschaltet hat.

von Jan H. (heidi87)


Lesenswert?

Das könnte ich ja mal prüfen, Danke. Es passiert nicht immer, aber schon 
so häufig das es nervt.

Ich habe es geprüft, die Powerbank schaltet nicht ab. Die 5v liegen an, 
wenn abgeschaltet wird.

: Bearbeitet durch User
von Irenäus B. (Gast)


Lesenswert?

Hast du denn mal mit einem usb Netzteil gegengeprüft?

Lötstellen auch alle ok?

von ghmartin77 (Gast)


Lesenswert?

> Es gibt auch keinen definierten Zeitpunkt wann ein Der Stopp kommt.

Hi Jan,

lässt sich denn sagen, ob es mitten im Audiotrack aufhört oder beim 
Übergang zum nächsten (continuous play)?

Ist es evtl. lautstärkenabhängig? Der DFPlayer steigt zuweilen aus, wenn 
er zuviel (Audio-)Leistung liefern soll...

Hat Dein Lautsprecher 8Ohm? Weniger (e.g. 4Ohm) ist nicht besser, 
sondern zieht mehr Saft aus dem Verstärker des DFPlayer, was dessen 
Reset begünstigt.

Schon eine andere Spannungsversorgung probiert? Z.B. ein USB-"Netzteil"?
Wie ist das Verhalten dann?

Welche Softwarevariante hast Du im Einsatz (GitHub-SHA des Commits)? 
Hast Du Änderungen vorgenommen? Gebaut mit ATTiny oder mit Arduino? 
Fuses richtig gesetzt (8MHz bei ATTiny)?

Grüße
ghmartin77

von Jan H. (heidi87)


Lesenswert?

Hallo ghmartin77,

danke für die schnelle Rückmeldung.

>lässt sich denn sagen, ob es mitten im Audiotrack aufhört oder beim
Übergang zum nächsten (continuous play)?

Die Abbrüche geschehen mitten im Audiotrack.

>Ist es evtl. lautstärkenabhängig? Der DFPlayer steigt zuweilen aus, wenn
er zuviel (Audio-)Leistung liefern soll...

Ich habe die Lautstärke auf niedrigster Stufe auf dem Kinderpoti und 
knapp unter der Hälfte auf dem Elternpoti.
Ich muss mal verschiedene Lautstärke situationen testen um eine genaue 
Aussage treffen zu können.

>Hat Dein Lautsprecher 8Ohm? Weniger (e.g. 4Ohm) ist nicht besser,
sondern zieht mehr Saft aus dem Verstärker des DFPlayer, was dessen
Reset begünstigt.

Ich habe den 8ohm Lautsprecher von Visaton (FR10HM) drin.

>Schon eine andere Spannungsversorgung probiert? Z.B. ein USB-"Netzteil"?
Wie ist das Verhalten dann?

Werde ich testen.

>Welche Softwarevariante hast Du im Einsatz (GitHub-SHA des Commits)?
Hast Du Änderungen vorgenommen? Gebaut mit ATTiny oder mit Arduino?
Fuses richtig gesetzt (8MHz bei ATTiny)?

Ich habe einen ATTiny 85 benutzt. Die "Fuses" habe ich auf 8Mhz gesetzt.
Die einzige Änderung die ich gemacht habe, ist die Zuordnung der Taster, 
sonst habe ich im Text nichts geändert.
Die Softwareversion ist die vom 11.11.2018.

Ich melde mich sobald ich das 5v Netzteil getestet habe.

beste Grüße und vielen Dank

Jan

: Bearbeitet durch User
von ghmartin77 (Gast)


Lesenswert?

> Die Abbrüche geschehen mitten im Audiotrack.

Dann ist irgendetwas in der Ecke des DFPlayers nicht koscher. Der spielt 
autark. Wenn er mittendrin aufhört, hat der entweder nen Schlag oder die 
Stromversorgung ist nicht durchgehend stabil:
-kalte Lötstelle
-Powerbank geht kurz aus (oder deren Spannung bricht signifikant ein). 
Jenachdem, mit was Du gemessen hast, geht das schnell genug, dass Du das 
nicht sehen kannst. Voltmeter reicht da nicht, da zu träge.

Vorschläge (in der Reihenfolge):
-Test mit USB-Netzteil
-Lötstellen checken
-"Dicker" Kondensator über VCC und GND des DFPlayers (1000uF)
-DFPlayer austauschen

Good Luck!

Grüße
ghmartin77

von Jan H. (heidi87)


Lesenswert?

Moin Moin,

Dank diverser Hinweise konnte ich das Problem finden.
Es wird wohl die Spannungsversorgung sein.
Ich habe mit einem Netzteil 1h versucht den Fehler zu reproduzieren, 
jedoch ohne Erfolg!
Nun kann ich mir eine neue Powerbank suchen.
Hat jemand dazu einen Tip?
Ich vermute das der Stromverbrauch von ca. 50-60mA zu gering ist und die 
Powerbank dann abschaltet.

Ich bedanke mich vielmals bei allen die sich Gedanken zu dem Problem 
gemacht haben.

Ich würde auch gern ghmartin77 danken der dieses Projkt veröffentlicht 
hat und immernoch super unterstützt!

vielen Dank dafür.

von Irenäus Becker (Gast)


Lesenswert?

Hi,

habe mir vor Weihnachten die folgende geholt, läuft absolut problemlos. 
Kapazität nach ca. 20h Gebraucht immer noch 3 von 4 LEDs.

https://www.ebay.de/itm/173589965885?ul_noapp=true

VG

von Daniel Frei (Gast)


Lesenswert?

Hallo,

ich bin auch dran den MP3 Player für meinen Sohn nachzubauen.

Ich hab mir mal die Mühe gemacht und eine Einkaufsliste geschrieben.

Vielleicht kann ja mal der ein oder andere drüber schauen ob das alles 
so passt. Die Widerstände für die Schalter hab ich auf 10kOhm angepasst, 
da diese ja auf dem Bild so verbaut sind.

Das Feature mit der Anzeige der RGB Led's welche Playlist läuft ist da 
noch nicht drin.
Wo finde ich das, wie es intergriert und umgesetzt ist?

Gruß
Daniel

------------------------------------------------------------------------ 
---

Einkaufsliste

1x ATTiny 85
https://www.reichelt.de/mcu-attiny-avr-risc-8-kb-20-mhz-pdip-8-attiny-85-20-pu-p69299.html?&trstct=pol_1

1x Stecksockel 8-polig für ATTiny
https://www.reichelt.de/ic-sockel-8-polig-doppelter-federkontakt-gs-8-p8230.html?&trstct=dnrtcl_ldsldr

1x DFRobot DFPlayer Mini
https://de.banggood.com/DFPlayer-Mini-MP3-Player-Module-For-Arduino-p-969191.html?akmClientCountry=DE&gmcCountry=DE&currency=EUR&createTmp=1&cur_warehouse=CN
https://www.dfrobot.com/product-1121.html

1x Poti 10kΩ (R2) externe Lautstärke
https://www.reichelt.de/drehpotentiometer-10-kohm-linear-6-mm-pih-pc16ip06103a-p232581.html?&trstct=pos_2

1x Knopf für Poti
https://www.reichelt.de/potentiometerknopf-fuer-achse-6-mm-silber-knopf-17-6-al-p42122.html?&trstct=pos_0

1x Poti 10kΩ (R1) interne Lautstärke
https://www.reichelt.de/trimmpotentiometer-10-kohm-linear-pih-pt6kv103apm-p232375.html?&trstct=pol_0

1x Widerstand 1/2W 1kΩ 5% (R3)
https://www.reichelt.de/widerstand-kohleschicht-1-0-kohm-0411-500-mw-5-k-o-rd12jn102t52-p237432.html?&trstct=pol_0

11x Widerstand 1/2W 10kΩ 5% (R4-R14)
https://www.reichelt.de/widerstand-kohleschicht-10-kohm-0411-500-mw-5-k-o-rd12jn103t52-p237431.html?&trstct=pol_0

11x Taster mit Abdeckkappen
https://de.aliexpress.com/item/9-arten-50-st-cke-Tactile-Push-Button-Switch-Momentary-12-12-7-3mm-Micro-schalter/32875020597.html?spm=a2g0x.search0104.3.1.52de37a3DrOJr6&ws_ab_test=searchweb0_0%2Csearchweb201602_1_10320_10065_10068_10547_319_317_10548_10696_453_10084_454_10083_433_10618_431_10304_10307_10820_10821_537_10302_536_10843_10059_10884_10887_100031_10319_321_322_10103%2Csearchweb201603_35%2CppcSwitch_0&algo_pvid=aff242c1-8336-40de-96e9-620a1b61445d&algo_expid=aff242c1-8336-40de-96e9-620a1b61445d-0

1x Kondensator 100nF (C1)
https://www.reichelt.de/Scheiben/2/index.html?ACTION=2&LA=2&GROUPID=3169;SID=95XDcoQawQAT8AAAXVdCM1c9109785fd366845f3597895eb15bd5

1x Ein/Aus 1-polig Schalter
https://www.reichelt.de/wippenschalter-rund-1x-ein-aus-ws-r13-112-aaaa-p105442.html?&trstct=pos_4

2x Buchsenleiste 8polig für DFPlayer Mini
https://www.reichelt.de/rnd-buchsenleiste-8-pol-rm-2-54-mm-rnd-205-00648-p208874.html?&trstct=pos_6

4x Stiftleiste 3 polig, für Lautstärke, Schalterfeld, Ein-Aus Schalter
https://www.reichelt.de/rnd-stiftleiste-3-pol-rm-2-54-mm-rnd-205-00624-p208850.html?&trstct=pol_11

1x Anschluss Lautsprecher
https://www.reichelt.de/ps-unterteil-2-pol-gerade-weiss-ps-25-2u-w-p208096.html?&trstct=pol_13
https://www.reichelt.de/ps-oberteil-2-pol-mit-kabel-25cm-weiss-ps-25-2o-w-p208092.html?&trstct=pol_9

1x Micro USB Anschluss zum Powerbank laden
https://de.aliexpress.com/item/Micro-USB-5pin-Micro-USB-2-0-Stecker-auf-Micro-USB-2-0-Weibliche-Verl-ngerungskabel/32855632646.html?spm=a2g0x.search0104.3.121.139f739f9V50UK&ws_ab_test=searchweb0_0%2Csearchweb201602_1_10320_10065_10068_10547_319_317_10548_10696_453_10084_454_10083_433_10618_431_10304_10307_10820_10821_537_10302_536_10843_10059_10884_10887_100031_10319_321_322_10103%2Csearchweb201603_35%2CppcSwitch_0&algo_pvid=0df2f57e-1932-459e-976a-a583bc5cda1f&algo_expid=0df2f57e-1932-459e-976a-a583bc5cda1f-17

1x Powerbank
https://www.reichelt.de/powerbank-li-ion-4400-mah-usb-xlyne-x41-p153236.html?&trstct=pol_10

von egberto (Gast)


Lesenswert?

Lautsprecher?

von ghmartin77 (Gast)


Lesenswert?

Hi Daniel,

+SD-Karte
(evtl. +Arduino, falls du nicht schon einen (oder etwas Gleichwertiges) 
zum Flashen haben.)

Falls du das Feature mit den LEDs umsetzen möchtest, solltest du einen 
ATTiny8*4* oder einen Arduino nehmen (jeweils nebst dazu passendem 
Sockel resp. Sockelleisten). Die Pins am 85er reichen dafür nicht.

Viele Grüße
ghmartin77

von Daniel Frei (Gast)


Lesenswert?

Dann erweiter ich die Sachen die noch benötigt werden. Lautspreche hatte 
ich nicht mit drin, da ich den schon daheim hatte.

--------------------------------------------------------------------


Einkaufsliste

1x ATTiny 85
https://www.reichelt.de/mcu-attiny-avr-risc-8-kb-20-mhz-pdip-8-attiny-85-20-pu-p69299.html?&trstct=pol_1

1x Stecksockel 8-polig für ATTiny
https://www.reichelt.de/ic-sockel-8-polig-doppelter-federkontakt-gs-8-p8230.html?&trstct=dnrtcl_ldsldr

1x DFRobot DFPlayer Mini
https://de.banggood.com/DFPlayer-Mini-MP3-Player-Module-For-Arduino-p-969191.html?akmClientCountry=DE&gmcCountry=DE&currency=EUR&createTmp=1&cur_warehouse=CN
https://www.dfrobot.com/product-1121.html

1x Poti 10kΩ (R2) externe Lautstärke
https://www.reichelt.de/drehpotentiometer-10-kohm-linear-6-mm-pih-pc16ip06103a-p232581.html?&trstct=pos_2

1x Knopf für Poti
https://www.reichelt.de/potentiometerknopf-fuer-achse-6-mm-silber-knopf-17-6-al-p42122.html?&trstct=pos_0

1x Poti 10kΩ (R1) interne Lautstärke
https://www.reichelt.de/trimmpotentiometer-10-kohm-linear-pih-pt6kv103apm-p232375.html?&trstct=pol_0

1x Widerstand 1/2W 1kΩ 5% (R3)
https://www.reichelt.de/widerstand-kohleschicht-1-0-kohm-0411-500-mw-5-k-o-rd12jn102t52-p237432.html?&trstct=pol_0

11x Widerstand 1/2W 10kΩ 5% (R4-R14)
https://www.reichelt.de/widerstand-kohleschicht-10-kohm-0411-500-mw-5-k-o-rd12jn103t52-p237431.html?&trstct=pol_0

11x Taster mit Abdeckkappen
https://de.aliexpress.com/item/9-arten-50-st-cke-Tactile-Push-Button-Switch-Momentary-12-12-7-3mm-Micro-schalter/32875020597.html?spm=a2g0x.search0104.3.1.52de37a3DrOJr6&ws_ab_test=searchweb0_0%2Csearchweb201602_1_10320_10065_10068_10547_319_317_10548_10696_453_10084_454_10083_433_10618_431_10304_10307_10820_10821_537_10302_536_10843_10059_10884_10887_100031_10319_321_322_10103%2Csearchweb201603_35%2CppcSwitch_0&algo_pvid=aff242c1-8336-40de-96e9-620a1b61445d&algo_expid=aff242c1-8336-40de-96e9-620a1b61445d-0

1x Kondensator 100nF (C1)
https://www.reichelt.de/Scheiben/2/index.html?ACTION=2&LA=2&GROUPID=3169;SID=95XDcoQawQAT8AAAXVdCM1c9109785fd366845f3597895eb15bd5

1x Ein/Aus 1-polig Schalter
https://www.reichelt.de/wippenschalter-rund-1x-ein-aus-ws-r13-112-aaaa-p105442.html?&trstct=pos_4

2x Buchsenleiste 8polig für DFPlayer Mini
https://www.reichelt.de/rnd-buchsenleiste-8-pol-rm-2-54-mm-rnd-205-00648-p208874.html?&trstct=pos_6

4x Stiftleiste 3 polig, für Lautstärke, Schalterfeld, Ein-Aus Schalter
https://www.reichelt.de/rnd-stiftleiste-3-pol-rm-2-54-mm-rnd-205-00624-p208850.html?&trstct=pol_11

1x Anschluss Lautsprecher
https://www.reichelt.de/ps-unterteil-2-pol-gerade-weiss-ps-25-2u-w-p208096.html?&trstct=pol_13
https://www.reichelt.de/ps-oberteil-2-pol-mit-kabel-25cm-weiss-ps-25-2o-w-p208092.html?&trstct=pol_9

1x Micro USB Anschluss zum Powerbank laden
https://de.aliexpress.com/item/Micro-USB-5pin-Micro-USB-2-0-Stecker-auf-Micro-USB-2-0-Weibliche-Verl-ngerungskabel/32855632646.html?spm=a2g0x.search0104.3.121.139f739f9V50UK&ws_ab_test=searchweb0_0%2Csearchweb201602_1_10320_10065_10068_10547_319_317_10548_10696_453_10084_454_10083_433_10618_431_10304_10307_10820_10821_537_10302_536_10843_10059_10884_10887_100031_10319_321_322_10103%2Csearchweb201603_35%2CppcSwitch_0&algo_pvid=0df2f57e-1932-459e-976a-a583bc5cda1f&algo_expid=0df2f57e-1932-459e-976a-a583bc5cda1f-17

1x Powerbank
https://www.reichelt.de/powerbank-

1x Lautsprecher beliebig mit 8 Ohm

1x passsende SD Karte

1x Arduino Uno oder ähnliches zum Flashen

--------------------------------------------------------------------

Wo finde ich die Files für das Feature mit den LED's?

von ghmartin77 (Gast)


Lesenswert?

> Wo finde ich die Files für das Feature mit den LED's?

Na, in den Commits von Ronnys geforktem Repo:
https://github.com/ronbal/KidsMP3Player/commits/master

von Daniel Frei (Gast)


Lesenswert?

Da kenn ich mich hier bzw. bei Github zu wenig aus.

Heißt ich geh auf den Link und nimm da dann die oberste Datei vom 
23.12.18.

Was bedeutet geforkt? Fork ist ja ne Gabel. Also eine Gabelung zu den 
von dir original erstellten Files?

von Christian S. (chris02)


Lesenswert?

Ronny S. schrieb:
> Hi,
>
> Ich habe heute die Akkuanzeige integriert.
>
> Der Arduino Nano misst die Spannung des Akkus und zeigt diese mittels 4
> ws2812 LEDs an.
>
> Zusätzlich habe ich es jetzt so programmiert, dass die LEDs anzeigen
> welche Playlist, also welche Knopfarbe gerade spielt.
>
> Hier ein kleines Video dazu:
>
> https://youtu.be/DxMN2CIl4x8
>
> Vg
> Ronny

Hast du auf der Rückseite für 20€ die MicroUSB Buchse vom Conrad 
spendiert? Zum Laden super geil aber der Preis für eine Buchse... Oder 
hast du eine andere Bezugsquelle?

Probleme, dass die Powerbank abschaltet hast du keine?

Ich muss auch unbedingt mal mein Layout uploaden. Habe eine 10x10 
Platine gemacht und einen Nano drauf gepackt. So spart man sich die 
verdrahterei. Allerdings hab ich noch nen Layout Fehler drin, den ich 
vorm Upload noch beheben wollte und da fehlt die Zeit für :-/

von Ronny S. (dr_bal)


Lesenswert?

Hi,

@Christian: ja genau habe die von Conrad über Amazon bestellt, war >20€ 
aber die schönste die ich finden konnte...

Ich habe eine Powerbank (Werbegeschenk), welche Laden und Gleichzeitig 
Speisen kann.
Ich denke mit den 4 LEDs umgehe ich die Abschaltung, habe nicht 
gemessen, aber eine LED zieht bei weißen Licht in voller Helligkeit ca. 
60mA. Bei mir laufen die in der Helligkeit 10 von 255.

@Daniel Frei:
Du kannst dir am besten nur den LED Teil rauskopieren, da ich für den 
Klon einige Änderungen an Martins Code gemacht habe.
Das der 4. Player nun auch eine Kopie war....


Vg
Ronny

von Daniel Frei (Gast)


Lesenswert?


von Christian S. (chris02)


Lesenswert?

Daniel Frei schrieb:
> Christian S. schrieb:
>> Hast du auf der Rückseite für 20€ die MicroUSB Buchse vom Conrad
>> spendiert? Zum Laden super geil aber der Preis für eine Buchse... Oder
>> hast du eine andere Bezugsquelle?
>
> Ich hab in meiner Einkaufsliste eine Buchse drin. Wenn du die Sachen
> nicht gleich morgen brauchst, dann kannst die nehmen.
>
> 
https://de.aliexpress.com/item/Micro-USB-5pin-Micro-USB-2-0-Stecker-auf-Micro-USB-2-0-Weibliche-Verl-ngerungskabel/32855632646.html?spm=a2g0x.search0104.3.121.139f739f9V50UK&ws_ab_test=searchweb0_0%2Csearchweb201602_1_10320_10065_10068_10547_319_317_10548_10696_453_10084_454_10083_433_10618_431_10304_10307_10820_10821_537_10302_536_10843_10059_10884_10887_100031_10319_321_322_10103%2Csearchweb201603_35%2CppcSwitch_0&algo_pvid=0df2f57e-1932-459e-976a-a583bc5cda1f&algo_expid=0df2f57e-1932-459e-976a-a583bc5cda1f-17

Danke, diese gibts auch bei Conrad/Voelkner wo ich sie mir bestellt 
hatte. Aktuell warte ich auf meinen Kumpel, der die Gehäuse macht (er 
als Schreiner macht zwei Gehäuse und ich dafür zwei Aufbauten)

von Christian S. (chris02)



Lesenswert?

Ronny S. schrieb:
> Ich habe eine Powerbank (Werbegeschenk), welche Laden und Gleichzeitig
> Speisen kann.
> Ich denke mit den 4 LEDs umgehe ich die Abschaltung, habe nicht
> gemessen, aber eine LED zieht bei weißen Licht in voller Helligkeit ca.
> 60mA. Bei mir laufen die in der Helligkeit 10 von 255.


Hatte schon überlegt zwei Ausgänge über nen kleinen Widerstand auf Masse 
zu schalten (takten). Aber die LEDs machen auch noch Sinn und nicht nur 
Wärme.

Aber wie man sieht ist man mit dem Attiny ganz schnell am Ende und ein 
Arduino Nano kostet beim Chinamann auch nicht wirklich mehr und kann 
direkt per USB programmiert werden. Daher habe ich diesen auch auf meine 
Platine gebaut.

Habe mal ein (schlechtes) Bild von meinem Aufbau angehangen. Extra 
alles* THT (auch wenn ich kein Freund von THT bin) um es auch für Laien 
möglichst einfach zu machen.

Upload der Schematic/Layout Dateien wenn ich es endlich mal geschafft 
habe die Taster richtig anzuschließen. Was auf dem Bild mit Lackdraht 
behoben wurde. Platinengröße 10cmx10cm um die günstigen Preise bei 
elecrow/jlcpcb etc. nutzen zu können (10 Platinen ca. 10€ inkl. Versand)

Player ging nach dem Aufbau auch auf anhieb.


*die Micro USB Buchse wollte ich mir dann doch nicht sparen. Spg 
Versorgung ist aber auch über die SChraubverbindungen möglich.

: Bearbeitet durch User
von Daniel Frei (Gast)


Lesenswert?

@Christian S.:
Für was ist die 1N4007 Diode auf deinem 2ten Bild?

von Florian R. (flo1234)


Lesenswert?

Hallo,

Inzwischen sind meine Kopfhörerbuchsen gekommen und ich musste 
feststellen, dass ich diese nicht wie geplant verwenden kann. Die 
Buchsen haben vier Anschlüsse: Audio R, Audio L, GND und den 
Schaltkontakt. Der Schaltkontakt ist ohne Stecker auf GND geschlossen 
und öffnet wenn man den Stecker steckt.
Ich benötige jedoch einen "potentialfreien" Schalter, da ich ja für den 
Kopfhörer die DAC _Out und für die Lautsprecher die "Speaker" Anschlüsse 
verwende.
Kennt jemand eine Buchse, die das bietet oder habe ich einen Denkfehler? 
Die Anwendung sollte doch eigentlich ein Standardfall sein.

Gruß Florian

von Florian R. (flo1234)


Lesenswert?

Ich habe jetzt nochmal recherchiert und bin auf folgende Buchse 
gestoßen:
https://www.quick-teck.co.uk/Management/EEUploadFile/1466073217.PDF

Leider werde ich aus dem Schaltbild nicht so ganz schlau. Bedeutet das, 
dass zwischen Pin vier und fünf ein Öffner verbaut ist, der nicht mit 
den Pins des Klinkenstecker verbunden ist?

von Stefan F. (Gast)


Lesenswert?

Daniel Frei schrieb:
> Was bedeutet geforkt?

Im Source Repository (wie GIT) werden Änderungen an einem Projekt als 
Punkte auf einer Zeitachse dargestellt. Jedes mal, wenn der Autor etwas 
ändert, kommt ein neuer Punkt dazu:
1
  *-----------*-----------*-----------*------> Zeit
2
Start     Änderung 1   Änderung 2    usw

Wenn nun jemand das Projekt in eine andere Richtung weiter entwickeln 
will (z.B. Funktionen hinzufügen will, die im Originalprojekt 
unerwünscht sind, dann erstellt man einen sogenannten Fork. Ein Projekt 
mit mehreren Forks sieht z.B. so aus:
1
                             ---*--------*---> Fork von Chantalle
2
                            /
3
                           /
4
  *-----------*-----------*-----------*------> Original-Projekt
5
                           \
6
                            \
7
                             ---*-----*------> Fork von Elvis
8
                                       \
9
                                        \
10
                                         ----> Fork von Elvis' Schwester

Erkennst du die Gabel am Bild?

Damit Verwandt ist der Begriff "Branch". Das ist technisch gesehen das 
Gleiche. Nur hat man bei einem Branch in der Regel die Absicht, eine 
Neue Funktion erst gründlich zu testen um sie später dem Originalprojekt 
zuzuführen.
1
              --*---*---*-- Branch von Chantalle
2
             /             \
3
            /               \
4
  *--------*-----------*-----*------*------> Original-Projekt

von Daniel Frei (Gast)


Lesenswert?

Stefanus F. schrieb:

> Erkennst du die Gabel am Bild?

Super, Danke für die Klasse Erklärung und die absolut leicht zu 
erkennende Gabel.

von Hans M. (schneider25)


Lesenswert?

Hallo zusammen,

vielleicht könnt ihr mir auch helfen?

Wenn ich die "KidsMP3Player.ino" in die Arduino-SW hochlade und dann auf 
Kompilieren gehe, dann bekomme ich immer x Fehlermeldungen.

Hat irgendwer einen Tip, woran es liegt, wenn er schon vorm übertragen 
beim Kompilieren aussteigt.

Hab inzwischen x-Versionen von Arduino ausprobiert, aber evtl hab ich 
auch hier nicht die richtige gehabt.

Ich nutze ein Arduino Uno R3 Board und einen Rechner mit Windows 7.

Vielen Dank schon mal.

: Bearbeitet durch User
von ghmartin77 (Gast)


Lesenswert?

Hi Hans,

in den allermeisten Fällen weisen Fehlermeldungen auf den jeweiligen 
Fehler hin. Wenn wir dir helfen sollen, wär's akut vorteilhaft, wenn du 
uns die x Fehlermeldungen einmal zeigen würdest.

Ansonsten tauchen hier ganz fix wieder Glaskugel-Kommentare auf...

Grüße
ghmartin77

von Hans M. (schneider25)


Lesenswert?

Hi GHMartin,

ich hab eins zu eins Deine zwei Datein für den MP3-Player runtergeladen 
und dann kommen sehr viele Linien zum Thema "error stray '\'" oder 
"error stray \303" oder "missing terminating Character"

Wiegesagt ich lade Deine zwei Dateien ohne irgendwas zu verändern hoch, 
drücke auf Kompilieren und dann kommen diese zwei Fehler und noch 
ettliche andere auch noch.

danke schon mal

grüße
Hans

von ghmartin77 (Gast)


Lesenswert?

Schaut mir (und Google) nach (für den Compiler) ungültigen Zeichen im 
Quellcode aus, die vermutlich auf dem Wege entstanden sind, wie du die 
Dateien beschafft hast.

Falls das nicht schon dein weg war, lade bitte dieses Zip herunter, 
packe es aus und öffne die ino-Datei mit der ArduinoIDE. Schau mal, ob 
die "Stray"-Fehler dann weg sind:

https://github.com/ghmartin77/KidsMP3Player/archive/master.zip

von Tim (Gast)


Lesenswert?

Kurzer Zwischenbericht:

Beide Player laufen seit November ohne Probleme.
Einer davon TÄGLICH! Das Projekt hat sich gelohnt und Junior ist noch 
immer Feuer und Flamme! Die Ladezyklen halten sich in Grenzen!

Softwarestand zwar etwas älter, läuft aber bei mir am Besten.
(Kein Wiederanspielen bei Folder1 wenn nur 1 Track hinterlegt ist)

Die Umsetzung der Lautsprecherbuchse macht aktuell keine Fortschritte.

Externe Ladebuchse wird demnächst installiert!



Habe noch jede Menge Fake Player hier rumliegen. Gibts ne Möglichkeit 
diese mit nem Attiny anzusteuern, oder doch nur über die Widerstand / 
Tasterlösung?
Wäre schön wenn ich die auch noch irgendwie /-wo verbauen könnte!

von Ronny S. (dr_bal)


Lesenswert?

Hi Tim,

meiner lebt auch noch und ist täglich in Benutzung. Muß auch einiges 
abhalten :-)

Du kannst den Player natürlich auch nur über die serielle Schnittstelle 
des Attiny steuern.

VG
Ronny

von Klaus R. (klaus2)


Lesenswert?

...mich wundert dass die Meldungen an erfolgreichen Nachbauten 
eingebrochen sind - dachte das wird ein Dauerbrenner, weil "fast jeder" 
die Notwendigkeit hat?

Klaus.

von Heidi87 (Gast)



Lesenswert?

Hier ist mein Nachbau. War ein Gemeinschaftsprojekt mit meinen Eltern. 
Ich hab die Elektronik gemacht und Sie den Rest. Ich hab eine 3000mah 
18650 benutzt und bei täglichen Einsatz hält die ca. 2-3 Wochen durch.
Ein wirklich super Projekt!!!

von Klaus R. (klaus2)


Lesenswert?

Sehr geil... ;)

Klaus.

von Daniel Frei (Gast)


Lesenswert?

Meiner ist noch im Aufbau.

Wenn der Prototyp läuft, dann lass ich Platinen in China machen, so 
ähnlich wie es Christian gemacht hat. Einmal mit AtTiny und einmal mit 
nem Nano und LED Anzeige der Playlist.

von Christian S. (chris02)


Lesenswert?

Von meiner Seite auch nochmal vielen Dank für dieses super Projekt. Habe 
meinen Kids MP3 nun auch endlich fertig gestellt.

Was mich heute allerdings viel Zeit und Nerven gekostet hat:
Ist es gewollt, dass wenn ein Ordner leer ist der Player gar nicht 
startet?

von N. B. (gabunz)


Angehängte Dateien:

Lesenswert?

Daniel Frei schrieb:
> Wenn der Prototyp läuft, dann lass ich Platinen in China machen, so
> ähnlich wie es Christian gemacht hat.


Hab auch welche dort machen lassen. Hab eine Programmierbuchse (ISP) mit 
auf der Platine. Das macht das experimentieren einfacher ;-)
Dazu kann ich verschieden große Taster verwenden (hab zusätzliche Löcher 
eingeplant).
Für die Spannungsversorgung benutze ich microUSB Platinchen, da das 
anlöten besser zu machen ist.
Beim Design hab ich eine Leiterbahn vergessen, deswegen die eine 
Drahtbrücke.

von Daniel Frei (Gast)


Angehängte Dateien:

Lesenswert?

So ich habe meine V1 nun pünktlich zu Ostern fertig bekommen.

Das Gehäuse hat der Opa gebaut.

Die Bärenabdeckung ist am 3D Drucker ausgedruckt worden.

Die Schrift auf der Front wurde mit dem Laser eingebrannt.

Da die Frontplatte zu dick war, musste ich alle Knöpfe der Taster 
verlängern.
Dazu hab ich mich wieder am 3D Drucker bedient und die längeren Knöpfe 
gedruckt.

Als Steuerung kam aber nun von ELV der MSM4 zum Einsatz.
https://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=60066

Hat nahezu alle gleichen Funktionen, aber nur 10 Tasten. Damit kann ich 
aber leben.
Großer Vorteil für mich war, das ich keinen Programmieraufwand hatte.

Den AtTiny und den Nano hab ich noch daheim. Sobald meine CNC läuft, 
gibts dann ein neues Gehäuse wo die anderen Sachen noch verbaut werden.

von Klaus R. (klaus2)


Lesenswert?

...und bist du damit zufrieden? Ich finde den Funktionsumfang und das 
Design des Originals schon "passender". Aber wenigstens passen dann 
Holz-Box und Hardware zusammen :)

Klaus.

von Daniel Frei (Gast)


Lesenswert?

Mit der Kiste die der Opa gebaut hat bin ich in keinster Weise 
zufrieden.

Mit meiner Verkabelung auch nicht.

Es musste alles wieder schnell gehen, da Ostern wieder so überraschend 
kam ;-)

Weiß jemand wann dieses Jahr Weihnachten ist? :-)

Mit dem MSM4 bin ich zufrieden. Der reicht vom Funktionsumfang 
vollkommen aus.

Im Prinzip kannst das auch alles in die IKEA Bambus Box bauen. Dann 
sieht er nahezu identisch aus, nur mit 10 Tastern.

Die Verkabelung ist natürlich auch einiges einfacher. Einfach an den 
MSM4 alle 10 Taster direkt anschliessen. Keine WIderstände oder sonst 
was. Lautsprecher, Einschalter und Spannungsversorgung anschliessen und 
gut ist.

Um die Lautstärke von extern zu regeln, noch einen 5kOhm Poti dazu 
bestellen und gegen das auf dem MSM4 tauschen. Sonst kannst die 
Lautstärke nur intern regeln, oder aber wenn du die Chinchplatine 
benutzt. Dann geht es auch über Tastenkombinationen, was ich meinem 
2-jährigen Sohn noch nicht zutraue.

von David G. (deif)


Angehängte Dateien:

Lesenswert?

Hallo!
Ich habe den Player erfolgreich nachgebaut. Meine Söhne, ihre Freunde 
und wir Eltern sind begeistert. Ich werde wohl noch ein par mehr bauen 
müssen ;) zwei Funktionen vermissen wir noch:
1. eine Taste um in der Playlist zurück zu springen. Kann ich da einfach 
einen Taster direkt am dafür vorgesehenen Anschluss vom Dfplayer 
anschliessen?
2. Mein Sohn möchte manchmal stundenlang immer wieder den selben Track 
anhören. Dazu möchte ich gerne einen zusätzlichen Taster verbauen der 
nur diese Repeatfunktion für den aktuell abgespielten Track ein und 
ausschaltet. Würde mir dabei jemand helfen? Ich habe leider keine Ahnung 
vom Programmieren...
3. wie schaut es aus mit der Anlernfunktion fär die Tasten? Ist da noch 
jemand dran? Ich wäre sehr interessiert, bei mir stimmen die Tasten noch 
nicht ganz mit den Ordnern überein. Ansonsten werde ich die Tasten nach 
unseren Ferien ausmessen und die Werte im Programmcode anpassen.

Danke für das tolle Projekt!
Lieber Gruss
David

von ghmartin77 (Gast)


Lesenswert?

Hallo David,

cooles Design! Das sieht ziemlich unverwüstlich aus. Gefällt!
Zu deinen Fragen:

#1: Was du vorschlägst, sollte gehen, allerdings interessiert sich der 
DFPlayer dabei vermutlich nicht für die Playlist-Struktur und springt 
auch rückwärts in die Tracks der vorhergehenden Playlist. Einfach 
ausprobieren. Pin gegen Ground ziehen (Büroklammer, Jumperkabel) und 
gucken, was passiert (Tipp: das SD-Kartenhalterungsmetall liegt auf GND; 
brauchste nicht groß zielen).

#2: Soll's dringend ein eigener, zusätzlicher Taster sein oder kann es 
auch durch längeres Halten einer Taste aktiviert/deaktiviert werden, wie 
das bereits vorhandene "Continuous Play"? Wie soll sich der Sleep-Timer 
im "Repeat 1"-Modus verhalten? Nicht ganz Ernst: Wie schützt man sich 
als Elternteil gegen Dauerloop-Wahnsinn? :)
Die Änderung mit einer existierenden Taste und längerem Halten sollten 
nur ein paar Zeilen Code sein. Würd ich dir zusammenklöppeln... Ist eine 
schöne Erweiterungsidee. Einen "Shuffle"-Mode könnte man auch noch 
gleich aufnehmen...
Was natürlich heute schon geht, ist, das Dauerrepeat-Lieblingsstück 
allein in eine Playlist zu legen und "Continuous Play" sowie "Playlist 
Loop" zu aktivieren.

#3 Anlernfunktion hatte ich mal angefangen, leider aber rasch 
festgestellt, dass in dem Chip kaum noch Speicher vorhanden ist, um noch 
viel Code reinzubasteln und deshalb verworfen. Damit bleibt Durchmessen 
eine Lösung. Zusätzlich habe ich oben mal ein OpenOffice-Sheet zur 
Berechnung hochgeladen: 
Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder auf ATTiny-Basis"
In E1 stellst du den Wert deiner verwendeten Widerstände ein, in Spalte 
F ergibt sich der Code-Wert für die Werte im Code ab hier: 
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L293

Grüße
ghmartin77

von Stefan F. (Gast)


Lesenswert?

David G. schrieb:
> Ich habe den Player erfolgreich nachgebaut.

Sieht sehr gut aus, das hast du toll gemacht.

von David G. (deif)


Lesenswert?

Danke für die rasche Antwort!
Zum Design: Ich stelle nebenberuflich Holzspielzeuge für Kinder her und 
habe mich bei den Holzresten der Klettergeräte bedient. Ich habe eine 
Bassreflexbox mit ca 2.3 liter Volumen für den Visaton FRS8 mit 
teilweise 16mm Multiplex gebaut. Das führt zu einem relativ hohen 
Gewicht. Für den dreijährigen stellt das aber kein Problem dar. Trotzdem 
werde ich die weiteren Player mit etwas geringerer Wandstärke (und 
leichterem LS) bauen. Ich denke auch bei 9mm Multiplex wird der Player 
noch unverwüstlich genug sein.

Zur Repeatfunktion: Die zurück-Taste würde ja eigentlich ausreichen. Das 
Kind kann damit den Track so oft es mag neu beginnen und die Eltern 
wären einigermassen vor einem tagelangen dauerloop geschützt. Leider ist 
aber die dfplayer-interne Lösung dafür nicht geeignet. Wird sie im 
laufenden Track gedrückt, springt der Player zu dem Song davor, nicht 
nur zum Anfang des laufenden Songs. Das wird dann fürs Kind wohl zu 
kompliziert. Mein Sohn hat für sich die Lösung gefunden: Er schaltet das 
Gerät am Ende des Songs aus und wieder an. So beginnt das Lieblingslied 
wieder von Vorne.
Meine Frage: lässt sich eine Taste ergänzen die erst den laufenden Track 
neu beginnt und erst beim zweiten- und weiteren Drücken zu den Tracks 
davor springt? Ich würde dafür auch auf eine der 11 Playlisttasten 
verzichten, wenn eine zwölfte nicht realisierbar ist.

Übrigens passiert es manchmal, dass beim durchdrücken durch die 
Playlists plötzlich ein Song aus einer anderen Liste kommt. Z.B. nach 
Track 5 aus Playlist 1 kommt anstatt Track 6 plötzlich Track 1 der 
Playlist 8 (welche bei mir auf der Taste 4 abgespielt wird, dafür die 
Liste 4 auf Taste 8). Drücke ich dann nochmals auf die Taste 1 kommt 
wieder Track 1 der Liste 1. Der Fehler ist nicht reproduzierbar und 
kommt nicht nur auf der Liste 1 vor, ist aber selten. Hat das damit zu 
tun, dass ich die Werte der Wiederstände noch nicht angepasst habe?

Und noch eine Frage: wenn ich z.B. nur 6 Tasten verbauen möchte, was 
müsste ich alles anpassen?

Liebe Grüsse
David

von N. B. (gabunz)


Lesenswert?

Ich hab mir überlegt, ob es nicht ggf. sinnvoll wäre, wenn der 
Lautstärkeregler auf Minimum steht, automatisch dem Player 'Pause' zu 
senden.
Idealerweise würde er beim hochdrehen der Lautstärke wieder 
weiterspielen.

von ghmartin77 (Gast)


Angehängte Dateien:

Lesenswert?

Hi David,

angehängt findest du eine ungetestete Zusamenhack-Version mit folgenden 
Features:

Repeat1:
Button 4 länger gedrückt schaltet "Repeat1" ein bzw. aus. Auf die selbe 
Art und Weise, wie Button 1 und 2 das für "Continuous Play" und 
"Playlist Loop" machen. Die Ansage-MP3s dafür müssen als 0500.mp3 und 
0501.mp3 in /ADVERT und /MP3 liegen.
Wenn aktiv, wird ein einmal gestarteter Track im Endlos-Loop immer 
wieder neu gestartet, nachdem er zu Ende gelaufen ist.

Previous-Button:
Kann über Entfernen des //-Kommentarzeichens in Zeile 22 aktiviert 
werden.
Danach ist Playlist 11 nicht mehr benutzbar (kann aber auf der SD-Karte 
verbleiben). Mit Aktivierung dieses Features bedeutet Button 11 
"Previous": Läuft der aktuelle Track länger als 3 Sekunden, wird der 
aktuelle Track neu gestartet, ansonsten der Vorgängertrack der aktiven 
Playlist (inkl. "Rollover" beim ersten Track).


Konnte die Änderungen leider nicht Testen. Was auch immer du an Fehlern 
findest, pack in diesen Thread und ich guck's mir an.
Wenn's funzelt, gib bitte auch Bescheid. Finde deine 
Erweiterungsanregungen  sehr gut und würde den angehängten Code -so er 
läuft- ins GitHub-Repo packen.

Zu deiner Frage mit den "verrutschten" Playlists bei Mehrfachdrücken 
eines Buttons: Ja, ich vermute, das hat mit den noch nicht justierten 
Werten für die Knöpfe zu tun. Zumindest liegen Button 1 und Button 4 
"nebeneinander", was die analogen Spannungsbereiche angeht. Sobald du 
die Werte angepasst hast, sollte dieses Problem also verschwinden...

Grüße
ghmartin77

von David G. (deif)


Lesenswert?

Herzlichen Dank! Leider kann ich momentan auch nicht testen, wir sind 
den ganzen Monat noch auf Reise und ich habe keinen Arduino mitgenommen. 
Im Juni werde ich mich aber natürlich sofort ans testen machen!
Übrigens fände ich die Pausefunktion über den Lautstärkepoti auch eine 
tolle Idee...

Liebe Grüsse
David

von ghmartin77 (Gast)


Lesenswert?

Die "Pause bei Minimal-Lautstärke"-Anforderung verstehe ich nicht ganz.
Die Minimallautstärke sollte gemäß Reglerlogik niemals unter den Wert 1 
(DF-Player-Sicht) fallen. Damit ist der Ton niemals ganz aus. Warum 
sollte man in diesem Fall auf Pause schalten?

Was übersehe ich?

Grüße
ghmartin77

von Peter (Gast)


Lesenswert?

Daniel Frei schrieb:

> Die Bärenabdeckung ist am 3D Drucker ausgedruckt worden.


Würdest du ggf. die .stl-Datei der Lautsprecherabdeckung verfügbar 
machen?

Das wäre toll!

lg

von David G. (deif)


Lesenswert?

Das stimmt, es ist nie ganz still auch bei minimaler Lautstärke nicht. 
Allerdings gibt es momentan noch keine Pausefunktion. Mit dem 
Lautstärkeregler wäre dies fürs Kind eine einfache Möglichkeit die 
Geschichte kurz anzuhlten und danach nicht wieder am Anfang des Tracks 
beginnen zu müssen.

Noch am Rande: Ich habe die Zurücktaste vom DfPlayer noch etwas 
ausgetestet. Wird diese betätigt, kommt zwar das letzte Lied noch 
einmal. Danach spielt es aber nicht mehr weiter, auch wenn das 
kontinuierliche Abspielen eingeschaltet ist.. Will ich dann mit der 
Playlisttaste eins weiterdrücken, kommt das übernächste. Der Attiny 
merkt also nicht, dass zuvor eins zurück geschaltet worden ist. Wird die 
Taste zudem zu oft gedrückt kommem auch die Ansagen aus dem MP3 und 
advert Ordner...

von ghmartin77 (Gast)


Lesenswert?

Hi David,

bezieht sich deine Verhaltensmeldung zur "Zurücktaste vom DF Player" auf 
das Hardware-Zurück (i.e. Pin) des DF Players oder auf meine 
Code-Modifikation oben, bei der ich eine "Zurücktasten"-Funktion 
eingebaut habe?

Ersteres würde mich beruhigen, bei zweiterem fehlt mir im Moment die 
Phantasie, wie das passieren sollte...

Themawechsel "Pause_on_Min_Volume":
Denke, das ließe sich preiswert einbauen... Ich guck mal, dass ich das 
als #define-Option nachrüste...

Grüße
ghmartin77

von David G. (deif)


Lesenswert?

Das bezieht sich auf den io_1 Pin vom DF Player. Deine Code Modifikation 
kann ich leider erst Anfang Juni testen.


Grüsse
David

von Daniel Frei (Gast)


Lesenswert?

Peter schrieb:
> Daniel Frei schrieb:
>
>> Die Bärenabdeckung ist am 3D Drucker ausgedruckt worden.
>
> Würdest du ggf. die .stl-Datei der Lautsprecherabdeckung verfügbar
> machen?
>
> Das wäre toll!
>
> lg

Ich hab den hier genommen.

https://www.thingiverse.com/thing:2122985

und dann Löcher reingebohrt. Bin grad dran das Ding im CAD neu zu 
zeichnen und die Löcher gleich reinmachen, damit die gescheit gedruckt 
werden.

Wird aber noch bis Ende Juni gehen, da ich jetzt erst einmal im Urlaub 
bin.

von David G. (deif)


Lesenswert?

ghmartin77 schrieb:
> Konnte die Änderungen leider nicht Testen. Was auch immer du an Fehlern
> findest, pack in diesen Thread und ich guck's mir an.
> Wenn's funzelt, gib bitte auch Bescheid.

Hallo Martin

Ich konnte die Codeänderung nun testen. Zurücktaste und repeatfunktion 
funktionieren gut.

Die Zurücktaste geht halt einfach der Reihe nach zurück - wenn das Kind 
also beispielsweise drei Lieder aus verschiedenen Playlists nacheinander 
spielt, kann es nicht in dieser Reihenfolge wieder zurück springen.

Durch die zurücktaste ist auch der Wunsch nach einer vor Taste 
entstanden. Vielleicht konnte man nur 9 Playlists verwalten und dafür 
die Taste 10 und 11 für vor und zurück verwenden? Ich finde das würde 
die Bedienung vereinfachen.

Wie sieht es aus mit der "Pause_on_Min_Volume" Erweiterung? Bist du da 
noch dran?

Zudem fände ich es interessant, die Equalizerfunktion des DFPlayers 
verwenden zu können. Ich denke es müsste nicht beim fertigen Gerät 
umstellbar sein, wenn man es aber im Code beim Bau an das Gehäuse 
anpassen könnte wäre dies hilfreich. Ich habe versucht bei Zeile 124 die 
anderen EQ Einstellungen einzugeben (z.B. DfMp3_Eq_Normal austauschen 
mit DfMp3_Eq_Rock). Allerdings konnte ich keinen Unterschied im Klang 
feststellen. Wie müsste ich das machen?

Vielen Dank für deine Hilfe
Liebe Grüsse
David

von David G. (deif)


Lesenswert?

Und was ich auch noch fragen wollte: was muss ich ändern um von USB 
abzuspielen anstatt von der SD Karte? Müsste ja eigentlich auch möglich 
sein?

Lieber Gruss
David

von ghmartin77 (Gast)


Lesenswert?

David G. schrieb:
> Ich konnte die Codeänderung nun testen. Zurücktaste und repeatfunktion
> funktionieren gut.

Freut mich. Wunderbar.

> Die Zurücktaste geht halt einfach der Reihe nach zurück - wenn das Kind
> also beispielsweise drei Lieder aus verschiedenen Playlists nacheinander
> spielt, kann es nicht in dieser Reihenfolge wieder zurück springen.

Äh, ja. Deine Anforderung im Beitrag weiter oben war (5.5.):
> 1. eine Taste um in der Playlist zurück zu springen.

Du sprachst nicht von Zurück in einer Play-HISTORIE...

> ...Wunsch nach einer vor Taste entstanden.

Gibt's doch. Das ist die Playlist-Taste.

> Wie sieht es aus mit der "Pause_on_Min_Volume" Erweiterung? Bist du da
> noch dran?

Da ich im Moment nur im Blindflug programmieren kann, bräuchte ich 
jemanden zum Ausprobieren. Kann heute Abend evtl. Testcode einstellen, 
den du verproben kannst.

> Ich habe versucht bei Zeile 124 die
> anderen EQ Einstellungen einzugeben (z.B. DfMp3_Eq_Normal austauschen
> mit DfMp3_Eq_Rock). Allerdings konnte ich keinen Unterschied im Klang
> feststellen.

Da wärst du schon ganz richtig. Vermutlich sind die Änderungen bei dem 
Mini-preiswert-Teil aber im "überschaubaren" (nicht hörbaren) Bereich 
:-)

Grüße
ghmartin77

von David G. (deif)


Lesenswert?

ghmartin77 schrieb:
> Play-HISTORIE...

Entschuldige, ich bin nicht auf die Idee gekommen bis zum Testen. Wäre 
das denn überhaupt möglich?

Die "Pause_on_Min_Volume" werde ich gerne testen.

Herzlichen Dank
David

von ghmartin77 (Gast)


Angehängte Dateien:

Lesenswert?

Na denne...
Hängt an.

Kommentarzeichen in Zeile 25 wegnehmen, um das 
"Pause_on_Min_Volume"-Feature zu aktivieren. (Evtl. auch Zeile 22 nicht 
vergessen.)

Thema Historie:
Denke schon, dass das möglich wäre. Man muss halt noch die 
Funktionsweise "spezifizieren", z.B. ab wann landet ein Track in der 
Historie (Immer? Nach x Sekunden Abspieldauer?)? Wie verhalten sich 
Tracks aus der Historie in Bezug auf (Nicht-)Aufnahme in ebenselbige? 
Wenn REPEAT1 eingeschaltet ist oder RepeatPlaylist mit nur einem Track, 
kommt dieser Track dann immer und immer wieder in die Historie? Soll die 
Historie ein Ausschalten überleben? Wenn man in der Historie zurückgeht 
und dann einen neuen Track abspielt, kommt der dann hinten an die 
Historie oder wird die Historie ab dem aktuellem Stand in Richtung 
ehemaliger "Zukunft" gelöscht...
Und schwuppdiwupp bist du in einer Ecke, in der du dich fragst, ob das 
ein Kind noch versteht oder man's lieber sein lässt :)

Und man muss sich noch ein paar Bytes Speicher abzwacken, um die 
Historie mithalten zu können...

Thema USB:
Such mal im Quellcode nach "setPlaybackSource"... Und mit der 
Hardwareverschaltung musst du dich dann auch beschäftigen: Pins für USB+ 
und USB- wollen dann angeschlossen werden. Evtl. wird das ganze Ding 
dann auch "zickiger", was die Versorgung mit stabilen 5V angeht... Hab's 
noch nie probiert...

Grüße
ghmartin77

von David G. (deif)


Lesenswert?

Die Pause funktioniert prima. Danke vielmal dafür!

Historie: Die zurück in Historie funktion finde ich für die Kinder 
logischer als der momentane Stand der rückwärztaste. Um es für die 
Kinder einfach zu gestalten würde ich es wie folgt machen: jeder Track 
kommt in die Historie, egal wie lange er gespielt wird. Wird zurück 
gegangen und danach ein Track aus einer anderen Playlist gespielt, wird 
der vorne an die Historie angesetzt. Bei 1 Track repeat würde ich es so 
machen, dass immer nur zum Anfang des Tracks gesprungen werden kann bis 
die Repeatfunktion ausgeschaltet wird. Der Track wird aber nur 1x in die 
Historie aufgenommen.  Einen Neustart sollte die Historie nicht 
überstehen, vorallem da der Player jetzt auch eine Pausefunktion hat.
Wenn in der Historie zurückgegangen werden kann, wäre mir die 
Vorwärztaste doch wichtig.


USB: Ich habe versucht die Quelle auf Zeile 130 von sd auf usb zu 
ändern. Mein Player spielte danach bei angeschlossenem USB stick nichts, 
doch sobald ich die SD Karte einsteckte ging es wieder, trotz 
DfMp3_PlaySource_U. Er hat also das Umschalten nicht verstanden. Weil da 
nichts passiert ist, war ich mir auch beim Equalizer nicht sicher ob ich 
das richtig im Programm geändert habe.
Am schönsten fände ich, wenn die /Mp3 und /advert Ordner auf der sd 
Karte bleiben könnten und auf dem Stick nur die Musik wäre.

Liebe Grüsse
David

von Ronny S. (dr_bal)


Angehängte Dateien:

Lesenswert?

Ich könnte meinen teddy auch noch als cad Datei freigeben. Ich habe ja 
das komplette Design in Fusion360 erstellt und dann gefräst.

Viele Grüße
Ronny

von Stefan (Gast)


Lesenswert?

Schreiben, dass der MP3 Player auf ATTiny-Basis ist?! ;)

Vergiss bitte die ewigen Nörgler, warum soll man das Rad neu erfinden, 
wenn es alles schon günstig und funktionierend gibt.

Danke für das super Projekt ich werde es für meine Tochter umsetzen, 
vielleicht ändere ich noch die ein oder andere Tastenbelegung, aber 
sonst echt super. Habe schon länger nach einer einfachen Umsetzung für 
diese Aufgabenstellung gesucht und jetzt dank Dir gefunden. Weiter so!

von Tim M. (brotzeit)


Lesenswert?

Hallo zusammen,

nachdem ich hier immer fleissig mitlese, muss mich auch mal wieder 
melden ;-)

Meine beiden Player laufen problemlos nahezu täglich vor sich hin.

Das Feature "Pause_on_Min_Volume" wollte ich nun updaten, bekomm es aber 
nicht hin. Habe jetzt festgestellt, das alle Versionen seitdem #include 
"DFMiniMp3.h" hinzugefügt wurde, bei mir nicht laufen :-(
Beim Beschreiben des Attiny bekomme ich keine Fehlermeldungen...


Muss ich diese Datei irgendwo extra einbinden?

von Michael W. (michelw)


Lesenswert?

Ronny S. schrieb:
> Ich könnte meinen teddy auch noch als cad Datei freigeben. Ich habe ja
> das komplette Design in Fusion360 erstellt und dann gefräst.
>
> Viele Grüße
> Ronny


Hallo Ronny S.,
würdest Du den Teddy hier als CAD reinstellen?

Michael

von Klauso (Gast)


Lesenswert?

Hallo und erst mal ein ganz herzliches Dankeschön für dieses geniale 
Projekt! Absolut großartig

Bei meiner Umsetzung bin ich bezüglich des DigisparkBoards auf ein paar 
Hürden gestoßen.
Weiter oben hier im Thread wird berichtet, man hätte die Software auf 
einem Digispark rum laufen bekommen?

Für einen echten Arduino lässt sich das Projekt in meiner IDE ohne 
Fehler kompilieren.

Leider kennt Digispark unter anderem die Bibliothek für die serielle 
Software Schnittstelle nicht.

Kann diese einfach durch eine Digispark kompatible Bib ersetzt werden? 
(Bei mir gab's da Probleme mit ein paar Funktionen)

Bin über weitere Hinweise zur Umsetzung mit Digispark dankbar.
Die Wahl zum Digispark war leider nur auf den ersten Blick einfacher ;)

von Martin S. (sirnails)


Angehängte Dateien:

Lesenswert?

Ronny S. schrieb:
> So langsam geht es wieder weiter. Hatte die letzten 3 Wochen keine
> Zeit.
>
> der Originale DFPlayer ist auch bestellt.
>
> Ich habe jetzt noch 4 LEDs für den Akkustand der Powerbank integriert.
> Dafür ist dann das Plexiglasteil.
>
> Mal schauen ob ich die Originale Anzeige verwende oder sogar ws2812b
> LEDs mit Farbfunktion. Dann könnten diese in der Farbe der jeweiligen
> Playlist Leuchten ;-)
>
> Frontplatte werde ich wohl noch einmal neu machen müssen, da hat die
> Fräse nicht gut gearbeitet.
>
> noch viel schleifarbeit :-)

Irgendwie kommt mir das doch enorm bekannt vor...

Hast du das Teil in Serie aufgelegt, kopiert, oder wurdest du kopiert?

von Klaus R. (klaus2)


Lesenswert?

Uff! Was für eine interessante Entwicklung des Themas...bin gespannt wer 
/ was dahintersteckt!

Klaus.

von John Doe (Gast)


Lesenswert?

Martin S. schrieb:
> Irgendwie kommt mir das doch enorm bekannt vor...
>
> Hast du das Teil in Serie aufgelegt, kopiert, oder wurdest du kopiert?


Lesen kannst Du wohl nicht, oder?

von Martin S. (sirnails)


Lesenswert?

John Doe schrieb:
> Martin S. schrieb:
>> Irgendwie kommt mir das doch enorm bekannt vor...
>>
>> Hast du das Teil in Serie aufgelegt, kopiert, oder wurdest du kopiert?
>
>
> Lesen kannst Du wohl nicht, oder?

 Offensichtlich nicht. Aber das ist ja nicht weiter tragisch. Man soll 
ja zu seinen Schwächen stehen. Das ist wohl meine.

Es wäre also sehr nett, wenn du mir die betreffende Stelle zeigen 
könntest. Das ich die grob 500 Beiträge jetzt nicht alle durchgelesen 
habe, ist wohl nachvollziehbar, oder?

von Klaus R. (klaus2)


Lesenswert?

...ich glaube mich zu erinnern dass dem TO der originale zu teuer war 
und er sich dann stark am Design orientiert hat - wie stark, wurde mir 
aber auch jetzt erst klar ;)

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

Klaus.

: Bearbeitet durch User
von Martin S. (sirnails)


Lesenswert?

Ach ok vielen Dank. Dann hat sich das ja aufgeklärt.

Ich war nur überrascht, weil die Designs nahezu identisch sind.

von Klauso (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

mittlerweile ist etwas Zeit vergangen und das Thema DigiSpark ist 
gecancelt.
Ich habe einen Attiny85 mit einem AVR ISP mkII, den ich noch hier liegen 
hatte, ohne Fehlermeldung programmiert bekommen. Nach diesen Erfahrungen 
gibt es echt keinen Grund für DigiSpark ;)

Leider Antwortet der DFPLayer nun nicht auf die Anfragen des Tiny (siehe 
Bilder, im Oszillogramm: rot ist Pin5(RX Tiny), gelb ist Pin6(TX Tiny) 
des Tiny)

Abspielen von Titeln klappt mittels ADKEY's problemlos.
Leider habe ich aktuell noch keinen neuen Player zum testen zur Hand.

Gibt es noch weitere Fehlerquellen weshalb der DFPlayer auf der 
Datenleitung stumm bleibt?

von ghmartin77 (Gast)


Lesenswert?

Hallo Klauso,

Fuses richtig gesetzt? Von meiner Github-Seite:

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

...und mit den dazu passenden Einstellungen kompiliert?

Siehe auch Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder auf ATTiny-Basis"

Good Luck!
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

...alternativ hätte ich noch "TX/RX auf dem DFPlayer vertauscht" im 
Angebot? Ggf. ist die Beschriftung nicht wie erwartet und man muss RX 
mit RX und TX mit TX verkoppeln statt -wie erwartet- "über kreuz"...

Versuch macht kluch...
ghmartin77

von Klauso (Gast)


Angehängte Dateien:

Lesenswert?

ghmartin77 schrieb:
> Hallo Klauso,
>
> Fuses richtig gesetzt? Von meiner Github-Seite:
>
>> 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)
>
> ...und mit den dazu passenden Einstellungen kompiliert?
>
> Siehe auch Beitrag "Re: Projekt fertiggestellt: MP3 Player für Kinder
> auf ATTiny-Basis"
>
> Good Luck!
> ghmartin77
>

Danke nochmal für den Hinweis und die Verlinkung nach oben!
Die Fuses sind, sofern die Löschung des EEPROM nicht relevant ist, 
richtig gesetzt. Bei HFuse habe ich 0xDF was bedeutet dass EESAVE 
gesetzt ist.
... -Pusb -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0xe2:m

Davon abgesehen antwortet heute morgen zumindest mal der ADPlayer. Warum 
auch immer. Der Tiny unterbricht nun auch das Abspielen von Titeln 
welche ich manuell mittels ADKEY's auslöse (Blaue LED leuchtet für nicht 
mal 1 Sekunde auf und erlischt, Titel wird kurz angespielt).

Leider scheint der Tiny nicht auf den analogen Eingang an Pin2 zu 
reagieren.
Ich habe die Verschaltung und den Tiny mit einem mini Testprogramm 
(siehe unten) getestet, funktioniet. Der DutyCycle des PWM Signal 
variiert, je nach Eingangsspannung, wie erwartet.
1
// to run on attiny85
2
3
const byte pwmPin = 0;
4
const byte analogInPin = A3;
5
6
void setup() {
7
}
8
9
void loop() {
10
  pinMode(pwmPin, OUTPUT);
11
  int analogIn = analogRead(analogInPin);
12
 analogIn = map(analogIn, 0, 1023, 0, 255);
13
 analogWrite(pwmPin, analogIn);
14
}

Die Teilspannungen der Widerstandskaskade passen auch mit denen hier im 
Thread gelisteten überein. SIehe dazu auch das oben gezeigte 
Oszillogramm.

Theoretisch sollte man doch, je nach dem welche Taste gedrückt wird, am 
RX-Pin des Tiny eine Veränderung im Bit-Muster erkennen können...
Es tut sich aber leider nichts.

von Klauso (Gast)


Lesenswert?

kleiner Nachtrag zum Thema:
Auch das ändern der Fuses hat nichts geändert:
1
avrdude -c"avrdude.conf" -v -v -v -v -pattiny85 -cstk500v2 -Pusb -e -Uefuse:w:0xff:m -Uhfuse:w:0xd7:m -Ulfuse:w:0xe2:m
2
3
...
4
5
avrdude: safemode: efuse reads as FF
6
avrdude: safemode: Fuses OK (E:FF, H:D7, L:E2)
7
avrdude: Sent: . [11] . [01] . [01]
8
avrdude: Recv: . [11] . [00]
9
10
avrdude done.  Thank you.

von Klauso (Gast)


Lesenswert?

Ich muss noch eine Frage hinterher schieben, die mich beschäftigt:

@ghmartin77
Du rufst einen Track wie folgt ab:
1
player.playFolderTrack(curFolder, curTrack);

In deiner Anleitung steht, der Ordnername besteht aus zwei Ziffern.

Bei Github steht zur Bibliothek geschrieben:

“An example filename would be sd:/002/013_ThisIsMyFavoriteSong.mp3, and 
calling playFolderTrack(2, 13) would play it.
folder - the folder number as listed in the folder name. The foldername 
must be a three digit, zero padded number.“

https://github.com/Makuna/DFMiniMp3/wiki/API-Reference#void-playfoldertrackuint8_t-folder-uint8_t-track

Ordner mit zwei Ziffern sollen mit:
playFolderTrack16(x, y) aufgerufen werden.

Die Beispiele die auf der Seite der Library angeboten werden 
funktionieren mit meinem DFPlayer zumindest mit dem advert- und mp3- 
Ordner nun auch endlich.

Irgendwo habe ich wohl noch ein Problem mit der Ordnerbezeichnung, der 
Formatierung der sd Karte (fat32) oder dem Aufruf der “playFolderTrack 
Funktion, siehe oben...

von ghmartin77 (Gast)


Lesenswert?

Na, dann wollen wir mal sortieren und schauen, ob wir der Sache 
näherkommen...

> Der Tiny unterbricht nun auch das Abspielen von Titeln welche ich manuell 
mittels ADKEY's auslöse

Was meinst du denn damit? Der Tiny sollte eigentlich kein Abspielen 
abbrechen. Wann passiert das? Einfach so nach einer bestimmten Zeit? 
Wenn du eine Taste drückst? Wenn...wann?

Als nächstes wäre spannend, herauszubekommen, in welchem Zustand sich 
der Tiny befindet. Du schreibst, er würde scheinbar nicht auf 
Tastendrücke reagieren (Pin 2). Wie äußert sich das? Tastendruck mit 
nachweißlichem Spannungsausschlag gemäß deiner Messung, aber in der 
Folge keine Aktivität an TX des Tinys?

Wenn dem so ist, wär's möglich, dass der Tiny noch in der 
Initialisierung (setup()) hängt. Zeilen 241ff wären Kandidaten dafür. 
Ergo: Sind deine Ordnerstrukturen auf der SD-Karte gemäß 
Github-Beschreibung?

Nächster Versuch: setup() auf Minimum runterstrippen, um zu schauen, ob 
der ATTiny reden und der DFPlayer zuhören mag:
1
void setup() {
2
  pinMode(PIN_VOLUME, INPUT);
3
  pinMode(PIN_VOLUME_INTERNAL, INPUT);
4
  pinMode(PIN_KEY, INPUT_PULLUP);
5
6
  delay(50);
7
8
  player.begin();
9
10
  initDFPlayer();
11
12
  player.playFolderTrack(1, 1);
13
14
  delay(10000);
15
}

Dazu sicherstellen, dass ein File /01/001.mp3 auf der SD-Karte existert.
Spielt er dann beim Starten was über den DFPlayer ab? Mindestens 10 
Sekunden lang?
Falls nicht, versuchsweise RX/TX austauschen und schauen, was er dann 
tut.
Immer noch nichts?
Hättest du ggf. noch einen Arduino rumfliegen, mit dem man inkl. 
Logausgaben testen könnte?

Dann lass mal hören, was sich mit diesen Anstößen ergeben hat...

Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

Da haben wir überschneidend geschrieben. Das sind doch schonmal gute 
Nachrichten, dass es prinzipiell funktioniert.

Damit ist meine Frage nach den Ordnerstrukturen der heisseste Kandidat:
Hast du alle Ordner von "01" bis "11" angelegt (eine weitere führende 0 
brauchte ich bisher nicht, aber das können wir auch noch ausprobieren)? 
Liegt in jedem Ordner mindestens eine Datei 001.mp3?

von Klauso (Gast)


Angehängte Dateien:

Lesenswert?

Ok, Asche über mein Haupt ;)

Es läuft. Und ich habe gezwungener Weise viel über die DFMinimp3.h und 
deren Anwendung gelernt :)

Ich hatte nur 5 der insgesamt 11 Ordner auf der SD-Karte angelegt (Bitte 
keine Kommentare dazu ;) )

Ich fasse, auch mal für die folgenden Generationen nochmal meine Infos 
zusammen:

- Infos zur Library DFMiniMp3.h gibts hier:
https://github.com/Makuna/DFMiniMp3/wiki/API-Reference

- Die Library und die Kommunikation grundsätzlich Testen mit diesen 
offiziellen Beispielen:
https://platformio.org/lib/show/1561/DFPlayer%20Mini%20Mp3%20by%20Makuna

- Ein Digispark mit Tiny85 macht keinen Sinn, ein echter Attiny85 mit 
ISP Programmiert ist so viel einfacher und hat keinen Bootloader der 
beim Start 5? Sekunden auf ein mögliches beschreiben wartet. Bei jedem 
Start würde die Box um eben diese Zeit verzögert betriebsbereit sein. 
Den Bootloader könnte man theoretisch aber auch umbauen.
Siehe hier:
https://bytelude.de/2018/04/20/wie-man-das-5-sekunden-boot-delay-beim-digispark-digistump-attiny85-entfernt/

- DFPlayer mit roter LED (anscheint billiger Nachbau) funktioniert mit 
neuer Version auch. Bezugsquelle vom Shoppingteufel für 4,99€ inkl. 
Prime
https://www.amazon.de/gp/offer-listing/B07CRY9QTK/ref=dp_olp_new_mbc?ie=UTF8&condition=new

- Taster fürs Tasterfeld hab ich von Reichelt und find sie echt cool, 
leider nur in 7 Farben (Artikel-Nr.: DT 6 GR)
https://cdn-reichelt.de/documents/datenblatt/C200/dt6.pdf

- Unbedingt bevor das Programm zum ersten mal mit der ARduino IDE auf 
den Tiny geladen wird, unter "Werkzeuge" 8 MHz einstellen und dann nicht 
vergessen "Bootloader brennen" zu klicken. Damit werden "NUR" die 
Fusebits geschrieben. Zum verifizieren der FuseBits kann man unter 
Voreinstellungen nochmal die Häckchen bei "Ausführliche Ausgabe 
während:" setzen.

von ghmartin77 (Gast)


Lesenswert?

> Es läuft.

Na, das freut mich doch zu hören :)

Vielen Dank für die Dokumentation für die Nachwelt. Das hilft sicher 
zukünftig dem ein oder anderem weiter!

Eine Frage hätte ich noch. Du schreibst
> DFPlayer mit roter LED (anscheint billiger Nachbau) funktioniert mit neuer 
Version auch.

Mit neuer Version von was? Der DFMiniMp3.h oder bereits mit dem 
HEAD-Stand aus meinem Github-Repo?

Grüße
ghmartin77

von Klauso (Gast)


Angehängte Dateien:

Lesenswert?

Zur Vollständigkeit der Doku habe ich noch ein Blockschema zur 
Umsetztung von laden via USB-Buchse und Datenzugriff auf die SD-Karte 
via USB-Buchse beigefügt.


ghmartin77 schrieb:
> Eine Frage hätte ich noch. Du schreibst
>> DFPlayer mit roter LED (anscheint billiger Nachbau) funktioniert mit neuer
> Version auch.
>
> Mit neuer Version von was? Der DFMiniMp3.h oder bereits mit dem
> HEAD-Stand aus meinem Github-Repo?

Sowohl als auch.
Ich habe den Player getauscht und in den aktuellen Versionen ist der 
PLayer mit der roten LED (zumindest den, den ich hier von amazon hab) 
ansprechbar.

Allgemein hier nochmal zum testen nochmal die Version aus der Doku 
angepasst auf den attiny85 (überprüft und funktioniert):

--- Random all Tracks on SD ---
1
// this example will play a random track from all on the sd 
2
//
3
// it expects the sd card to contain some mp3 files
4
5
#include <SoftwareSerial.h>
6
#include <DFMiniMp3.h>
7
8
// implement a notification class,
9
// its member methods will get called 
10
//
11
class Mp3Notify
12
{
13
public:
14
  static void OnError(uint16_t errorCode)  {
15
  }
16
  static void OnPlayFinished(uint16_t track)  {
17
  }
18
  static void OnCardOnline(uint16_t code)  {
19
  }
20
  static void OnUsbOnline(uint16_t code)  {
21
  }
22
  static void OnCardInserted(uint16_t code)  {
23
  }
24
  static void OnUsbInserted(uint16_t code)  {
25
  }
26
  static void OnCardRemoved(uint16_t code)  {
27
  }
28
  static void OnUsbRemoved(uint16_t code)  {
29
  }
30
};
31
32
 
33
// Some arduino boards only have one hardware serial port, so a software serial port is needed instead.
34
// comment out the above definition and uncomment these lines
35
SoftwareSerial secondarySerial(0, 1); // RX, TX
36
DFMiniMp3<SoftwareSerial, Mp3Notify> mp3(secondarySerial);
37
38
void setup() 
39
{
40
  mp3.begin();
41
  mp3.reset(); 
42
  
43
  // show some properties and set the volume
44
  uint16_t volume = mp3.getVolume();
45
  mp3.setVolume(24);
46
  
47
  uint16_t count = mp3.getTotalTrackCount();
48
  uint16_t mode = mp3.getPlaybackMode(); 
49
  mp3.playRandomTrackFromAll(); // random of all folders on sd
50
}
51
52
void loop() 
53
{
54
  // calling mp3.loop() periodically allows for notifications 
55
  // to be handled without interrupts
56
  mp3.loop();
57
}

von Klauso (Gast)


Lesenswert?

@ghmartin77

Kann es sein, dass es in der Repeat1 Funktion noch einen Bug gibt?

Die Repeat1 Funktion wurde zwar umgesetzt und funktionierte, allerdings 
hat die Ansage aus dem "advert" oder "mp3" Ordner immer verkündet, die 
Funktion würde eingeschaltet.
Es wurde also immer die „ist eingeschaltet“-Datei abgespielt und nie die 
„ist ausgeschaltet“-Datei.


Der Fehler liegt in der "handleKeyPress()" Funktion.
1
        } else if (nowMs - keyPressTimeMs >= LONG_KEY_PRESS_TIME_MS && key == 4) {
2
          repeat1 = !repeat1;
3
          playOrAdvertise(loopPlaylist ? 500 : 501);
4
          writeConfig();
5
          delay(1000);

Hier müsste der Kopierteufel "loopPlaylist" durch "repeat1" ersetzt 
werden.
1
        } else if (nowMs - keyPressTimeMs >= LONG_KEY_PRESS_TIME_MS && key == 4) {
2
          repeat1 = !repeat1;
3
          playOrAdvertise(repeat1 ? 500 : 501);
4
          writeConfig();
5
          delay(1000);

So funktioniert es zumindest bei mir ;)

Ggf. bitte in GitHub veröffentlichen.

von ghmartin77 (Gast)


Lesenswert?

Top!
Klar ist das falsch. Danke für den Hinweis. Dein Fix ist genau richtig 
und ich hab ihn just eben ins Github-Repo übernommen.

Viele Grüße
ghmartin77

Beitrag #6040653 wurde vom Autor gelöscht.
von Info (Gast)


Lesenswert?

https://www.hoerbert.com/kaufen/elektronikbausatz
119 Euro für eine WAV Player Elektronik. In Holzkiste 239 Euro!

Das Marketing zum Thema (nur) WAV ist gut formuliert (spart Strom, 
kann/ist viel mehr, ...).

Hier die Platine: 
https://static.hoerbert.info/wp-content/uploads/sites/5/2017/02/bausatz-platine-e1505730198737.jpg

Ein ATtiny861-20SU

Alternativ 
https://de.elv.com/elv-mini-wave-player-mwp2-komplettbausatz-151840 für 
20 Euro mit Quellcode auf Basis von ChaNs Projekt:

http://www.elm-chan.org/works/sd8p/report.html (das ist die kleine 
Variante aus meinen Lesezeichen, die Seite ist für mich gerade nicht 
erreichbar).

Aber ich habe auch mal einen DFPlayer geordert.

Hier eine Variante mit RFID: https://github.com/xfjx/TonUINO

von Max B. (Gast)


Lesenswert?

Super Projekt ghmartin77!

Ich frage mich ob ich das auch mit einem ATtiny 45 hinbekomme?

Waere mein erstes Projekt mit dem ATtiny - da mein Nachbar einen hat den 
er nicht braucht dachte ich mir, ich kann da noch etwas machen waehrend 
der freien Zeiten zwischen dem Weihnachtstrubel.


Gruesse

MaxB202

von ghmartin77 (Gast)


Lesenswert?

Der ATTiny45 hat nur 4kb Speicher. Der kompilierte Code, wie er aus der 
Arduino IDE (resp. dem im Inneren genutzten Compiler) herauskommt, 
kratzt knapp an der 8kb-Grenze.
Evtl. hilft es den Code runterzustrippen, Dinge rauszuschmeißen, die du 
nicht brauchst, oder den ganzen Arduino-Unterbau rauszunehmen... Dazu 
braucht's aber massive Umbauten der Codebasis...

--> Kauf dir 'nen 8x-er (oder einen Arduino Nano). Spart Zeit und 
Nerven...

Grüße und schöne Weihnachten
ghmartin77

von Klauso (Gast)


Angehängte Dateien:

Lesenswert?

@ghmartin77: Vielen Dank nochmals für das Projekt!

Mein Nachbau war pünktlich zum Fest fertig und ist mehr als super 
angekommen :)


Anbei natürlich noch ein paar Fotos:

von ghmartin77 (Gast)


Lesenswert?

Sieht super aus! Tolle Umsetzung!

Viele Grüße
ghmartin77

von Matze (Gast)


Lesenswert?

Daniel Frei schrieb:
> Als Steuerung kam aber nun von ELV der MSM4 zum Einsatz.
> https://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=60066

Hi Daniel,

wie bist du denn mit der Ausgangsleistung bzw. Lautstärke zufrieden?
Bei ELV steht was von 0,5W an 8Ohm.

Grüße
Mathias

von Hirschi (Gast)


Lesenswert?

Hallo zusammen,

Ich habe von meinen Kollegen einen selbst gebauten MP3-Player auf 
ATTiny-Basis bekommen- bzw. die Platine- und bin von der Idee 
begeistert. Zwecks Gehäusebau habe ich mich jetzt etwas belesen und mich 
lässt eine Frage nicht los (die nichts mit dem Gehäuse, sondern dem 
angeborenen Optimierungstrieb zu tun hat). Könnte ich den MP3-Player um 
einen RFID-Leser erweitern? Würde das der ATTiny her geben?

Also gleich vorweg: Ich weis, dass es den TonUINO gibt. Und nein, ich 
bin nicht sonderlich bewandert in Schaltungstechnik und schon garnicht 
in Programmierung. Aber ich hoffe, ich bin lernfähig. ;)

Viele Grüße
Hirschi

von ghmartin77 (Gast)


Lesenswert?

Hi Hirschi,

rein technisch scheint's zu gehen (zumindest, wenn du einen RFID-Reader 
mit UART-Schnittstelle nimmst): 
https://thinksilicon.de/67/RFID-Tueroeffner-mit-Attiny.html

Jenachdem von welcher Codebasis du sprichst, könnte die Speichergröße 
problematisch werden. Der Code des Players, der in diesem Thread 
beschrieben ist, belegt fast die kompletten verfügbaren 8kb des 
benutzten ATTiny85.

Wenn du einfach an verrückten Sachen mit ATTiny und RFID interessiert 
bist, schau gern auch mal hier vorbei (da ist es allerdings ein ATTiny 
als RFID-Chip, nicht als Leser):
https://trmm.net/AVR_RFID

Grüße
ghmartin77

von Tim M. (Gast)


Lesenswert?

Tim M. schrieb:
> Hallo zusammen,
>
> nachdem ich hier immer fleissig mitlese, muss mich auch mal wieder
> melden ;-)
>
> Meine beiden Player laufen problemlos nahezu täglich vor sich hin.
>
> Das Feature "Pause_on_Min_Volume" wollte ich nun updaten, bekomm es aber
> nicht hin. Habe jetzt festgestellt, das alle Versionen seitdem #include
> "DFMiniMp3.h" hinzugefügt wurde, bei mir nicht laufen :-(
> Beim Beschreiben des Attiny bekomme ich keine Fehlermeldungen...
>
> Muss ich diese Datei irgendwo extra einbinden?

Konnte das Problem immer noch nicht lösen.
Hat noch jemand eine Idee was da schief läuft?

von ghmartin77 (Gast)


Lesenswert?

Hi Tim,

welche Code-Basis (Git-Commit) läuft bei dir? Ist 
abe87ec341694533ee6e26d65714142059044a79 noch in Ordnung?

Grüße
ghmartin77

von Tim (Gast)


Lesenswert?

Öhm, wie bekomme ich das heraus? Wo steht das.

Habe gerade nochmal bei den releases gestöbert.
1.0 läuft, 1.1 läuft nicht.

Muss ich die DFMiniMp3.h irgendwie noch einbinden oder wo hinkopieren?

von David (Gast)


Lesenswert?

Hallo zusammen!
Ich muss mich auch mal wieder melden.
Hatte jemals jemand Erfolg beim Abspielen vom USB Speicher anstelle der 
SD Karte? Ich habe vieles ausprobiert. Das Abspielen funktioniert 
grundsätzlich auch, jedoch funktionieren die Funktionen Repeat, 
continuous Play und Play last at startup (oder wie die heissen) nicht. 
Der Player spielt egal wie die Einstellungen sind immer nur 1 track und 
verstummt danach. Im Code habe ich die PlaySource auf U gelegt.

Hat jemand eine Idee woran dies liegen könnte?

Liebe Grüsse
David

von ghmartin77 (Gast)


Angehängte Dateien:

Lesenswert?

Auf der GitHub-Seite unter Code -> Commits steht neben jedem Commit 
jeweils rechts eine Hexcode-Zeichenkette der Art "e15e9fc". Bei den 
Releases stets links am Rand daneben an einem "-o-"-Icon.

Deine Aussage, dass 1.0 läuft hat aber schon gereicht.
Habe die Features nach der 1.0 versuchsweise in den alten 1.0er-Code 
migriert, konnte leider aber nicht mehr als Compilier-Fähigkeit testen 
:)

Probier mal bitte das angehängte File. Wenn du PAUSE_ON_MIN_VOLUME 
aktivieren willst, musst du noch in Zeile 26 die Kommentarzeichen "// " 
vor dem "#define" entfernen.

Good Luck!

Grüße
ghmartin77

von Tim (Gast)


Lesenswert?

Jippiehhhh... GEHT DOCH!!!

Da probier ich mir nen Wolf, und dann ist es so einfach...

DANKE DIR!

Scheint beim ersten Anhören auf meinem "Testplayer" problemlos zu 
laufen.
Pause und Titel Dauerschleife funktioniert auch.

Jetzt kann ich mir noch überlegen, ob oder wie ich die Powerbank beim 
Pausieren ausschalte. Da ich im "Testplayer" nen Potti verbaut hab, kann 
ich das aktuell schön einstellen.

Beim Player vom Junior müsste da evtl. ne "Zeitschaltung" rein das die 
Powerbank nicht leergesaugt wird... mal schaun...

Nochmals vielen DANK!
Geiles Projekt!

von David (Gast)


Lesenswert?

David schrieb:
> Hallo zusammen! Ich muss mich auch mal wieder melden. Hatte jemals
> jemand Erfolg beim Abspielen vom USB Speicher anstelle der SD Karte? Ich
> habe vieles ausprobiert. Das Abspielen funktioniert grundsätzlich auch,
> jedoch funktionieren die Funktionen Repeat, continuous Play und Play
> last at startup (oder wie die heissen) nicht. Der Player spielt egal wie
> die Einstellungen sind immer nur 1 track und verstummt danach. Im Code
> habe ich die PlaySource auf U gelegt.
> Hat jemand eine Idee woran dies liegen könnte?

Vielleicht ist meine Frage gestern zwischen der Problembearbeitung von 
Tim untergegangen. Darum frage ich nochmals. Hat jemand eine Idee wie 
ich das Abspielen von USB zum Funktionieren bringe?

Danke und liebe Grüsse
David

von ghmartin77 (Gast)


Lesenswert?

Hi David,

hab's zwar noch nie mit USB probiert, aber eine schnelle Google-Suche 
nach DFPlayer und USB hat folgenden Treffer zu Tage gefördert:
http://discourse.voss.earth/t/dfplayer-mini-mit-usb-stick-betreiben/1822

Vielleicht kannst du da was draus machen, zumindest klingt die 
Verhaltensbeschreibung sehr ähnlich zu deiner.

Grüße
ghmartin77

von David (Gast)


Lesenswert?

ghmartin77 schrieb:
> Vielleicht kannst du da was draus machen, zumindest klingt die
> Verhaltensbeschreibung sehr ähnlich zu deiner.

Hallo Martin
Danke füe diesen Tip. Ich habs versucht dies in den code zu 
intergrieren. Nun funktioniert das zuletzt gespielte beim einschalten 
spielen, fortlaufend abspielen und repeat1 geht leider immer noch nicht. 
Hast du noch eine Idee woran dies liegen könnte?

Herzlichen Dank
David

von ghmartin77 (Gast)


Lesenswert?

Hi David,

ein paar Ideen hätte ich noch:
1) Du kannst mal die letzte Version der DFMiniMp3.h von hier nehmen:
https://github.com/Makuna/DFMiniMp3
Da wurde -seitdem ich sie in den Player integriert hatte- noch ein 
bissel was geändert, u.a. in Bezug auf USB. Der Fix, der oben verlinkt 
war, ist auch bereits aufgenommen. Tipp: DfMp3_PlaySource_U heisst in 
der neuen Version DfMp3_PlaySource_Usb.

2) Falls das immer noch nicht geht, hilft folgendes vielleicht weiter. 
Anstarten eines Tracks nachdem ein vorheriger ausgelaufen ist (egal ob 
Repeat1 oder PlayNext), basiert auf der ausgelesenen Tracknummer, wenn 
der Track gestartet wird:
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L404

Wenn die ermittelte Zahl nicht stimmt, greift die Bedingung hier nicht 
und das Anstarten des nächsten/gleichen Tracks erfolgt nicht:
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L76

Die Spec vom Player (https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299) 
listet u.a. folgende Commands:
0x4b - Queries the current track of TF card
0x4c - Queries the current track of U-Disk
0x4d - Queries the current track of Flash

DFMiniMp3.h nutzt 0x4c, unabhängig von der gesetzten Playback-Source:
https://github.com/Makuna/DFMiniMp3/blob/master/src/DFMiniMp3.h#L147
...und funktioniert scheinbar für SD-Karten, auch wenn ich 0x4c oben als 
USB verstanden hätte...
Da könnte man mal einen anderen Wert (0x4b oder 0x4d) ausprobieren.

Gutes Gelingen...

Grüße
ghmartin77

von ghmartin77 (Gast)


Lesenswert?

Verlängerung vorangegangener Beitrag:
#2 mit Wert 0x4b scheint mir vielversprechend.
Siehe Implementierung dieser Lib:
https://github.com/DFRobot/DFRobotDFPlayerMini/blob/master/DFRobotDFPlayerMini.cpp#L474

Grüße
ghmartin77

von David (Gast)


Lesenswert?

ghmartin77 schrieb:
> #2 mit Wert 0x4b scheint mir vielversprechend.

Ich habe diesen Tip als erstes ausprobiert = Volltreffer! Ich bin dir 
unglaublich dankbar für deine Hilfe!

von ghmartin77 (Gast)


Angehängte Dateien:

Lesenswert?

So du Zeit und Muße hast, könntest du angehängten Code mal probieren. 
Dann kann ich a) das Git-Repo aktualisieren und b) Makuna/DFMiniMp3 
einen Fix zukommen lassen.

Ich konnte mangels Hardware-Setup leider wieder nur "blind" 
implementieren :)

Grüße
ghmartin77

von David (Gast)


Lesenswert?

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. Im Code finde ich in dem Abschnitt wo festgelegt wird welche 
Taste für welchen Befehl ist und welcher Sprachbefehl abgespielt wird 
keinen Unterschied bei den verschiedenen Funktionen. Hast du mir da auch 
noch einen Tip?

von David (Gast)


Lesenswert?

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. Im Code finde ich in dem Abschnitt wo festgelegt wird welche 
Taste für welchen Befehl ist und welcher Sprachbefehl abgespielt wird 
keinen Unterschied bei den verschiedenen Funktionen. Hast du mir da auch 
noch einen Tip?

ghmartin77 schrieb:
> Ich konnte mangels Hardware-Setup leider wieder nur "blind"
> implementieren :)

Momentan habe ich leider die passende Hardware dazu auch nicht zur Hand. 
Der betroffene Player ist etwas erweitert zu deiner Ausgangsversion. Es 
läuft ein Arduino Nano mit 12 Playlisttasten und zusätzlich einer 
Ladestandsanzeige mittels rgb-LED.

von ghmartin77 (Gast)


Lesenswert?

David schrieb:
> Wenn
> ich Repeat1 ein- bzw. ausschalte, spielt der laufende Track nach der
> Ansage nicht mehr weiter. Bei all den anderen Funktionen klappt es
> problemlos.

Ist das reproduzierbar? Klingt mir recht mysteriös, weil -wie du schon 
schreibst- der Code (zumindest im Original) auch für andere 
Feature-An/Aus-Knöppe der gleiche ist...

Theorie anbei:
Für die Ansagen wird abhängig vom Status des Players entweder playMp3 
oder playAdvertisement aufgerufen. Letzteres im Falle, dass der Player 
im Status "Abspielen" ist. Das Fortsetzen des laufenden MP3s nach dem 
playAdvertisment macht der DFPlayer ganz allein. Wenn er das nicht tut, 
ist das entweder ein Bug der Hardware (halte ich für unwahrscheinlich), 
oder die vorgenannte status-basierte Weiche funktioniert nicht (immer).
Da du einen Arduino einsetzt, kannst du preiswert ein paar Log-Ausgaben 
auf dessen Serial-Port schreiben:
https://github.com/ghmartin77/KidsMP3Player/blob/master/KidsMP3Player/KidsMP3Player.ino#L177

Vielleicht kannst du dich damit rantasten, was die Ursache des Problems 
ist...

Grüße
ghmartin77

von Malte (Gast)


Lesenswert?

Hallo,

ich habe ebenfalls Probleme mit dem DFPlayer Modul:

- Ich kann zwischen den Verzeichnisen herumspringen und es werden die 
Lieder darin abgespielt
- Mit einem Tastendruck kann ich im Ordner das nächste Lied auswählen
- Allerdings wird immer das selbe Lied abgespielt, ich muss also manuell 
weiter klicken

Ich habe es mit zwei DFPlayer Modulen probiert:
MH3028M-24SS
und
AA1034CJ5M2U.1-94 (schwer zu lesen)
Blaues "Licht", selbes verhalten

Kommunikation findet statt:

RX Pin DFPlayer
7E FF 06 0F 00 01 02 FE E9 EF
7E FF 06 4C 00 00 00 FE AF EF
TX Pin DFPlayer
7E FF 06 4C 00 00 02 FE AD EF

Zweiter Tastendruck

RX Pin DFPlayer
7E FF 06 0F 00 01 01 FE EA EF
7E FF 06 4C 00 00 00 FE AF EF
TX Pin DFPlayer
7E FF 06 4C 00 00 01 FE AE EF

ATtinySerialOut-> 1.0.4
DFMiniMp3 ( Makuna?) 1.0.3
Mit AVR Dragon/AVR Studio geflasht
8Gb SD - Karte
Continous play ist "aus" per Taster
Ordner auf SD-Karte 01 bis 11; ADVERT und MP3
Dateinamen in den jweiligen Ordnern 001...00x.mp3; In ADVERT und MP3 4 - 
stellig


Grüße
Malte

von ghmartin77 (Gast)


Lesenswert?

Hallo Malte,

die Beschreibung der Zusammenstellung der "Umgebung" ist sehr gut. Und 
die Darstellung der Bytes, die zwischen uC und DFPlayer hin- und 
herfließen, ist auch prima.

Ich habe allerdings die Problembeschreibung noch nicht geschnallt.

Malte schrieb:
> - Ich kann zwischen den Verzeichnisen herumspringen und es werden die
> Lieder darin abgespielt

Das ist doch gut. Alle Lieder? Nur das erste? Wird zufällig irgendeins 
aus dem Ordner, der zur Taste gehört, abgespielt?

> - Mit einem Tastendruck kann ich im Ordner das nächste Lied auswählen

Das klingt doch auch erstmal gut, wenn das geht. Was ist "ein 
Tastendruck"? Hast du eine "Next"-Funktion auf eine Taste gelegt oder 
ist es ein erneuter Tastendruck für einen Track einer Playlist, die 
gerade läuft?

> - Allerdings wird immer das selbe Lied abgespielt, ...

Versteh ich nicht. Oben schreibst du, du kannst mit einem Tastendruck 
das nächste Lied auswählen...

> ich muss also manuell weiter klicken

Wenn "Continuous Play" aus ist, wie du oben schreibst, ist das doch auch 
richtig?!

Beschreib bitte noch mal, was du tust (welche Knöpfe konkret du 
drückst), was du erwartest, was dann passieren sollte und was 
stattdessen tatsächlich passiert.

Bitte auch bei der Kommunikation zwischen uC und DFPlayer einsortieren 
welche Byte-Kette bei welchem konkreten Tastendruck erfolgt...

Danke!

Grüße
ghmartin77

von Malte (Gast)


Lesenswert?

Hallo,

also am Code habe ich nichts geändert, also wie auf Github.

Springe ich in ein Verzeichnis "3", so wird der zuletzt angewählte Titel 
(z.B. 001) selbstständig immer und immer wieder wiederholt bis ich eben 
die "3" drücke und das Lied 002 immer und immer wieder wiederholt 
abgespielt wird. Selbstständig wird das nächste Lied nicht angesprungen.

Genau das Verhalten würde ich erwarten wenn eben "Continuos Play" aktiv 
ist. Aber durch längeres Drücken der Taste "1" kann ich das ja 
umschalten, ich bekomme auch eine entsprechende Bestätigung.

Nach einem Neustart (Stromlos) wird auch wieder das zuletzt gespielte 
Lied abgespielt
Hier die Kommunikation am DFPlayer angeschlossen, 7E FF habe ich weg 
gelassen (gibt es ein HTerm mit zwei Uart in einem Fenster? So, das der 
zeitliche Zusammenhand erhalten bleibt)
Tastendruck 1:
DFPLayer RX Pin: 06 0F 00 01 01 FE EA EF
DFPLayer TX Pin: 06 4C 00 00 01 FE AE EF
DFPLayer RX Pin: 06 4C 00 00 00 FE AF EF

Ende Lied, gleiches Lied wird abgespielt:
DFPLayer TX Pin 06 3D 00 00 01 FE BD EF
DFPLayer TX Pin 06 3D 00 00 01 FE BD EF
DFPLayer RX Pin 06 0F 00 01 01 FE EA EF
DFPLayer RX Pin 06 4C 00 00 00 FE AF EF
DFPLayer TX Pin 06 4C 00 00 01 FE AE EF

Drücke ich eine andere Taste, so wird in dem entsprechenden Verzeichnis 
bei Lied 001 begonnen, ohne selbstständig das nächste zu starten.

Grüße
Malte

von ghmartin77 (Gast)


Lesenswert?

Das klingt mir nach "Repeat1 aktiv". Halte doch mal die Taste 4 für 2 
Sekunden und schau, ob das "Problem" danach verschwindet...

Grüße
ghmartin77

von Christian S. (chris02)


Lesenswert?

Repeat ist bei deinem aktuellem GitHub Upload anscheinend vorausgewählt 
aktiv. War bei mir auch der Fall.

Eine kleine Sache noch für's Archiv. Habe den Player mit einem Arduino 
Nano laufen.
Bei einem ging das abspielen direkt nach Power On los, beim Anderen 
nicht. Durch einen Kreuztausch der Komponenten hat sich eindeutig den 
Arduino als Fehlerquelle raus gestellt. Nach einem komplett Löschen und 
Bootloader per ISP neu schreiben geht es auch mit diesem Arduino. Wer 
weiß was die Chinesen da drauf gespielt haben...

von ghmartin77 (Gast)


Lesenswert?

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

von Malte (Gast)


Lesenswert?

Hallo,

ja -> erledigt.

Das Problem saß vor dem PC. Ich hatte mir nur das User Manual angesehen 
und hatte mich auf Button 1 fixiert.
Danke trotzdem für die Unterstützung.

Grüße
Malte

von Tim (Gast)


Lesenswert?

ghmartin77 schrieb:
> So du Zeit und Muße hast, könntest du angehängten Code mal probieren.
> Dann kann ich a) das Git-Repo aktualisieren und b) Makuna/DFMiniMp3
> einen Fix zukommen lassen.
>
> Ich konnte mangels Hardware-Setup leider wieder nur "blind"
> implementieren :)
>
> Grüße
> ghmartin77


Teste gerade den neuen Code mit der USB-Schnittstelle.
Scheint jetzt alles zu funktionieren.

Seit dem letzten Update funktionieren ebenfalls Player mit der 
"Roten-LED"
(welche vorher bei mir gar nicht funktionierten)

Bastel gerade am Player 2.0. Dieser bekommt einen kleinen Verstärker, 
Stereo Lautsprecher, USB, Line in und Kopfhöreranschluss.

von Tim (Gast)


Lesenswert?

Hat jemand Erfahrungen mit einem Verstärker am DFR0299?
Habe diverse Verstärker getestet und immer laute Störgeräusche.
Wie kann ich das unterbinden?

Schließe ich den Heimkinoverstärker oder Aktivboxen dran, treten keine 
Störungen auf...

von ghmartin77 (Gast)


Lesenswert?

Tim schrieb:
> Teste gerade den neuen Code mit der USB-Schnittstelle.
> Scheint jetzt alles zu funktionieren.
>
> Seit dem letzten Update funktionieren ebenfalls Player mit der
> "Roten-LED"
> (welche vorher bei mir gar nicht funktionierten)

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"

Grüße
ghmartin77

von Tim (Gast)


Lesenswert?

Richtig!
Bisher ist mir kein bug aufgefallen!

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.