Ein vollwertiger mp3-Player

Ein vollwertiger mp3-Player lässt sich mit einem Arduino-Mikrocontroller, dem DFPlayer Mini, einem Verstärkermodul und geeigneten Lautsprechern realisieren.

Für den versuchsweisen Aufbau eignet sich ein Breadboard, auf dem die benötigten Komponenten zusammengestellt und verdrahtet werden. Statt des hier verwendeten Arduino Pro Mini eignen sich natürlich auch andere Arduino-Boards.

Die Teile sind wie folgt verbunden:

Arduino DFPlayer            Arduino  Verstärker     DFPlayer   Verstärker
VCC     VCC                 VCC      + Power        DAC_R      Input R
GND     GND                 GND      - Power        DAC_L      Input L
Pin11   RX (über 1kOhm)
Pin10   TX

Die Taster sind allesamt an einem Pin mit GND und mit Pin2, 3, 4 am Arduino verbunden
Die Stromversorgung wird durch einen 9V Block sichergestellt, dessen Pluspol mit RAW und dessen Minuspol mit GND am Arduino verbunden sind

Ist die Mikro-SD-Karte mit FAT32 formatiert, können beliebige Musikstücke aufkopiert und – nach einstecken in den DFPlayer-Schacht – mit der folgenden Programmierung auf Tastendruck der Reihe nach abgespielt werden

Programmcode:

#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);
  }
}