Arduino - MP3-speler

In deze handleiding leert u hoe u een MP3-speler maakt met Arduino, een MP3-spelermodule, micro SD-kaart en een speaker. De MP3-bestanden (muziek of opgenomen audio) worden opgeslagen op de micro SD-kaart. Vervolgens kan Arduino de MP3-spelermodule aansturen om een geselecteerd nummer van de SD-kaart te lezen, dit te converteren naar een audiosignaal en het signaal naar de speaker te sturen. In detail leert u:

Daarna kunt u de code aanpassen om een potentiometer of rotary encoder toe te voegen om het volume te regelen.

Hardware Vereist

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×Seriële MP3-Spelermodule
1×Micro SD-kaart
1×3.5 mm Aux speaker
1×Jumper wires
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over Serial MP3 Player Module en Speaker

Serial MP3 Player Module Pinout

Een serial MP3-spelermodule heeft drie interfaces:

  • De interface naar Arduino bestaat uit 4 pinnen:
    • RX pin: datap​​in, moet verbonden worden met een TX pin van Arduino (Hardware of Software Serial)
    • TX pin: datap​​in, moet verbonden worden met een RX pin van Arduino (Hardware of Software Serial)
    • VCC pin: voedingspin, moet verbonden worden met VCC (5V)
    • GND pin: massa, moet verbonden worden met GND (0V)
  • De interface naar de speaker is een vrouwelijke 3.5 mm Aux output jack.
  • De interface naar de micro SD-kaart is een Micro SD-kaartslot aan de achterkant van de module.
Serial MP3 Player Module Pinout
image source: diyables.io

Speaker Pinout

Een speaker heeft meestal twee interfaces:

  • Audio signaal interface: een mannelijke 3.5 mm Aux-connector die verbonden wordt met de MP3-spelermodule
  • Voedingsinterface: dit kan USB, 5V voedingadapter of een andere voedingsbron zijn

Hoe Het Werkt

Wat u moet voorbereiden:

  • Opslaan van een lijst met nummers of opgenomen audio die u wilt afspelen op de micro SD-kaart.
  • Steek de micro SD-kaart in de MP3-spelermodule.
  • Verbind de MP3-spelermodule met Arduino.
  • Verbind de speaker met de MP3-spelermodule.
  • Sluit de speaker aan op een voedingsbron.

Elk MP3-bestand op de micro SD-kaart krijgt een index. De index is de volgorde waarin de nummers zijn opgeslagen, beginnend bij 0.

Daarna kunt u Arduino programmeren om commando’s te sturen naar de MP3-spelermodule. Deze ondersteunt de volgende commando’s:

  • Afspelen (Play)
  • Pauzeren (Pause)
  • Volgende nummer (Play Next)
  • Vorig nummer (Play Previous)
  • Volume veranderen (Change volume)

Wanneer de MP3-spelermodule wordt aangestuurd, leest deze het MP3-bestand van de micro SD-kaart, zet het MP3-bestand om in een audiosignaal en stuurt dit signaal via de 3.5 mm Aux-interface naar de speaker.

Aansluitschema

Arduino MP3 player module Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Arduino Code - Muziek Afspelen

De onderstaande code speelt het eerste nummer af dat op de micro SD-kaart staat.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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]); } }

Snelle Stappen

  • Volg de instructies in de sectie Hoe Het Werkt
  • Kopieer de bovenstaande code en open deze met de Arduino IDE
  • Klik op de Upload knop in de Arduino IDE om de code naar Arduino te uploaden
  • Geniet van de muziek

Arduino Code - Muziek Afspelen met bedieningsknoppen

De onderstaande code is een upgrade van de eerdere code. Hiermee worden vier knoppen toegevoegd waarmee u de MP3-speler kunt bedienen.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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]); } }

Het aansluitdiagram voor bovenstaande code:

Arduino MP3 player speaker Wiring Diagram

This image is created using Fritzing. Click to enlarge image

U kunt het project nu verder aanpassen om extra functies toe te voegen, bijvoorbeeld:

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap.

Functiereferenties

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!