Arduino UNO Mini mit MP3 Shield

In diesem Beitrag zeige ich dir, wie du ein kleinen MP3-Player mit dem Arduino UNO Mini LE und ein ebenso kleines MP3 Shield programmierst.

MP3 Shield - MP3 TF 16P V3
MP3 Shield – MP3 TF 16P V3

Im Beitrag Arduino Lektion 72: MP3 Shield habe ich dir bereits ein Shield vorgestellt, welches einfach auf den Arduino UNO gesteckt wird und über 3,5 mm Klinkenbuchsen die Lautsprecher angeschlossen werden. Den hier verwendeten Mikrocontroller vom Typ Arduino UNO Mini LE (Limited Edition) habe ich von der Firma Conrad Elektronic vergünstigt erhalten, eigentlich ein Vitrinenstück, jedoch irgendwie zu schade um nur herumzustehen.

Bezug des MP3 Shields

Für diesen Beitrag verwende ich das Modul „MP3 DFPlayer Decoder Modul MH2024K-24SS“ welches du bereits für knapp 4 € zzgl. Versandkosten auf ebay.de findest.

Ich habe bei der Bestellung darauf geachtet, dass gleich ein passender 1 kOhm Widerstand dabei ist, da dieser beim Aufbau der Schaltung benötigt wird.

Damit du jedoch MP3 Dateien wiedergeben kannst, benötigst du noch eine SD-Karte & ein kleinen Lautsprecher mit Lötfäden.

Aufbau & Pinout des MP3 Shield

Das hier verwendete MP3 Shield hat die Abmaße (L x B x H) von 2 cm x 2 cm x 1,3 cm und besitzt auf der Oberseite ein Micro-SD-Kartenslot.

Pinout des MP3 Shield von Typ MH2024K-24SS

Pinout des MP3 Shields MP3-TF-16P V3
Pinout des MP3 Shields MP3-TF-16P V3

Aufbau der Schaltung

Für den Aufbau der Schaltung benötigen wir:

  • einen Mikrocontroller zbsp. Arduino UNO, Arduino UNO Mini LE,
  • ein passendes USB Datenkabel,
  • das MP3 Shield vom Typ MH2024K-24SS,
  • zwei Breadboardkabel,
  • ein 1 kOhm Widerstand, sowie
  • ein 400 Pin Breadboard

Der Aufbau der Schaltung ist mit Breadboardkabeln schnell gemacht und ein 400 Pin Breadboard bietet für diese Schaltung auch mehr als genug platz.

Schaltung - MP3 Shield am Arduino UNO
Schaltung – MP3 Shield am Arduino UNO
BauteilArduino UNO
MP3 Shield
VCC5V
GNDGND
TXdigitaler Pin D10
RXdigitaler Pin D12 über 1 kOhm Widerstand
Lautsprecher
+SPK1
SPK2
Anschluss der Bauteile am Arduino UNO für einen einfachen MP3 Player

Programmierung eines einfachen MP3 Players

Zunächst möchte ich dir zeigen, wie du einen einfachen MP3-Player programmieren kannst. D.h. es soll zunächst „nur“ eine Datei abgespielt werden.

Benötigte Bibliothek von DFRobot

Für die Programmierung des MP3 Shields verwende ich die Bibliothek von DFRobot welche du vom GitHub Repository DFRobot / DFRobotDFPlayerMini als ZIP-Datei herunterladen kannst.

Wie du eine ZIP-Datei in der Arduino IDE installierst habe ich dir bereits im Beitrag Arduino IDE, Einbinden einer Bibliothek ausführlich erläutert.

Quellcode eines einfachen MP3 Players

Der Bibliothek von DFRobot liegen drei Beispiele bei, von den wir zunächst das Beispiel „GetStartet“ verwenden.

Ich habe das Beispiel einmal um ein paar Kommentare ergänzt.

#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 12); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup() {
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);

  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initialisieren der Verbindug zum DFPlayer ..."));
  Serial.println(F("(dieses kann ca. 3 bis 5 Sekunden dauern)"));


  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Fehler beim Aufbau der seriellen Verbindung:"));
    Serial.println(F("1.bitte prüfe die Verbindungen"));
    Serial.println(F("2.bitte SD-Card einführen"));
  }
  Serial.println(F("Verbindung zum DFPlayer Mini hergestellt."));

  //setzen der Lautstärke (0..30)
  myDFPlayer.volume(10);
  //abspielen des ersten Musikstücks
  myDFPlayer.play(1);
}

void loop() {
  static unsigned long timer = millis();

  //30 Sekunden des Titels abspielen
  if (millis() - timer > 30000) {
    timer = millis();
    myDFPlayer.next();
  }

  //Ausgeben von Debuginformationen
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read());
  }
}

void printDetail(uint8_t type, int value) {
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerUSBInserted:
      Serial.println("USB Inserted!");
      break;
    case DFPlayerUSBRemoved:
      Serial.println("USB Removed!");
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }

}

Video

In dem Video gebe ich ein lizenzfreies MP3 aus der YouTube Audiolibrary wieder.

2 Kommentare

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.