Jukebox mit dem DFPlayer - AZ-Delivery

Die Idee der Jukebox

 

Kinder lieben Überraschungen, z.B. eine „Wunderkiste“, die beim Öffnen wie von Zauberhand eine Melodie spielt. Das habe ich ausprobiert - der Erfolg war sensationell. Die Jukebox aus der Wunderkiste kennt viele Melodien, zu denen Kinder singen und hüpfen können. Die Mühe lohnt sich.

 

Aber auch unabhängig von der „Wunderkiste“ ist es manchmal gewünscht, dass ein Player beim Einschalten der Stromversorgung automatisch anläuft. Zum Beispiel für eine Warnung, eine wichtige Fehlermeldung oder eine andere Ansage. Selbstverständlich hat er eine Funktion, um den ersten Jingle abzuspielen. Das Problem ist: wenn man den DFPlayer einschaltet, braucht er ca. 2s, um bereit zu sein. Erst danach kann man eine mp3-Datei starten. Diesen Ablauf gilt es zu automatisieren.

Folgende Bauteile werden benötigt:

 

1

DFPlayer

1

Potentiometer 10 kΩ

2

Tasten aus Taster Set

1

Lautsprecher

7

Widerstände aus Widerstandsortiment
2x22k, 4k7, 22k+2k2, 10k+4k7

2

Kondensatoren aus Elkosortiment
1x100µF, 1x10µF

1

10 nF aus Sortiment Keramikkondensatoren

1

Step-Down Wandler LM2596S zur Stromversorgung

2

CD4093 - Elektronikfachhandel        

1

NE555 (Amazon)

1

NPN-Transistor 2N2222 (Amazon)

 

Der DFPlayer

Das Modul ist in der AZ-Dokumentation ausführlich beschrieben, auch sind die Funktionen detailliert dargestellt, um einen DFPlayer per Mikrocontroller zu steuern. Z.B. im 6-teiligen Beitrag zum TDMM ist dies genau erklärt. Für die beschriebene Anwendung benutzen wir keinen Mikrocontroller, sondern die ADKEY-Funktionalität des DFPlayer mit etwas Hardware drum herum.

 

Dazu werden zwei Widerstände an den Anschluss ADKEY1 angeschlossen, in unserem Fall 15 kΩ und 24 kΩ. Am anderen Ende jedes Widerstandes liegt eine Taste, die eine Verbindung zu Masse (GND) herstellt. So entsteht durch einen internen Widerstand im DFPlayer ein Spannungsteiler. Der DFPlayer misst die resultierende Spannung, erkennt welcher Widerstand gegen Masse geschaltet wurde und führt die gewünschte Funktion aus.

 

Mit dieser eleganten Schaltung kann man 10 Funktionen über 10 verschiedene Widerstände abbilden und braucht doch nur einen Pin am Player. Das spart einen „Kabelsalat“ an 10 digitalen Pins. Der Player bleibt kompakt und bietet doch eine Fülle von Funktionen, von denen wir diesmal nur zwei benötigen.

 

Wir werden einen Taster SW2 einsetzen, um das nächste Jingle abzuspielen, oder die Lautstärke zu erhöhen (länger drücken). SW1 reduziert die Lautstärke bzw. spielt das vorherige Jingle ab.

 

Die technische Herausforderung

Die tatsächliche Herausforderung liegt im zeitlichen Ablauf nach dem Einschalten der Stromversorgung:

   Gerät wird eingeschaltet;  der Player ist nach ca. 2s bereit.

   Erst danach wird ein Impuls von ca. 200 - 300 ms gebraucht, der den Anschluss ADKEY1 über den 24 kΩ Widerstand kurz gegen Masse zieht. Dieser Impuls simuliert den händischen Tastendruck auf SW2.

 

Man könnte einen einfachen Mikrocontroller ohne viel Aufwand dafür programmieren.  Das wird selbstverständlich funktionieren. In unserem Fall verknüpfe ich die technische Lösung mit vier kleinen Kapiteln der analogen und digitalen Schaltungstechnik. Und zwar:

   Das RC-Glied als Zeitgeber; wie wird es berechnet, wie funktioniert es?

   Ein Schmitt-Trigger zur Signalformung

   Die Funktion des XNOR-Schaltkreises als digitaler Vergleicher

   NE555 - das klassische Arbeitspferd für viele Kippschaltungen liefert den 200ms-Schaltimpuls

 

