Arduino - MP3-Player

In diesem Tutorial lernen wir, wie man einen MP3-Player mit Arduino, MP3-Player-Modul, microSD-Karte und Lautsprecher baut. Die MP3-Dateien (Musik oder aufgezeichnete Audiodateien) werden auf der microSD-Karte gespeichert. Dann kann der Arduino das MP3-Player-Modul steuern, um ein ausgewähltes Lied von der microSD-Karte abzuspielen, es in ein Audiosignal umzuwandeln und das Signal an den Lautsprecher zu senden. Im Detail werden wir lernen:

Dann können Sie den Code ändern, um ein Potentiometer oder einen Drehencoder hinzuzufügen, um die Lautstärke zu ändern.

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×Serieller MP3-Player-Modul
1×Micro-SD-Karte
1×3.5mm Aux-Lautsprecher
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das serielle MP3-Player-Modul und den Lautsprecher

Pinbelegung des seriellen MP3-Player-Moduls

Ein serielles MP3-Player-Modul hat drei Schnittstellen:

  • Die Schnittstelle zum Arduino umfasst 4 Pins:
    • RX-Pin: Datenpin; muss mit einem TX-Pin des Arduino verbunden werden (Hardware- oder Software-Serial)
    • TX-Pin: Datenpin; muss mit einem RX-Pin des Arduino verbunden werden (Hardware- oder Software-Serial)
    • VCC-Pin: Versorgungs-Pin; muss an VCC (5 V) angeschlossen werden
    • GND-Pin: Versorgungs-Pin; muss mit GND (0 V) verbunden werden
  • Die Schnittstelle zum Lautsprecher ist eine 3,5-mm-Aux-Ausgangsbuchse.
  • Die Schnittstelle zur Micro-SD-Karte ist ein Micro-SD-Kartensteckplatz auf der Rückseite des Moduls.
Pinbelegung des seriellen MP3-Player-Moduls
image source: diyables.io

Lautsprecher-Pinbelegung

Ein Lautsprecher hat normalerweise zwei Schnittstellen:

  • Audio-Signalschnittstelle: Es handelt sich um einen 3,5-mm-Aux-Stecker, der mit dem MP3-Player-Modul verbunden wird.
  • Stromversorgungs-Schnittstelle: Es kann USB, ein 5-V-Netzteil oder jede andere Stromversorgungs-Schnittstelle sein.

So funktioniert es

Was wir vorbereiten müssen:

  • Speichere im Voraus eine Liste von Liedern oder aufgezeichnetem Audio, die wir abspielen möchten, auf der microSD-Karte.
  • Stecke die microSD-Karte in das MP3-Player-Modul.
  • Verbinde das MP3-Player-Modul mit dem Arduino.
  • Verbinde den Lautsprecher mit dem MP3-Player-Modul.
  • Schließe den Lautsprecher an eine Stromquelle an.

Jede MP3-Datei, die auf einer Micro-SD-Karte gespeichert ist, hat einen Index. Der Index entspricht der Reihenfolge der gespeicherten Songs und beginnt bei 0.

Dann können wir den Arduino so programmieren, dass er einen Befehl an das MP3-Player-Modul sendet. Es unterstützt die folgenden Befehle:

  • Abspielen
  • Pause
  • Nächster Song
  • Vorheriger Song
  • Lautstärke ändern

Wenn das MP3-Player-Modul MP3-Dateien von der microSD-Karte liest, wandelt es die MP3-Dateien in ein Audiosignal um und gibt das Audiosignal über die 3,5-mm-Aux-Schnittstelle an den Lautsprecher aus.

Verdrahtungsdiagramm

Schaltplan des Arduino-MP3-Player-Moduls

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino-Code - Musik abspielen

Der untenstehende Code spielt den ersten Song, der auf der Micro-SD-Karte gespeichert ist.

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-mp3-player */ #include <SoftwareSerial.h> #define CMD_PLAY_NEXT 0x01 #define CMD_PLAY_PREV 0x02 #define CMD_PLAY_W_INDEX 0x03 #define CMD_SET_VOLUME 0x06 #define CMD_SEL_DEV 0x09 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_SINGLE_CYCLE 0x19 #define DEV_TF 0x02 #define SINGLE_CYCLE_ON 0x00 #define SINGLE_CYCLE_OFF 0x01 #define ARDUINO_RX 7 // Arduino Pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 6 // Arduino Pin connected to the RX of the Serial MP3 Player module SoftwareSerial mp3(ARDUINO_RX, ARDUINO_TX); void setup() { Serial.begin(9600); mp3.begin(9600); delay(500); // wait chip initialization is complete mp3_command(CMD_SEL_DEV, DEV_TF); // select the TF card delay(200); // wait for 200ms mp3_command(CMD_PLAY, 0x0000); // Play mp3 //mp3_command(CMD_PAUSE, 0x0000); // Pause mp3 //mp3_command(CMD_PLAY_NEXT, 0x0000); // Play next mp3 //mp3_command(CMD_PLAY_PREV, 0x0000); // Play previous mp3 //mp3_command(CMD_SET_VOLUME, 30); // Change volume to 30 } void loop() { } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = { 0 }; frame[0] = 0x7e; // starting byte frame[1] = 0xff; // version frame[2] = 0x06; // the number of bytes of the command without starting byte and ending byte frame[3] = command; // frame[4] = 0x00; // 0x00 = no feedback, 0x01 = feedback frame[5] = (int8_t)(dat >> 8); // data high byte frame[6] = (int8_t)(dat); // data low byte frame[7] = 0xef; // ending byte for (uint8_t i = 0; i < 8; i++) { mp3.write(frame[i]); } }

