Ein vollwertiger mp3-Player

Wer seine Musikdateien im mp3-Format auf einer Mikro-SD-Karte gespeichert hat, kann für wenig Geld ein dazu passendes Abspielgerät herstellen. Benötigt werden:

  • Arduino-Mikrocontroller
  • DFPlayer Mini
  • Verstärkermodul
  • Lautsprecher
  • Taster
  • Widerstand von 1 kOhm
  • Steckbrücken

Für den Zusammenbau der Teile wird ein Breadboard benutzt, auf das Controller und DFPlayer gesteckt …

… und wie folgt verbunden werden:

Arduino      DFPlayer Mini
VCC          VCC
GND          GND
Pin11        RX (über 1kOhm)
Pin10        TX 

Die Anschlüsse sind auf dem Arduino-Board beschriftet. Da sie beim DFPlayer fehlen, hilft ein Blick auf das Pinout zur zweifelsfreien Identifizierung der Anschlusspunkte.

Statt des dargestellten Arduino Pro Mini eignen sich natürlich auch andere Arduino-Boards.

Zur Stromversorgung wird ein 9V-Block verwendet, wobei der Pluspol mit RAW (=Vin) und dessen Minuspol mit GND zu verbinden sind.

Zum Bereitstellen der mp3-Dateien wird die Mikro-SD-Karte mit den Kontakten nach unten in das Laufwerk eingeführt.

Für den Ton wird ein kleiner Lautsprecher verwendet. Seine beiden Pole können auf verschiedene Weisen mit dem DFPlayer verbunden werden: Spk_1 und GND, Spk_2 und GND sowie Spk_1 und Spk_2.

Für einen Funktionstest genügt diese Zusammenstellung. Zum Anhören der Musiksammlung fehlt aber die Möglichkeit, die Lautstärke zu regeln sowie zwischen den Musikstücken zu wechseln und sie zu starten und zu stoppen.

Die Lautstärkeregelung ist auf einfache Weise mit einem Audioverstärker zu lösen, an das zur Stereo-Wiedergabe zwei Lautsprecher angeschlossen werden können.

Arduino, DFPlayer und Verstärker sind wie folgt verbunden:

Arduino  Verstärker     DFPlayer   Verstärker
VCC      + Power        DAC_R      Input R
GND      - Power        DAC_L      Input L

G zwischen L und R am Input des Verstärkers kommt an GND. 

Die Auswahl der Musikstücke kann über Taster erfolgen: Zwei zum Hoch-und Runterscrollen in einer Sammlung von mp3-Dateien, einer um das Abspielen zu starten oder zu stoppen.

Die Taster sind mit den Arduino-Pins 2, 3 und 4 sowie GND verbunden.

Schließlich noch der Programmcode, der die Anlage zum Leben erweckt:

#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

int vor = 2;
int start_stopp = 3;
int rueck = 4;

bool isPlaying = false;

void setup() {
  pinMode(start_stopp, INPUT_PULLUP);
  digitalWrite(start_stopp, HIGH);
  pinMode(vor, INPUT_PULLUP);
  digitalWrite(vor, HIGH);
  pinMode(rueck, INPUT_PULLUP);
  digitalWrite(rueck, HIGH);

  mySoftwareSerial.begin(9600);
  Serial.begin(9600);

  delay(1000);

  Serial.println();
  Serial.println("DFPlayer Mini Demo");
  Serial.println("Player wird gestartet..");

  if (!myDFPlayer.begin(mySoftwareSerial)) {
    Serial.println("Kann nicht starten ..");
    Serial.println("- Verbindungen OK?");
    Serial.println("- SD-Karte eingesteckt?");
    while (true);
  }
  Serial.println(F("DFPlayer Mini Online."));

  myDFPlayer.setTimeOut(500);

  myDFPlayer.volume(20); //Werte von 0-30.

  myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);

  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);

  myDFPlayer.play(1); //Spielt die erste Datei
  isPlaying = true;
  Serial.println("Spielt..");
}

void loop() {
  if (digitalRead(start_stopp) == LOW) {
    if (isPlaying) {
      myDFPlayer.pause();
      isPlaying = false;
      Serial.println("Pausiert..");
    } else {
      isPlaying = true;
      myDFPlayer.start();
      Serial.println("Spielt..");
    }
    delay(500);
  }
  if (digitalRead(vor) == LOW) {
    if (isPlaying) {
      myDFPlayer.next();
      Serial.println("Nächstes Stück..");
    }
    delay(500);
  }

  if (digitalRead(rueck) == LOW) {
    if (isPlaying) {
      myDFPlayer.previous();
      Serial.println("Vorheriges Stück..");
    }
    delay(500);
  }
}

Nächstes Kapitel >>>>

Bezugsquellen: DFPlayer Mini, Audioverstärkerplatine, Lautsprecher Die übrigen benötigten Teile finden sich ebenfalls bei den oben verlinkten Anbietern.