Keine Sorge, it’s no rocket science! Ich denke, es macht ein wenig Spaß, mal wieder in die Grundlagen der Elektronik einzutauchen.

Schauen wir uns dafür zunächst die Schaltung an:

Abbildung 1: Jukebox Schaltung

Das RC-Glied als Zeitgeber; wie wird es berechnet, wie funktioniert es?

Wir sehen auf der linken Seite des Schaltplanes die Stromversorgung +5V als Kreissymbol mit einem „=”

in der Mitte. Das zeitbestimmende RC-Glied wird aus dem Widerstand R1 (22 kΩ) und dem Kondensator C1 (100 uF) gebildet. Dieses RC-Glied liefert die Einschaltverzögerung. Schauen wir uns dazu die Schaltungssimulation an, die uns die Ausgangsspannung V(Out) an C1 als Funktion der Zeit (x-Achse) für die Dauer von 6s zeigt:

Abbildung 2: Spannungsverlauf V(out) eines RC-Gliedes

Die Betriebsspannung wird zum Zeitpunkt 0 angelegt. Zu diesem Zeitpunkt ist auch die Spannung an C1 bei 0V. Nun wird der Kondensator C1 über den Widerstand R1 aufgeladen und erreicht nach 2s eine Spannung von 3V. Nach 6s (ganz rechts) ist er erst bei ca. 4.7V angekommen!

Die Zeitkonstante eines RC-Gliedes wird so berechnet:

t = R x C   [ s ]

Dabei wird der Widerstand R in Ω angegeben, die Kapazität C in F (Farad). Das ist etwas unhandlich, weil wir hier z.B. einen Kondensator von 100 µF verwenden. 1 µF ist ein millionstel Farad. Rechnen wir also:

t =  22000 Ω x 0,000 1 F
t = 2,2 s

 

In 2,2s hat sich der Kondensator von 0V auf 3V aufgeladen. Das ist, was der Begriff „Zeitkonstante“ aussagt. Er ist dann bei rund 60% der Eingangsspannung angekommen. Genau dies zeigt auch die Schaltungssimulation.


Wann ist er wirklich bis auf 5V aufgeladen? Der theoretische Physiker antwortet: Nie!
Der pragmatische Elektroniker kann damit nichts anfangen. Er benutzt die bewährte Regel:

Ein Kondensator ist bei 5 x t - der fünffachen Zeitkonstante - voll aufgeladen. In unserem Fall ca. 11s.

Wie nutzen wir das RC-Glied?

Unsere Anforderung war: wir wollen, dass die Jukebox nach ca. 2s gestartet wird. Bis dahin braucht der DFPlayer etwas Zeit, um in den „Ready-Zustand“ zu kommen.  Danach benötigen wir einen Impuls von ca. 200 - 300 ms, der einen Tastendruck simuliert und so eine ADKEY1-Funktion auslöst.

 

Wir bauen nun eine Schaltung, die abwartet, bis der Kondensator nach 2s auf 3V aufgeladen ist und dann schaltet. Die Spannung könnten wir auch über den Analogeingang eines Mikrocontrollers messen, aber wir wollen hier unser Elektronik-Grundlagenwissen anwenden und bleiben bei klassischer Technologie.

 

Wir benutzen eine sog. „Diskriminatorschaltung“, einen Schmitt-Trigger, der das Schalten übernimmt.

Der Schmitt-Trigger CD4093

Dieser CMOS-Chip hat sich als Arbeitspferd bewährt. Als NAND-Gatter mit Schaltschwelle vergleicht er zwei Spannungen und liefert ein digitales Ausgangssignal, wenn die Spannung an einem Eingang größer oder gleich der Vergleichsspannung ist, die wir mit dem Potentiometer RV1 einstellen. Der Eingang Pin 1 ist mit RV1 verbunden, der andere Eingang Pin 2 mit dem Kondensator C1.

 

