ESP32 - MP3 Player

In deze gids ontdekken we hoe u een MP3-speler maakt met een ESP32, een MP3 player module, een Micro SD-kaart en een speaker. De MP3-bestanden, die muziek of opgenomen audio kunnen zijn, worden opgeslagen op de micro SD-kaart. De ESP32 wordt geprogrammeerd om commando’s te sturen naar de MP3 player module, die bepaalt welk nummer van de SD-kaart wordt afgespeeld, het omzet in geluid en dat geluid vervolgens naar de speaker stuurt. We behandelen de volgende onderdelen:

Daarna kunt u de code uitbreiden door bijvoorbeeld een potentiometer of rotary encoder toe te voegen om het volume aan te passen.

Over Serial MP3 Player Module en Speaker

Serial MP3 Player Module Pinout

Een serial MP3 player module heeft drie verbindingen:

  • De interface naar de ESP32 bestaat uit 4 pinnen:
    • RX pin: datapin, moet verbonden worden met de TX pin van de ESP32
    • TX pin: datapin, moet verbonden worden met de RX pin van de ESP32
    • VCC pin: voedingspin, moet aangesloten worden op VCC (3,3V of 5V)
    • GND pin: aardingspin, moet aangesloten worden op GND (0V)
  • De interface naar de speaker is een vrouwelijke 3,5 mm Aux uitgang
  • De interface naar de Micro SD-kaart is een Micro SD-kaartslot aan de achterkant van de module
Serial MP3 Player Module Pinout

Speaker Pinout

Een speaker heeft meestal twee aansluitingen:

  • Audio signaalaansluiting: een mannelijke 3,5 mm Aux connector die aan de MP3 player module wordt gekoppeld
  • Voedingsaansluiting: dit kan USB, een 5V voedingsadapter of een andere voeding zijn

Hoe Het Werkt

Om te beginnen, zorg dat u het volgende hebt:

  • Verzamel een selectie nummers of opgenomen audio die u wilt afspelen en sla ze op een micro SD-kaart op.
  • Plaats de micro SD-kaart in de MP3 player module.
  • Verbind de MP3 player module met de ESP32 en sluit de speaker aan op de MP3 player module. Zorg er ook voor dat de speaker van stroom wordt voorzien.

Elk MP3-bestand op de micro SD-kaart krijgt een ID, beginnend bij 0. Vervolgens kunt u de ESP32 opdrachten geven om verschillende acties uit te voeren met de MP3 player module, zoals:

  • Play (afspelen): Start het geselecteerde nummer af te spelen.
  • Pause (pauzeren): Pauzeer het nummer.
  • Play Next (volgend nummer): Ga naar het volgende nummer.
  • Play Previous (vorig nummer): Ga terug naar het vorige nummer.
  • Change Volume (volume aanpassen): Pas het geluidsniveau aan.

Wanneer de MP3 player module een commando ontvangt, leest hij het MP3-bestand van de micro SD-kaart, zet dit om in een audiosignaal en stuurt dit signaal via de 3,5 mm Aux-verbinding naar de speaker.

Aansluitschema

  • Hoe sluit u de ESP32 en MP3 player aan met een breadboard
ESP32 MP3 player module Aansluitschema

This image is created using Fritzing. Click to enlarge image

Als u niet weet hoe u ESP32 en andere componenten van stroom moet voorzien, vindt u instructies in de volgende tutorial: Hoe ESP32 van stroom te voorzien.

Hoe ESP32 en MP3 player aan te sluiten

ESP32 Code - Muziek Afspelen

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

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-mp3-player */ #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 void setup() { Serial.begin(9600); Serial2.begin(9600, SERIAL_8N1, 16, 17); 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++) { Serial2.write(frame[i]); } }

Snelle Stappen

ESP32 Code - Muziek Afspelen met bedieningsknoppen

De onderstaande code is een uitbreiding van de vorige code. Deze voegt vier knoppen toe zodat u kunt interacteren met de MP3 player.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-mp3-player */ #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 ezButton button_play(32); // create ezButton object that attach to ESP32's pin GPIO32 ezButton button_pause(33); // create ezButton object that attach to ESP32's pin GPIO33 ezButton button_next(25); // create ezButton object that attach to ESP32's pin GPIO25 ezButton button_prev(26); // create ezButton object that attach to ESP32's pin GPIO26 void setup() { Serial.begin(9600); Serial2.begin(9600, SERIAL_8N1, 16, 17); 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++) { Serial2.write(frame[i]); } }

Het aansluitdiagram voor bovenstaande code:

ESP32 MP3 player speaker Aansluitschema

This image is created using Fritzing. Click to enlarge image

Nu kunt u het project verder uitbreiden met 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.

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!