Arduino-Boombox is a fully menu-driven MP3 player built with an Arduino Uno and a DFPlayer Mini.
It uses an OLED screen, buttons, and a volume knob to create a compact standalone boombox that can browse folders, select songs, and play music from a microSD card.
- Plays MP3 files from a microSD card using DFPlayer Mini
- Folder and song browser on a 0.96 inch I2C OLED display
- Animated now playing screen with waveform
- 4 physical navigation buttons
- Analog potentiometer for real-time volume control
- Automatic next song when a track finishes
- Reset menu using button combo
- USB powered through Arduino
- Arduino Uno
- DFPlayer Mini
- 0.96 inch I2C OLED display (SSD1306, address 0x3C)
- 4 push buttons
- Potentiometer
- 8Ω 3W speaker
- microSD card
- Jumper wires and breadboard or soldered board
| Function | Arduino Pin |
|---|---|
| Back | D2 |
| Up | D3 |
| Down | D4 |
| Center | D5 |
| Function | Arduino Pin |
|---|---|
| Volume control | A0 |
| DFPlayer Pin | Arduino Pin |
|---|---|
| TX | D10 |
| RX | D11 |
| VCC | 5V |
| GND | GND |
| SPK+ | Speaker + |
| SPK- | Speaker - |
| OLED Pin | Arduino |
|---|---|
| VCC | 5V/3.3V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
- Arduino communicates with DFPlayer Mini over software serial (pins D10/D11)
- OLED shows folder menu, song list, and now playing screen with waveform animation
- Buttons navigate menus, select songs, and pause/resume playback
- Potentiometer adjusts volume in real-time
- Songs automatically advance when finished
- Reset menu can be accessed with Up + Down buttons
-
Songs are grouped into folders:
- POP
- Vocal Synth Songs
- J-POP
- K-POP
- Phonk
- Memes
-
Each folder maps to a range of tracks on the microSD card
-
Track number 121 is automatically skipped due to corruption
| Button | Action |
|---|---|
| Up | Move up in menu / previous song |
| Down | Move down in menu / next song |
| Center | Enter folder / play song / pause/resume |
| Back | Go back to previous menu |
Volume is controlled with the potentiometer.
- Hold Up + Down buttons for 1.5 seconds to open reset screen
- Use Up/Down to select Yes or No, press Center to confirm
- Yes triggers Arduino reset via watchdog timer
This project uses the following Arduino libraries:
- Adafruit GFX
- Adafruit SSD1306
- DFRobot DFPlayer Mini
- SoftwareSerial
Install these using the Arduino Library Manager before uploading code.
- Powered through Arduino USB port
- Can use computer USB or USB power bank
- Ensure the power source provides enough current for the Arduino and speaker
- Format a microSD card to FAT32
- Copy MP3 files to the root of the card
- Make sure the file order matches the song list in the code
- DFPlayer reads files by upload order, not numerical order
- Use the provided Python script (Linux) to sort files in lexicographical order (001, 002, … 100, 101, etc.)
- Insert the microSD card into DFPlayer Mini
- Wire components according to the pin table above
- Upload the Arduino code
- Power the Arduino via USB
- Uses PROGMEM to store folder and song names in flash memory to save RAM
- Fully functional and tested – all features are implemented
- Reset page is available via button combo for safety and quick restarts