Der 4093 „schaut dem Kondensator beim Aufladen“ zu. Sobald die Vergleichsspannung am Poti bei 3V angekommen ist, springt der Ausgang A auf „logisch Null = 0V“ um, denn wir haben es mit einem NAND-Gatter zu tun. Wir brauchen nur noch das Poti RV1 so einzustellen, dass dies nach ca. 2s passiert.

 

Am einfachsten ist es, das Poti RV1 mit einem DVM (oder dem TDMM) auf 3V einzustellen.


Dazu habe ich ein paar Versuche gemacht und festgestellt, dass der 100 µF Elektrolytkondensator aus der AZ-Sortimentsbox recht hochwertig ist. Wenn man mehrere Versuche macht, um die optimale Zeit zu bestimmen, dann muss man zwischen den Versuchen immer wieder den Kondensator über einen Widerstand von z.B. 100 Ω entladen. Bitte nicht kurzschließen! Der Kondensator speichert die Ladung so gut, dass man sonst nie bei 0V beginnen kann. Und dann stimmt die ganze Einstellung nicht.

 

Nun haben wir es geschafft, auf dem Weg der Spannung V(Out) nach oben am richtigen Punkt einen Schaltvorgang auszulösen. Wie geht es weiter? Wir wollen folgendes Impulsschema abbilden:

Abbildung 3: Signalverläufe am Schmitt-Trigger U1

Das Diagramm zeigt drei digitale Signale am Chip U1:

   Den Ausgang A, hier als „U1A“ bezeichnet, des gerade besprochenen Schmitt-Triggers. Er wechselt nach ca. 2s von HIGH (+5V) auf LOW (0V).

   Den Ausgang U1B eines weiteren Schmitt-Trigger, der wartet bis C1 aufgeladen ist

   Den Ausgang B, hier als „U1C“ bezeichnet, der das Ausgangssignal von U1B invertiert. Aus „HIGH“ macht er „LOW“ und umgekehrt. Wir verstehen gleich, wozu der Inverter nötig ist.

 

Wir erkennen die simple Logik: Der Schmitt-Trigger U1A schaltet nach 2s auf LOW. Der zweite Schmitt-Trigger U1B vergleicht die 5V-Betriebsspannung (Pin 6) mit der Spannung an C1 (Pin 5). Er wartet, bis der Kondensator voll aufgeladen ist. Da ein Schmitt-Trigger absichtlich eine Hysterese mitbringt, also einen „Spielraum“ innerhalb dessen er schaltet, kippt er den Ausgang früher, als man es erwarten würde, auf LOW. Sie sehen in der Simulation, dass die exponentielle Aufladekurve von C1 immer flacher verläuft, wenn die Spannung ansteigt. Der Spannungsverlauf folgt dem natürlichen Logarithmus. Diese Eigenschaft des RC-Gliedes und die Hysterese des 4093 liefern LOW an Ausgang B schon ca. 50ms nach dem ersten Schaltvorgang an U1A.

 

Wie generieren wir daraus einen Impuls, um unseren DFPlayer zu starten?

 

Wenn Sie den roten Signalverlauf an U1A und den an U1C vergleichen, stellen Sie fest, dass die beiden Signale gleichzeitig in den ersten 2s HIGH sind. Nach 2s fällt die Flanke von U1A auf LOW, während U1C noch HIGH bleibt. Das ändert sich, wenn U1C 50ms später an seine Schaltschwelle kommt.

 

Die Signale sind somit für einen Zeitraum von ca. 50ms ungleich (gestrichelte grüne Linie; das ∆t ist zur Verdeutlichung nicht maßstäblich eingezeichnet!). Ansonsten sind beide Signale gleich: Entweder HIGH oder LOW. Mit diesen Signalen steuern wir einen Schaltkreis an, der gleiche und ungleiche Signale unterscheiden kann, ein sog XNOR-Gatter, einen digitalen Vergleicher.

Die Funktion des XNOR-Schaltkreises als digitaler Vergleicher

XNOR-Gatter erhalten an ihren Eingängen A und B digitale Signale und liefern am Ausgang eine Antwort entsprechend dieser Wahrheitstabelle:

Abbildung 4: Wahrheitstabelle eines XNOR-Gate

