Arduino UNO R4 - MP3-speler

Deze tutorial legt uit hoe u een MP3-speler kunt maken met een Arduino UNO R4, een MP3-speler module, een Micro SD-kaart en een speaker. De MP3-speler laadt muziek of audio-opnamen van de Micro SD-kaart. De Arduino UNO R4 bestuurt de MP3-speler module om een nummer van de kaart te selecteren en af te spelen, dit om te zetten in een audiosignaal, en dit signaal naar de speaker te sturen. We behandelen deze stappen in detail.

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

Arduino UNO R4 mp3 speler

Over de Seriële MP3-speler Module en Speaker

Seriële MP3-speler Module Pinout

Een seriële MP3-speler module heeft drie interfaces:

  • De interface naar de Arduino UNO R4: heeft vier pinnen:
    • RX-pin: Dit is voor data en moet worden aangesloten op de TX-pin van de Arduino UNO R4, via Hardware of Software Serial.
    • TX-pin: Dit is ook voor data en moet worden aangesloten op de RX-pin van de Arduino UNO R4, via Hardware of Software Serial.
    • VCC-pin: Dit is voor voeding en moet worden aangesloten op VCC (5V).
    • GND-pin: Dit is een massa-pin en moet worden aangesloten op GND (0V).
  • De interface naar de speaker: een 3,5mm Aux uitgang vrouwelijke aansluiting.
  • De interface naar de Micro SD-kaart: De Micro SD-kaart socket aan de achterkant van de module.
Serial MP3 Player Module Pinout
image source: diyables.io

Speaker Pinout

Een speaker heeft over het algemeen twee aansluitpunten:

  • Audio-aansluiting: Deze gebruikt een 3,5mm Aux mannelijke connector om verbinding te maken met de MP3-speler.
  • Voedingsaansluiting: Deze kan een USB, een 5V voedingsadapter, of andere types voedingsaansluitingen gebruiken.

Hoe Het Werkt

Wat we moeten voorbereiden:

  • Sla een lijst met nummers of opnamen op op een micro SD-kaart.
  • Plaats de micro SD-kaart in de MP3-speler module.
  • Sluit de MP3-speler module aan op de Arduino UNO R4.
  • Sluit de MP3-speler module aan op een speaker.
  • Sluit de speaker aan op een voedingsbron.

Elk MP3-bestand op de Micro SD-kaart heeft een nummer beginnend bij 0 dat de volgorde van de nummers aangeeft.

We kunnen vervolgens de Arduino UNO R4 instellen om commando's naar de MP3-speler module te sturen. Deze kan de volgende commando's verwerken:

  • Afspelen starten
  • Stoppen
  • Volgende afspelen
  • Vorige afspelen
  • Volume aanpassen

De MP3-speler module speelt het MP3-bestand opgeslagen op de micro SD-kaart af, zet dit om in een audiosignaal, en stuurt dit signaal naar de speaker via de 3,5mm Aux interface.

Bedradingsschema

Arduino UNO R4 MP3 speler module Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Arduino UNO R4 Code - Muziek Afspelen

De onderstaande code start het afspelen van het eerste nummer opgeslagen op de Micro SD-kaart.

/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-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 // The Arduino UNO R4 pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 6 // The Arduino UNO R4 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 deze instructies stap voor stap:

  • Als dit uw eerste keer is met de Arduino Uno R4 WiFi/Minima, raadpleeg de tutorial over het instellen van de omgeving voor Arduino Uno R4 WiFi/Minima in de Arduino IDE.
  • Bedrading van de componenten volgens het bijgeleverde schema.
  • Sluit het Arduino Uno R4 board aan op uw computer met een USB-kabel.
  • Start de Arduino IDE op uw computer.
  • Selecteer het juiste Arduino Uno R4 board (bijv. Arduino Uno R4 WiFi) en COM-poort.
  • Volg de stappen in het gedeelte Hoe Het Werkt
  • Kopieer de bijgeleverde code en gebruik deze in Arduino IDE
  • Druk op de Upload knop in Arduino IDE om de code naar Arduino UNO R4 te sturen
  • Geniet van de muziek

Arduino UNO R4 Code - Muziek Afspelen met Bedieningsknoppen

De onderstaande code is een verbeterde versie van de eerdere code. Deze bevat vier knoppen waarmee u de MP3-speler kunt bedienen.

/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-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 // The Arduino UNO R4 pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 6 // The Arduino UNO R4 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]); } }

De bedradingsaansluitingen voor de genoemde code:

Arduino UNO R4 MP3 speler speaker Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Zie De beste manier om Arduino Uno R4 en andere componenten van stroom te voorzien.

Nu kunt u de projecten aanpassen om meer 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.

Functie Referenties

Reacties

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