Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Arduino UNO Mini mit MP3 Shield

Posted on 21. März 202210. März 2024 by Stefan Draeger

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
  • Aufbau & Pinout des MP3 Shield
    • Pinout des MP3 Shield von Typ MH2024K-24SS
  • Aufbau der Schaltung
  • Programmierung eines einfachen MP3 Players
    • Benötigte Bibliothek von DFRobot
    • Quellcode eines einfachen MP3 Players
  • Video

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.

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

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, zum Beispiel 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.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}