Wir verwenden dafür keinen XNOR-Chip, obwohl das möglich wäre. Wir nehmen einen weiteren CD 4093 (ich habe 35 Cent für einen IC bezahlt) und bauen uns daraus selbst ein XNOR-Gatter. Die Schaltung dafür ist allgemein bekannt, weshalb ich sie hier nicht noch einmal erklären möchte. Sie sehen den Schaltungsblock mit dem Schaltkreis U2/U3 in unserem Schaltschema in Abbildung 1 unter der Überschrift „Impulsfilter - XNOR-Gatter aus NANDs“. Der 4093 enthält alle vier NAND-Gatter, die hier mit U2/U3 bezeichnet sind.


Das XNOR liefert am Ausgang Pin4 / U3B einen Impuls, der so lange dauert, wie die beiden Signale (s.o.) ungleich sind. Bei meinem Musteraufbau sind das 50ms.

 

Dieser Impuls ist zu kurz, um den DFPlayer zu starten. Der Player ist auf die Bedienung durch einen Menschen eingerichtet und erwartet einen Tastendruck von ≥ 200 ms. Also müssen wir diesen Impuls verlängern. Dazu greifen wir erneut auf ein RC-Glied zurück, das diesmal mit einem klassischen Timerchip verbunden ist, dem NE555.

NE555 - das klassische Arbeitspferd für viele Kippschaltungen

Es gibt ganze Bücher und zahlreiche Anwendungen für diesen Klassiker, der 1972 auf den Markt kam. Es ist wohl der weltweit am meisten verkaufte Chip überhaupt: Wikipedia/NE555

 

Das zeitbestimmende RC-Glied bilden R2 (22 kΩ) und C3 (10 µF).  Die Zeitkonstante berechnet sich wieder direkt aus R und C, allerdings mit einem Faktor ln(3) multipliziert ( ln(3)~ 1,1):

t = R x C x 1,1  [s]

 

Mit unserer Dimensionierung ergibt sich:

t = 22000 Ω x 0,000 01 F x 1,1

t = 240 ms

 

Der NE555 ist als Monoflop geschaltet. So bezeichnet man einen Schaltkreis, der einen Startimpuls bekommt, also „angestoßen wird“ und darauf mit einem genau definierten Impuls antwortet. In unserem Fall ist der Startimpuls ca. 50ms lang, die Antwort des NE555 ist ein Impuls von 240ms.

 

Nun sind wir mit der Signalaufbereitung am Ziel angekommen. Aus der Aufladung eines Kondensators haben wir ein zeitverzögertes Signal abgeleitet, das unseren DFPlayer starten kann.

Steuertransistor 2N2222 als letzte Schaltstufe

Das HIGH-Ausgangssignal des NE555 ist nicht geeignet, um den ADKEY1-Eingang anzusteuern. Dafür muss der 24kΩ-Widerstand „auf Masse gezogen werden“, also auf LOW. Wir setzen einen NPN-Transistor 2N2222 ein. Seine Basis wird mit dem HIGH-Signal des NE555 über den 4,7k Widerstand R3 angesteuert. Die CE-Strecke des 2N2222 wird leitend, der 24k Widerstand an ADKEY1 liegt für 240ms fast auf Masse. Der DFPlayer startet mit dieser Beschaltung zuverlässig.

Gut zu wissen

Wenn die Schaltung ein paar Minuten ausgeschaltet war, hatte der Kondensator C1 ausreichend Zeit, sich zu entladen. Wenn man die Schaltung 5 Mal in der Minute neu starten möchte (Kinder haben solche Ideen), dann kann er sich nicht ausreichend entladen. Der Player startet dann nicht.

 

Ein Widerstand von 470 kΩ parallel zum Kondensator schafft Abhilfe. Evtl. muss die Einstellung von RV1 in diesem Fall etwas nachkorrigiert werden.

Beschaltung und Bedienung des DFPlayer

Im unteren, linken Teil zeigt der Schaltplan in Abbildung 1 den DFPlayer mit seiner recht übersichtlichen Beschaltung. Der Player bringt einen integrierten Verstärker mit, an den ein Lautsprecher mit 8 Ω Impedanz und einer Leistung ≤ 3W direkt angeschlossen werden kann.

 