Schnelle Schritte

  • Folgen Sie den Anweisungen unter Wie es funktioniert
  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
  • Klicken Sie in der Arduino IDE auf die Upload-Schaltfläche, um den Code auf Arduino hochzuladen
  • Genießen Sie die Musik

Arduino-Code - Musik mit Steuerknöpfen abspielen

Der untenstehende Code ist eine Aktualisierung des vorherigen Codes. Er fügt vier Buttons hinzu, damit Sie mit dem MP3-Player interagieren können.

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-mp3-player */ #include <SoftwareSerial.h> #include <ezButton.h> #define CMD_PLAY_NEXT 0x01 #define CMD_PLAY_PREV 0x02 #define CMD_PLAY_W_INDEX 0x03 #define CMD_SET_VOLUME 0x06 #define CMD_SEL_DEV 0x09 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_SINGLE_CYCLE 0x19 #define DEV_TF 0x02 #define SINGLE_CYCLE_ON 0x00 #define SINGLE_CYCLE_OFF 0x01 #define ARDUINO_RX 7 // Arduino Pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 6 // Arduino Pin connected to the RX of the Serial MP3 Player module SoftwareSerial mp3(ARDUINO_RX, ARDUINO_TX); ezButton button_play(2); // create ezButton object that attach to pin 2 ezButton button_pause(3); // create ezButton object that attach to pin 3 ezButton button_next(4); // create ezButton object that attach to pin 4 ezButton button_prev(5); // create ezButton object that attach to pin 5 void setup() { Serial.begin(9600); mp3.begin(9600); delay(500); // wait chip initialization is complete mp3_command(CMD_SEL_DEV, DEV_TF); // select the TF card delay(200); // wait for 200ms button_play.setDebounceTime(50); // set debounce time to 50 milliseconds button_pause.setDebounceTime(50); // set debounce time to 50 milliseconds button_next.setDebounceTime(50); // set debounce time to 50 milliseconds button_prev.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button_play.loop(); // MUST call the loop() function first button_pause.loop(); // MUST call the loop() function first button_next.loop(); // MUST call the loop() function first button_prev.loop(); // MUST call the loop() function first if (button_play.isPressed()) { Serial.println("Play mp3"); mp3_command(CMD_PLAY, 0x0000); } if (button_pause.isPressed()) { Serial.println("Pause mp3"); mp3_command(CMD_PAUSE, 0x0000); } if (button_next.isPressed()) { Serial.println("Play next mp3"); mp3_command(CMD_PLAY_NEXT, 0x0000); } if (button_prev.isPressed()) { Serial.println("Play previous mp3"); mp3_command(CMD_PLAY_PREV, 0x0000); } } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = { 0 }; frame[0] = 0x7e; // starting byte frame[1] = 0xff; // version frame[2] = 0x06; // the number of bytes of the command without starting byte and ending byte frame[3] = command; // frame[4] = 0x00; // 0x00 = no feedback, 0x01 = feedback frame[5] = (int8_t)(dat >> 8); // data high byte frame[6] = (int8_t)(dat); // data low byte frame[7] = 0xef; // ending byte for (uint8_t i = 0; i < 8; i++) { mp3.write(frame[i]); } }

Der Schaltplan für den oben genannten Code:

Arduino MP3-Player-Lautsprecher-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Jetzt können Sie die Projekte anpassen, um weitere Funktionen hinzuzufügen, zum Beispiel:

  • Füge ein Potentiometer hinzu, um die Lautstärke zu steuern, siehe Arduino Potentiometer Tutorial
  • Füge eine IR-Fernbedienung hinzu, siehe Arduino IR-Fernbedienung Tutorial
  • Füge ein RFID-Lesegerät und eine Karte hinzu, um einen RFID-MP3-Player zu erstellen, siehe Arduino RFID Tutorial

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Funktionsreferenzen

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!