Arduino Nano – MP3-Player

Dieses Tutorial zeigt, wie man einen MP3-Player mit Arduino Nano, MP3-Player-Modul, Micro-SD-Karte und Lautsprecher baut. Die MP3-Dateien (Musik oder aufgezeichnete Audiodaten) werden auf der Micro-SD-Karte gespeichert. Anschließend kann der Arduino Nano das MP3-Player-Modul steuern, um ein ausgewähltes Lied von der Micro-SD-Karte auszulesen, 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 zur Lautstärkeregelung hinzuzufügen.

Erforderliche Hardware

1×Official Arduino Nano
1×Alternativ: DIYables ATMEGA328P Nano Development Board
1×USB-A-zu-Mini-B-Kabel
1×Serieller MP3-Player-Modul
1×Micro-SD-Karte
1×3.5mm Aux-Lautsprecher
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano

Oder Sie können die folgenden Kits kaufen:

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 Lautsprecher

Pinbelegung des seriellen MP3-Player-Moduls

Ein serielles MP3-Player-Modul hat drei Schnittstellen:

  • Die Schnittstelle zum Arduino Nano umfasst 4 Pins:
    • RX-Pin: Datenpin, muss mit einem TX-Pin des Arduino Nano verbunden werden (Hardware- oder Software-Serial)
    • TX-Pin: Datenpin, muss mit einem RX-Pin des Arduino Nano verbunden werden (Hardware- oder Software-Serial)
    • VCC-Pin: Strompin, muss mit VCC (5V) verbunden werden
    • GND-Pin: Strompin, muss mit GND (0V) verbunden werden
  • Die Schnittstelle zum Lautsprecher ist eine 3,5-mm-Aux-Ausgangsbuchse.
  • Die Schnittstelle zur Micro-SD-Karte ist ein Micro-SD-Karten-Sockel 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 (männlich), der mit dem MP3-Player-Modul verbunden wird
  • Stromversorgungsanschluss: USB, 5-V-Netzadapter oder eine andere Stromversorgungs-Schnittstelle

Wie es funktioniert

Was wir vorbereiten müssen:

  • Speichern Sie im Voraus eine Liste von Liedern oder aufgenommenem Audio, das wir auf der microSD-Karte abspielen möchten.
  • Stecken Sie die microSD-Karte in das MP3-Player-Modul.
  • Verbinden Sie das MP3-Player-Modul mit dem Arduino Nano.
  • Schließen Sie den Lautsprecher an das MP3-Player-Modul an.
  • Schließen Sie 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 Nano programmieren, um Befehle an das MP3-Player-Modul zu senden. Es unterstützt die folgenden Befehle:

  • Abspielen
  • Pause
  • Nächsten Song abspielen
  • Vorherigen Song abspielen
  • Lautstärke ändern

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

Verdrahtungsdiagramm

Arduino Nano MP3-Player-Modul Verdrahtungsdiagramm

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

Arduino Nano Code - Musik abspielen

Der unten stehende Code spielt das erste Lied, das auf der Micro-SD-Karte gespeichert ist.

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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-nano/arduino-nano-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 8 // Arduino Nano Pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 7 // Arduino Nano 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

  • Folge den Anweisungen auf der Wie es funktioniert
  • Kopiere den obigen Code und öffne ihn mit der Arduino IDE
  • Klicke in der Arduino IDE auf die Hochladen-Schaltfläche, um den Code auf den Arduino Nano hochzuladen
  • Viel Spaß mit der Musik

Arduino Nano Code - Musik abspielen mit Bedienelementen

Der unten stehende Code ist eine Weiterentwicklung des vorherigen Codes. Er fügt foyr-Schaltflächen hinzu, mit denen Sie mit dem MP3-Player interagieren können.

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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-nano/arduino-nano-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 8 // Arduino Nano Pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 7 // Arduino Nano Pin connected to the RX of the Serial MP3 Player module SoftwareSerial mp3(ARDUINO_RX, ARDUINO_TX); ezButton button_play(2); // create ezButton object for pin 2 ezButton button_pause(3); // create ezButton object for pin 3 ezButton button_next(4); // create ezButton object for pin 4 ezButton button_prev(5); // create ezButton object for 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]); } }

Das Schaltbild für den obigen Code:

Verdrahtungsdiagramm für Arduino Nano MP3-Player-Lautsprecher

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

Siehe Der beste Weg, den Arduino Nano und andere Komponenten mit Strom zu versorgen.

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

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

Verwandte Tutorials

※ 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!