Außer der Stromversorgung braucht es nur noch die beiden Widerstände R4 (15 kΩ) und R5 (24 kΩ), die über zwei Tasten mit Masse verbunden werden können. R4 bilden wir aus einem 10 kΩ und einem 4,7 kΩ Widerstand, die in Serie geschaltet werden.  Für R5 schalten wir einen 22 kΩ und einen 2,2 kΩ - Widerstand in Serie.

 

Nicht vergessen: Die Verbindung vom Kollektor des Schalttransistors T1 zu SW 2.

 

Damit ist das kleine Gerät fertig aufgebaut und funktionsfähig. Es hat einen Einschalter, der so eingerichtet ist, dass er es einschaltet, wenn die „Wunderkiste“ geöffnet wird und zwei Taster zur Bedienung:

   Taster SW2 wird kurz gedrückt,  um das nächste Jingle abzuspielen (kurz drücken) oder die Lautstärke zu erhöhen  (länger drücken).

   Taster SW1 verringert die Lautstärke (kurz drücken) bzw. spielt das vorherige Jingle (länger drücken).

 

Hinweis: Keine Ahnung, ob das nur bei meinen drei DFPlayern so ist, aber in allen Datenblättern und auch im Wiki der Herstellerfirma dfrobot sind die Funktionen anders herum angegeben. Bitte testen!

 

Woher kommt die Musik?

Möchten Sie Musik für Kinder aufspielen, so kann ich einen Praxistipp des Magazins FOCUS weitergeben, der sich mit diesem Thema beschäftigt:

Kinderlieder kostenlos downloaden

 

Ansonsten bietet auch Kinderlieder bei pixabay einen Bereich mit freien Kinderlieder-Downloads an und sicherlich finden Sie weitere Quellen im Netz.

 

Wie kommt die Musik auf die SD-Karte?

Tatsächlich ist dieser Ablauf nicht völlig trivial.

   Die SD-Karte hat FAT16 Format. FAT32 funktioniert offensichtlich auch.

   mp3-Files werden in der Reihenfolge abgespielt, in der sie aufgespielt wurden. Daran ändern auch alle möglichen Namensgebungen nichts.

   Filenamen sind 4-stellige Zahlen, denen ein Text folgen kann. Z.B.:    0004_alle_meine-entchen.mp3

   Die mp3-Files liegen in einem Ordner mit dem Namen musik.mp3

 

Abbildung 5: Inhalt des Ordners musik.mp3

Meine mp3-Dateien stelle ich Ihnen im Rahmen dieses Beitrags gerne zur Verfügung. Damit ersparen Sie sich einige Sucharbeit und lästige Probleme mit dem Dateisystem.

 

Möchten Sie weitere Lieder in den Ordner packen, dann wählen Sie bitte die nächstfolgende Nummer und legen die Datei in den Ordner. Für Mac-Benutzer kann es dabei zu Problemen kommen, denn mancher Mac erstellt - ohne dass Sie gefragt werden oder er es anzeigt - eine zusätzliche Datei in der Art: „ ._0001.mp3 " oder ähnlich. Diese Datei sieht für den DFPlayer wie eine mp3 aus, enthält aber keine Musik und stört den Ablauf. Sie wird nicht von jeder Mac OS X Version generiert, aber von älteren Systemen. Man wird diese Datei los, indem man das Terminalprogramm mit Adminrechten öffnet und folgende Anweisung eingibt:
                       
dot_clean /Volumes/<SDVolumeName>

 

<SDVolumeName> ist der Name Ihrer SD-Karte.

Stromversorgung

Für meine Zwecke habe ich vier Batterien Typ AA zu einem 6V Bundle verbunden. Mit einem StepDown-Wandler LM2596S, der auf 5V eingestellt ist, wird das Gerät versorgt.

 

Und nun wünsche ich Ihnen und vor allem Ihren Kindern und deren Freunden ganz viel Spaß mit „Musik auf der Wunderkiste“

Ihr Michael Klein

Grundlagen elektronikProjekte für fortgeschritteneStromversorgung

Kommentar hinterlassen

Alle Kommentare werden von einem Moderator vor der Veröffentlichung überprüft

Empfohlene Blogbeiträge

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery